diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2022-03-04 18:06:48 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2022-03-05 20:04:20 -0500 | 
| commit | 64de4756b12d97932779e29b7a3a2ca9d3e29722 (patch) | |
| tree | 23424ffd89fc6598a01eaca43c99fb9b6fe55057 /src | |
| parent | latex, linebreak br (diff) | |
latex, use geometry package for page setting
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc_reform/io_out/latex.d | 335 | 
1 files changed, 216 insertions, 119 deletions
| diff --git a/src/doc_reform/io_out/latex.d b/src/doc_reform/io_out/latex.d index 80904dd..c9d2213 100644 --- a/src/doc_reform/io_out/latex.d +++ b/src/doc_reform/io_out/latex.d @@ -63,32 +63,54 @@ template outputLaTeX() {    mixin spineLanguageCodes;    auto lang = Lang();    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();            } @@ -99,27 +121,45 @@ template outputLaTeX() {          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();            } @@ -130,27 +170,45 @@ template outputLaTeX() {          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();            } @@ -161,27 +219,45 @@ template outputLaTeX() {          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();            } @@ -192,27 +268,45 @@ template outputLaTeX() {          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();            } @@ -517,7 +611,6 @@ template outputLaTeX() {  \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, @@ -850,7 +943,7 @@ string table(O,M)(        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",); +    \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[0].matchAll(rgx.inline_link)) { @@ -879,18 +972,6 @@ string table(O,M)(      string landscape;    }    auto margins           = paperMargins(); -  margins.portrait    = format(q"┃ -\setlength{\oddsidemargin}{0mm} \setlength{\evensidemargin}{0mm} -\setlength{\topmargin}{-0.5pt} \setlength{\headheight}{14.5pt} -\setlength{\headsep}{35pt} -┃", -  ); -  margins.landscape    = format(q"┃ -\setlength{\oddsidemargin}{6mm} \setlength{\evensidemargin}{6mm} -\setlength{\topmargin}{-0.5pt} \setlength{\headheight}{14.5pt} -\setlength{\headsep}{20pt} -┃", -  );    struct columnsMulti {      string portrait;      string landscape; @@ -907,19 +988,19 @@ string table(O,M)(    }    auto links           = colorLinks();    links.mono    = format(q"┃ -colorlinks=true, -urlcolor=black, -filecolor=black, -linkcolor=black, -citecolor=black, +  colorlinks=true, +  urlcolor=black, +  filecolor=black, +  linkcolor=black, +  citecolor=black,  ┃",    );    links.color    = format(q"┃ -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,  ┃",    );    string set_paper(P)(P paper_set,) { @@ -927,24 +1008,44 @@ citecolor=black,      if (paper_set.is_portrait) {        paper_type_description = format(q"┃  \documentclass[%s,%s,titlepage]{scrartcl} -\setlength{\textheight}{%s} \setlength{\textwidth}{%s}  \usepackage{geometry} -┃", +\geometry{ +  %s, +  %s, +  left=%s, +  right=%s, +  top=%s, +  bottom=%s, +}┃",          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,        );      } else {        paper_type_description = format(q"┃  \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, +}┃",          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,        );      }      return paper_type_description; @@ -986,19 +1087,15 @@ citecolor=black,  \setlength{\marginparwidth}{8mm}  %s  \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}  \setmonofont[Scale=0.85]{Liberation Mono}  \usepackage{alltt} -\usepackage{thumbpdf}  \usepackage{hyperref}  \hypersetup{    pdftitle={%s}, | 
