aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2023-10-26 18:26:06 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2023-10-26 20:41:05 -0400
commit3a0bb67b63884e39075b2655dab7169ee93c1e54 (patch)
tree5455a61a4a821c141fdec40de6a0ae95a85049d0
parenttexpdf papersize & papermargins (diff)
texpdf, cjk issues not resolved
- font rendition bugs where tested
-rw-r--r--flake.nix4
-rw-r--r--lib/sisu/texpdf.rb60
-rw-r--r--lib/sisu/texpdf_format.rb75
-rw-r--r--org/config_nix.org4
-rw-r--r--org/texpdf.org135
5 files changed, 122 insertions, 156 deletions
diff --git a/flake.nix b/flake.nix
index 2ce78559..45cb2305 100644
--- a/flake.nix
+++ b/flake.nix
@@ -154,13 +154,15 @@
source-serif-pro
source-code-pro
texlive.combined.scheme-full
+ noto-fonts
+ noto-fonts-cjk-sans
jq
#git
];
inherit shellHook;
};
dsh-sqlite = mkShell {
- name = "sisu dev shell for latex & pdf output";
+ name = "sisu dev shell for sqlite3 output";
inherit shell;
inherit devEnv;
packages = [
diff --git a/lib/sisu/texpdf.rb b/lib/sisu/texpdf.rb
index be139ff4..9850aeef 100644
--- a/lib/sisu/texpdf.rb
+++ b/lib/sisu/texpdf.rb
@@ -739,65 +739,6 @@ module SiSU_TeX
end
dob
end
- def tex_box_listings
- <<-WOK
-\\definecolor{listinggray}{gray}{0.9}
-\\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
-\\lstset{
- backgroundcolor=\\color{lbcolor},
- tabsize=4,
- rulecolor=,
- language=,
- basicstyle=\\scriptsize,
- upquote=true,
- aboveskip={1.5\\baselineskip},
- columns=fixed,
- showstringspaces=false,
- extendedchars=true,
- breaklines=true,
- prebreak = \\raisebox{0ex}[0ex][0ex]{\\ensuremath{\\hookleftarrow}},
- frame=single,
- showtabs=false,
- showspaces=false,
- showstringspaces=false,
- identifierstyle=\\ttfamily,
- keywordstyle=\\color[rgb]{0,0,1},
- commentstyle=\\color[rgb]{0.133,0.545,0.133},
- stringstyle=\\color[rgb]{0.627,0.126,0.941},
-}
- WOK
- end
- def tex_box_boites
- <<-WOK
-\\def\\codeblockboitebox{%
- \\def\\bkvz@before@breakbox{\\ifhmode\\par\\fi\\vskip\\breakboxskip\\relax}%
- \\def\\bkvz@set@linewidth{\\advance\\linewidth -2\\fboxrule
- \\advance\\linewidth -2\\fboxsep} %
- \\def\\bk@line{\\hbox to \\linewidth{%
- \\ifbkcount\\smash{\\llap{\\the\\bk@lcnt\\ }}\\fi
- \\psframebox*[framesep=0pt,linewidth=0pt]{%
- \\vrule\\@width\\fboxrule \\hskip\\fboxsep
- \\box\\bk@bxa
- \\hskip\\fboxsep \\vrule\\@width\\fboxrule
- }%
- }}%
- %\\def\\bkvz@top{\\hrule\\@height\\fboxrule}
- \\def\\bkvz@top{\\hrule height .6pt}%
- \\def\\bkvz@bottom{\\hrule\\@height\\fboxrule}%
- \\breakbox}
-\\def\\endcodeblockboitebox{\\endbreakbox}
- WOK
- end
- def tex_codeblock
- codeblock_box=if @codeblock_box=='listings'
- tex_box_listings
- elsif @codeblock_box=='boites'
- tex_box_boites
- else
- tex_box_boites
- end
- codeblock_box
- end
def markup(data)
@tex_file=[]
home=the_text.txt_home.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') #no line splitting in heading neither html nor latex
@@ -816,7 +757,6 @@ module SiSU_TeX
end
@tex_file << <<-WOK
#{@tex_ml.header}#{@tex_ml.footer}
-#{tex_codeblock}
% (tilde hash amp affected by http)
% \\sloppy
\\begin{document}
diff --git a/lib/sisu/texpdf_format.rb b/lib/sisu/texpdf_format.rb
index 80fe301e..9b250944 100644
--- a/lib/sisu/texpdf_format.rb
+++ b/lib/sisu/texpdf_format.rb
@@ -720,28 +720,65 @@ module SiSU_TeX_Pdf
case @tex2pdf
when /xe/
if @md.opt.lng =~/(?:zh|ja|ko)/
- <<-WOK
+ if @md.opt.lng =~/zh/
+ <<-WOK
+\\usepackage{xeCJK}
+\\setCJKmainfont{Noto}
+\\setCJKmainfont{Noto Sans CJK TC}
+\\setCJKsansfont{Noto Sans CJK TC}
+\\setCJKmonofont{Noto Sans Mono CJK TC}
\\setmainlanguage{#{tex_head_lang[:mainlang]}}
\\setotherlanguage{english}
-\\setmainfont{#{texpdf_fontface_cjk}}
-\\setotherfont{#{texpdf_fontface}}
-\\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
- WOK
+% \\setmainfont{#{texpdf_fontface_cjk}}
+% \\setotherfont{#{texpdf_fontface}}
+\\setotherfont{Noto Sans}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+ WOK
+ elsif @md.opt.lng =~/ja/
+ <<-WOK
+\\usepackage{xeCJK}
+\\setCJKmainfont{Noto}
+\\setCJKmainfont{Noto Sans CJK JP}
+\\setCJKsansfont{Noto Sans CJK JP}
+\\setCJKmonofont{Noto Sans Mono CJK JP}
+\\setmainlanguage{#{tex_head_lang[:mainlang]}}
+\\setotherlanguage{english}
+% \\setmainfont{#{texpdf_fontface_cjk}}
+% \\setotherfont{#{texpdf_fontface}}
+\\setotherfont{Noto Sans}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+ WOK
+ elsif @md.opt.lng =~/ko/
+ <<-WOK
+\\usepackage{xeCJK}
+\\setCJKmainfont{Noto}
+\\setCJKmainfont{Noto Sans CJK KR}
+\\setCJKsansfont{Noto Sans CJK KR}
+\\setCJKmonofont{Noto Sans Mono CJK KR}
+\\setmainlanguage{#{tex_head_lang[:mainlang]}}
+\\setotherlanguage{english}
+% \\setmainfont{#{texpdf_fontface_cjk}}
+% \\setotherfont{#{texpdf_fontface}}
+\\setotherfont{Noto Sans}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+ WOK
+ else puts "lang error"
+ end
elsif (tex_head_lang[:mainlang] == "english" \
&& (tex_head_lang[:otherlang] == "english" \
|| tex_head_lang[:otherlang] == "" \
|| tex_head_lang[:otherlang].length == 0))
<<-WOK
-\\setmainlanguage{#{tex_head_lang[:mainlang]}}
-\\setmainfont{#{texpdf_fontface}}
-\\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+% \\setmainlanguage{#{tex_head_lang[:mainlang]}}
+% \\setmainfont{#{texpdf_fontface}}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
WOK
else
<<-WOK
-\\setmainlanguage{#{tex_head_lang[:mainlang]}}
-\\setotherlanguage{english}
-\\setmainfont{#{texpdf_fontface}}
-\\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+% \\setmainlanguage{#{tex_head_lang[:mainlang]}}
+% \\setotherlanguage{english}
+% \\setmainfont{#{texpdf_fontface}}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
WOK
end
when /pdf/
@@ -779,7 +816,9 @@ module SiSU_TeX_Pdf
%\\usepackage{inconsolata}
\\usepackage[T1]{fontenc}
\\usepackage{newunicodechar}
-% \\usepackage[utf8]{inputenc}
+\\usepackage[utf8]{inputenc}
+\\usepackage{xeCJK}
+\\usepackage{noto}
\\usepackage{alltt}
\\usepackage[
unicode=true,
@@ -1039,6 +1078,8 @@ module SiSU_TeX_Pdf
<<-WOK
#{tex_head_info}
\\documentclass[11pt,a4paper,titlepage,makeidx]{scrartcl}
+\\usepackage{fontspec}
+\\usepackage{lmodern}
\\usepackage{geometry}
\\geometry{
#{d[:papertype]},
@@ -1241,9 +1282,9 @@ module SiSU_TeX_Pdf
def tex_head_codeblock(codeblock_box_type)
codeblock_box=if codeblock_box_type=='listings'
<<-WOK
-\\usepackage{listings}
-\\usepackage{color}
-\\usepackage{textcomp}
+% \\usepackage{listings}
+% \\usepackage{color}
+% \\usepackage{textcomp}
WOK
elsif codeblock_box_type=='boites'
"\\usepackage{boites}"
@@ -1260,7 +1301,7 @@ module SiSU_TeX_Pdf
#{tex_head_encode}
#{tex_head_pdftex}
#{tex_head_codeblock(codeblock_box_type)}
-\\selectlanguage{#{tex_head_lang[:mainlang]}}
+% \\selectlanguage{#{tex_head_lang[:mainlang]}}
WOK
end
def a4generic
diff --git a/org/config_nix.org b/org/config_nix.org
index 9353975b..c9e54794 100644
--- a/org/config_nix.org
+++ b/org/config_nix.org
@@ -281,13 +281,15 @@ export RUBYLIB+=`pwd`/lib
source-serif-pro
source-code-pro
texlive.combined.scheme-full
+ noto-fonts
+ noto-fonts-cjk-sans
jq
#git
];
inherit shellHook;
};
dsh-sqlite = mkShell {
- name = "sisu dev shell for latex & pdf output";
+ name = "sisu dev shell for sqlite3 output";
inherit shell;
inherit devEnv;
packages = [
diff --git a/org/texpdf.org b/org/texpdf.org
index cf8067ba..ee91e112 100644
--- a/org/texpdf.org
+++ b/org/texpdf.org
@@ -711,65 +711,6 @@ module SiSU_TeX
end
dob
end
- def tex_box_listings
- <<-WOK
-\\definecolor{listinggray}{gray}{0.9}
-\\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
-\\lstset{
- backgroundcolor=\\color{lbcolor},
- tabsize=4,
- rulecolor=,
- language=,
- basicstyle=\\scriptsize,
- upquote=true,
- aboveskip={1.5\\baselineskip},
- columns=fixed,
- showstringspaces=false,
- extendedchars=true,
- breaklines=true,
- prebreak = \\raisebox{0ex}[0ex][0ex]{\\ensuremath{\\hookleftarrow}},
- frame=single,
- showtabs=false,
- showspaces=false,
- showstringspaces=false,
- identifierstyle=\\ttfamily,
- keywordstyle=\\color[rgb]{0,0,1},
- commentstyle=\\color[rgb]{0.133,0.545,0.133},
- stringstyle=\\color[rgb]{0.627,0.126,0.941},
-}
- WOK
- end
- def tex_box_boites
- <<-WOK
-\\def\\codeblockboitebox{%
- \\def\\bkvz@before@breakbox{\\ifhmode\\par\\fi\\vskip\\breakboxskip\\relax}%
- \\def\\bkvz@set@linewidth{\\advance\\linewidth -2\\fboxrule
- \\advance\\linewidth -2\\fboxsep} %
- \\def\\bk@line{\\hbox to \\linewidth{%
- \\ifbkcount\\smash{\\llap{\\the\\bk@lcnt\\ }}\\fi
- \\psframebox*[framesep=0pt,linewidth=0pt]{%
- \\vrule\\@width\\fboxrule \\hskip\\fboxsep
- \\box\\bk@bxa
- \\hskip\\fboxsep \\vrule\\@width\\fboxrule
- }%
- }}%
- %\\def\\bkvz@top{\\hrule\\@height\\fboxrule}
- \\def\\bkvz@top{\\hrule height .6pt}%
- \\def\\bkvz@bottom{\\hrule\\@height\\fboxrule}%
- \\breakbox}
-\\def\\endcodeblockboitebox{\\endbreakbox}
- WOK
- end
- def tex_codeblock
- codeblock_box=if @codeblock_box=='listings'
- tex_box_listings
- elsif @codeblock_box=='boites'
- tex_box_boites
- else
- tex_box_boites
- end
- codeblock_box
- end
def markup(data)
@tex_file=[]
home=the_text.txt_home.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') #no line splitting in heading neither html nor latex
@@ -788,7 +729,6 @@ module SiSU_TeX
end
@tex_file << <<-WOK
#{@tex_ml.header}#{@tex_ml.footer}
-#{tex_codeblock}
% (tilde hash amp affected by http)
% \\sloppy
\\begin{document}
@@ -1977,28 +1917,65 @@ module SiSU_TeX_Pdf
case @tex2pdf
when /xe/
if @md.opt.lng =~/(?:zh|ja|ko)/
- <<-WOK
+ if @md.opt.lng =~/zh/
+ <<-WOK
+\\usepackage{xeCJK}
+\\setCJKmainfont{Noto}
+\\setCJKmainfont{Noto Sans CJK TC}
+\\setCJKsansfont{Noto Sans CJK TC}
+\\setCJKmonofont{Noto Sans Mono CJK TC}
\\setmainlanguage{#{tex_head_lang[:mainlang]}}
\\setotherlanguage{english}
-\\setmainfont{#{texpdf_fontface_cjk}}
-\\setotherfont{#{texpdf_fontface}}
-\\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
- WOK
+% \\setmainfont{#{texpdf_fontface_cjk}}
+% \\setotherfont{#{texpdf_fontface}}
+\\setotherfont{Noto Sans}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+ WOK
+ elsif @md.opt.lng =~/ja/
+ <<-WOK
+\\usepackage{xeCJK}
+\\setCJKmainfont{Noto}
+\\setCJKmainfont{Noto Sans CJK JP}
+\\setCJKsansfont{Noto Sans CJK JP}
+\\setCJKmonofont{Noto Sans Mono CJK JP}
+\\setmainlanguage{#{tex_head_lang[:mainlang]}}
+\\setotherlanguage{english}
+% \\setmainfont{#{texpdf_fontface_cjk}}
+% \\setotherfont{#{texpdf_fontface}}
+\\setotherfont{Noto Sans}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+ WOK
+ elsif @md.opt.lng =~/ko/
+ <<-WOK
+\\usepackage{xeCJK}
+\\setCJKmainfont{Noto}
+\\setCJKmainfont{Noto Sans CJK KR}
+\\setCJKsansfont{Noto Sans CJK KR}
+\\setCJKmonofont{Noto Sans Mono CJK KR}
+\\setmainlanguage{#{tex_head_lang[:mainlang]}}
+\\setotherlanguage{english}
+% \\setmainfont{#{texpdf_fontface_cjk}}
+% \\setotherfont{#{texpdf_fontface}}
+\\setotherfont{Noto Sans}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+ WOK
+ else puts "lang error"
+ end
elsif (tex_head_lang[:mainlang] == "english" \
&& (tex_head_lang[:otherlang] == "english" \
|| tex_head_lang[:otherlang] == "" \
|| tex_head_lang[:otherlang].length == 0))
<<-WOK
-\\setmainlanguage{#{tex_head_lang[:mainlang]}}
-\\setmainfont{#{texpdf_fontface}}
-\\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+% \\setmainlanguage{#{tex_head_lang[:mainlang]}}
+% \\setmainfont{#{texpdf_fontface}}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
WOK
else
<<-WOK
-\\setmainlanguage{#{tex_head_lang[:mainlang]}}
-\\setotherlanguage{english}
-\\setmainfont{#{texpdf_fontface}}
-\\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
+% \\setmainlanguage{#{tex_head_lang[:mainlang]}}
+% \\setotherlanguage{english}
+% \\setmainfont{#{texpdf_fontface}}
+% \\setmonofont[Scale=0.85]{#{texpdf_fontface_mono}}
WOK
end
when /pdf/
@@ -2036,7 +2013,9 @@ module SiSU_TeX_Pdf
%\\usepackage{inconsolata}
\\usepackage[T1]{fontenc}
\\usepackage{newunicodechar}
-% \\usepackage[utf8]{inputenc}
+\\usepackage[utf8]{inputenc}
+\\usepackage{xeCJK}
+\\usepackage{noto}
\\usepackage{alltt}
\\usepackage[
unicode=true,
@@ -2296,6 +2275,8 @@ module SiSU_TeX_Pdf
<<-WOK
#{tex_head_info}
\\documentclass[11pt,a4paper,titlepage,makeidx]{scrartcl}
+\\usepackage{fontspec}
+\\usepackage{lmodern}
\\usepackage{geometry}
\\geometry{
#{d[:papertype]},
@@ -2498,9 +2479,9 @@ module SiSU_TeX_Pdf
def tex_head_codeblock(codeblock_box_type)
codeblock_box=if codeblock_box_type=='listings'
<<-WOK
-\\usepackage{listings}
-\\usepackage{color}
-\\usepackage{textcomp}
+% \\usepackage{listings}
+% \\usepackage{color}
+% \\usepackage{textcomp}
WOK
elsif codeblock_box_type=='boites'
"\\usepackage{boites}"
@@ -2517,7 +2498,7 @@ module SiSU_TeX_Pdf
#{tex_head_encode}
#{tex_head_pdftex}
#{tex_head_codeblock(codeblock_box_type)}
-\\selectlanguage{#{tex_head_lang[:mainlang]}}
+% \\selectlanguage{#{tex_head_lang[:mainlang]}}
WOK
end
def a4generic