From 64de4756b12d97932779e29b7a3a2ca9d3e29722 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 4 Mar 2022 18:06:48 -0500 Subject: latex, use geometry package for page setting --- org/out_latex.org | 423 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 243 insertions(+), 180 deletions(-) (limited to 'org') diff --git a/org/out_latex.org b/org/out_latex.org index e6049fa..6fd0a20 100644 --- a/org/out_latex.org +++ b/org/out_latex.org @@ -33,7 +33,7 @@ template outputLaTeX() { static auto rgx = RgxO(); mixin spineLanguageCodes; auto lang = Lang(); - <> + <> <> <> <> @@ -55,14 +55,8 @@ template outputLaTeX() { <> <> <> - <> + <> <> - <> -<> -<> - <> -<> -<> <> <> <> @@ -70,10 +64,10 @@ template outputLaTeX() { <> <> <> -<> + <> <> <> -<> + <> <> <> <> @@ -198,37 +192,59 @@ import doc_reform.io_out; #+END_SRC ** shared -*** paper dimensions (struct) +*** paper dimensions (struct) geometry -#+NAME: output_latex_shared_paper_type +#+NAME: output_latex_shared_geometry_paper_dimensions #+BEGIN_SRC d auto paper() { + string mm(uint mmi) { + string _mm = format(q"┃%smm┃", mmi.to!string); + return _mm; + } struct PaperType { @safe auto a4() { struct A4 { auto portrait() { struct V { - const uint w = 160; - const uint h = 228; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "a4paper"; - uint img_px = 450; - bool is_portrait = true; + string papersize = "a4paper"; + string orient = "portrait"; + string fontsize = "11pt"; + const uint w = 170; + const uint h = 257; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 450; + bool is_portrait = true; } return V(); } auto landscape() { struct H { - const uint w = 238; - const uint h = 160; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "a4paper"; - uint img_px = 300; - bool is_portrait = false; + string papersize = "a4paper"; + string orient = "landscape"; + string fontsize = "11pt"; + const uint w = 238; + const uint h = 160; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 300; + bool is_portrait = false; } return H(); } @@ -239,27 +255,45 @@ auto paper() { struct A5 { auto portrait() { struct V { - const uint w = 112; - const uint h = 162; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "a5paper"; - uint img_px = 280; - bool is_portrait = true; + string papersize = "a5paper"; + string orient = "portrait"; + string fontsize = "11pt"; + const uint w = 112; + const uint h = 162; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 280; + bool is_portrait = true; } return V(); } auto landscape() { struct H { - const uint w = 152; - const uint h = 100; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "a5paper"; - uint img_px = 190; - bool is_portrait = false; + string papersize = "a5paper"; + string orient = "landscape"; + string fontsize = "11pt"; + const uint w = 152; + const uint h = 100; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 190; + bool is_portrait = false; } return H(); } @@ -270,27 +304,45 @@ auto paper() { struct B4 { auto portrait() { struct V { - const uint w = 140; - const uint h = 204; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "b4paper"; - uint img_px = 356; - bool is_portrait = true; + string papersize = "b4paper"; + string orient = "portrait"; + string fontsize = "11pt"; + const uint w = 140; + const uint h = 204; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 356; + bool is_portrait = true; } return V(); } auto landscape() { struct H { - const uint w = 200; - const uint h = 130; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "b4paper"; - uint img_px = 260; - bool is_portrait = false; + string papersize = "b4paper"; + string orient = "landscape"; + string fontsize = "11pt"; + const uint w = 200; + const uint h = 130; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 260; + bool is_portrait = false; } return H(); } @@ -301,27 +353,45 @@ auto paper() { struct Letter { auto portrait() { struct V { - const uint w = 166; - const uint h = 212; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "letterpaper"; - uint img_px = 468; - bool is_portrait = true; + string papersize = "letterpaper"; + string orient = "portrait"; + string fontsize = "11pt"; + const uint w = 166; + const uint h = 212; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 468; + bool is_portrait = true; } return V(); } auto landscape() { struct H { - const uint w = 226; - const uint h = 166; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "letterpaper"; - uint img_px = 290; - bool is_portrait = false; + string papersize = "letterpaper"; + string orient = "landscape"; + string fontsize = "11pt"; + const uint w = 226; + const uint h = 166; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 290; + bool is_portrait = false; } return H(); } @@ -332,27 +402,45 @@ auto paper() { struct Legal { auto portrait() { struct V { - const uint w = 168; - const uint h = 286; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "legalpaper"; - uint img_px = 474; - bool is_portrait = true; + string papersize = "legalpaper"; + string orient = "portrait"; + string fontsize = "11pt"; + const uint w = 168; + const uint h = 286; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 474; + bool is_portrait = true; } return V(); } auto landscape() { struct H { - const uint w = 296; - const uint h = 166; - string width = format(q"┃%dmm┃", w); - string height = format(q"┃%dmm┃", h); - string fontsize = "11pt"; - string name = "legalpaper"; - uint img_px = 420; - bool is_portrait = false; + string papersize = "legalpaper"; + string orient = "landscape"; + string fontsize = "11pt"; + const uint w = 296; + const uint h = 166; + const uint l = 30; + const uint r = 20; + const uint t = 30; + const uint b = 30; + string width = mm(w); + string height = mm(h); + string margin_left = mm(l); + string margin_right = mm(r); + string margin_top = mm(t); + string margin_bottom = mm(b); + uint img_px = 420; + bool is_portrait = false; } return H(); } @@ -791,7 +879,6 @@ _txt = _txt \markboth{%s}{%s} \br\linebreak Copyright {\begin{small}{\copyright\end{small}} %s \br\linebreak %s -\pagestyle{fancy} \clearpage┃"; _txt = format(_tex_para, (doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt, @@ -1152,34 +1239,34 @@ auto paper_type_latex = paperTypeLatex(); #+NAME: output_latex_head_footer #+BEGIN_SRC d - string _footer(M)(M doc_matters) { - string _ft = "\\lfoot[\\textrm{\\thepage}]"; - string _ft_1 = format(q"┃{\tiny \href{%s}{%s}}┃", "https://sisudoc.org", "SiSU",); - string _ft_2 = format(q"┃ +string _footer(M)(M doc_matters) { + string _ft = "\\lfoot[\\textrm{\\thepage}]"; + string _ft_1 = format(q"┃{\tiny \href{%s}{%s}}┃", "https://sisudoc.org", "SiSU",); + string _ft_2 = format(q"┃ \cfoot{\href{%s}{%s}}┃", "https://git.sisudoc.org", "git",); + if (doc_matters.conf_make_meta.make.footer.length > 0) { if (doc_matters.conf_make_meta.make.footer.length > 0) { - if (doc_matters.conf_make_meta.make.footer.length > 0) { - if (doc_matters.conf_make_meta.make.footer[0].matchAll(rgx.inline_link)) { - _ft ~= doc_matters.conf_make_meta.make.footer[0] - .replace(rgx.inline_link, "{\\tiny \\href{$2}{$1}}"); - } else { - _ft ~= _ft_1; - } + if (doc_matters.conf_make_meta.make.footer[0].matchAll(rgx.inline_link)) { + _ft ~= doc_matters.conf_make_meta.make.footer[0] + .replace(rgx.inline_link, "{\\tiny \\href{$2}{$1}}"); + } else { + _ft ~= _ft_1; } - if (doc_matters.conf_make_meta.make.footer.length > 1) { - if (doc_matters.conf_make_meta.make.footer[1].matchAll(rgx.inline_link)) { - _ft ~= doc_matters.conf_make_meta.make.footer[1] - .replace(rgx.inline_link, "\n\\cfoot{\\href{$2}{$1}}"); - } else { - _ft ~= _ft_2; - } + } + if (doc_matters.conf_make_meta.make.footer.length > 1) { + if (doc_matters.conf_make_meta.make.footer[1].matchAll(rgx.inline_link)) { + _ft ~= doc_matters.conf_make_meta.make.footer[1] + .replace(rgx.inline_link, "\n\\cfoot{\\href{$2}{$1}}"); + } else { + _ft ~= _ft_2; } - } else { - _ft ~= _ft_1; - _ft ~= _ft_2; } - return _ft; + } else { + _ft ~= _ft_1; + _ft ~= _ft_2; } + return _ft; +} #+END_SRC ***** paper margins @@ -1194,46 +1281,6 @@ struct paperMargins { auto margins = paperMargins(); #+END_SRC -****** portrait - -#+NAME: output_latex_head_tex_papermargins_portrait -#+BEGIN_SRC d -margins.portrait = format(q"┃ -#+END_SRC - -#+NAME: output_latex_head_tex_papermargins_portrait_set -#+BEGIN_SRC latex -\setlength{\oddsidemargin}{0mm} \setlength{\evensidemargin}{0mm} -\setlength{\topmargin}{-0.5pt} \setlength{\headheight}{14.5pt} -\setlength{\headsep}{35pt} -#+END_SRC - -#+NAME: output_latex_head_tex_papermargins_portrait_close -#+BEGIN_SRC d -┃", - ); -#+END_SRC - -****** landscape - -#+NAME: output_latex_head_tex_papermargins_landscape -#+BEGIN_SRC d -margins.landscape = format(q"┃ -#+END_SRC - -#+NAME: output_latex_head_tex_papermargins_landscape_set -#+BEGIN_SRC latex -\setlength{\oddsidemargin}{6mm} \setlength{\evensidemargin}{6mm} -\setlength{\topmargin}{-0.5pt} \setlength{\headheight}{14.5pt} -\setlength{\headsep}{20pt} -#+END_SRC - -#+NAME: output_latex_head_tex_papermargins_landscape_close -#+BEGIN_SRC d -┃", - ); -#+END_SRC - ***** multicol ****** struct @@ -1292,11 +1339,11 @@ links.mono = format(q"┃ #+NAME: output_latex_head_tex_colorlinks_mono_set #+BEGIN_SRC latex - colorlinks=true, - urlcolor=black, - filecolor=black, - linkcolor=black, - citecolor=black, +colorlinks=true, +urlcolor=black, +filecolor=black, +linkcolor=black, +citecolor=black, #+END_SRC #+NAME: output_latex_head_tex_colorlinks_mono_close @@ -1314,11 +1361,11 @@ links.color = format(q"┃ #+NAME: output_latex_head_tex_colorlinks_color_set #+BEGIN_SRC latex - colorlinks=true, - urlcolor=myblue, %% \href{...}{...} external url - filecolor=mygreen, %% \href{...} local file - linkcolor=myred, %% \href{...} and \pageref{...} - citecolor=black, +colorlinks=true, +urlcolor=myblue, %% \href{...}{...} external url +filecolor=mygreen, %% \href{...} local file +linkcolor=myred, %% \href{...} and \pageref{...} +citecolor=black, #+END_SRC #+NAME: output_latex_head_tex_colorlinks_color_close @@ -1346,17 +1393,27 @@ if (paper_set.is_portrait) { #+NAME: output_latex_head_format_string_paper_set_format_portrait_tex #+BEGIN_SRC d \documentclass[%s,%s,titlepage]{scrartcl} -\setlength{\textheight}{%s} \setlength{\textwidth}{%s} \usepackage{geometry} -┃", +\geometry{ + %s, + %s, + left=%s, + right=%s, + top=%s, + bottom=%s, +}┃", #+END_SRC #+NAME: output_latex_head_format_string_paper_set_format_portrait_variables #+BEGIN_SRC d paper_set.fontsize, - paper_set.name, - paper_set.height, - paper_set.width, + paper_set.papersize, + paper_set.papersize, + paper_set.orient, + paper_set.margin_left, + paper_set.margin_right, + paper_set.margin_top, + paper_set.margin_bottom, ); #+END_SRC @@ -1369,17 +1426,27 @@ if (paper_set.is_portrait) { #+NAME: output_latex_head_format_string_paper_set_format_landscape_tex #+BEGIN_SRC d \documentclass[%s,%s,landscape,titlepage,twocolumn]{scrartcl} -\setlength{\textheight}{%s} \setlength{\textwidth}{%s} \usepackage{geometry} -┃", +\geometry{ + %s, + %s, + left=%s, + right=%s, + top=%s, + bottom=%s, +}┃", #+END_SRC #+NAME: output_latex_head_format_string_paper_set_format_landscape_variables #+BEGIN_SRC d paper_set.fontsize, - paper_set.name, - paper_set.height, - paper_set.width, + paper_set.papersize, + paper_set.papersize, + paper_set.orient, + paper_set.margin_left, + paper_set.margin_right, + paper_set.margin_top, + paper_set.margin_bottom, ); #+END_SRC @@ -1491,13 +1558,10 @@ string _latex_head = format(q"┃%%%% spine LaTeX output #+NAME: output_latex_head_tex_set_usepackages_languages_and_font #+BEGIN_SRC latex \usepackage[T1]{fontenc} +%% \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage{newunicodechar} \usepackage{polyglossia} -\usepackage{ucs} -\usepackage{fontspec} -\usepackage{xltxtra} -\usepackage{xunicode} \setmainlanguage{%s} \setotherlanguage{%s} \setmainfont{Liberation Sans} @@ -1512,7 +1576,6 @@ string _latex_head = format(q"┃%%%% spine LaTeX output #+NAME: output_latex_head_tex_set_usepackages_1 #+BEGIN_SRC latex \usepackage{alltt} -\usepackage{thumbpdf} \usepackage{hyperref} \hypersetup{ #+END_SRC -- cgit v1.2.3