diff options
Diffstat (limited to 'src/doc_reform/io_out')
| -rw-r--r-- | src/doc_reform/io_out/latex.d | 66 | ||||
| -rw-r--r-- | src/doc_reform/io_out/rgx.d | 2 | 
2 files changed, 64 insertions, 4 deletions
| diff --git a/src/doc_reform/io_out/latex.d b/src/doc_reform/io_out/latex.d index a939fd8..ef878fd 100644 --- a/src/doc_reform/io_out/latex.d +++ b/src/doc_reform/io_out/latex.d @@ -505,8 +505,60 @@ template outputLaTeX() {      string      _txt,      O           obj,      M           doc_matters, +    string      paper_size_orientation,      string      _part = ""    ) { +    string manual_breaks( +      string test_for_break_level, +      string _pg_break +    ) { +      if ((!(doc_matters.conf_make_meta.make.breaks.empty) +        && (matchFirst(doc_matters.conf_make_meta.make.breaks, test_for_break_level))) +      ) {                                                                      // manually override defaults +        if ((matchFirst(doc_matters.conf_make_meta.make.breaks, rgx.make_breakpage)) +          && (matchFirst(doc_matters.conf_make_meta.make.breaks, rgx.make_breakcolumn)) +        ) { +          if (auto m = matchFirst(doc_matters.conf_make_meta.make.breaks, rgx.make_breakpage)) { +            if (matchFirst(m.captures["breakpage"], test_for_break_level)) { +              _pg_break = "\\clearpage\n"; +            } else if (auto n = matchFirst(doc_matters.conf_make_meta.make.breaks, rgx.make_breakcolumn)) { +              if (matchFirst(n.captures["breakcolumn"], test_for_break_level)) { +                if ((paper_size_orientation == "a4.landscape") +                  || (paper_size_orientation == "b4.landscape") +                  || (paper_size_orientation == "a5.landscape") +                  || (paper_size_orientation == "letter.landscape") +                  || (paper_size_orientation == "legal.landscape") +                ) { +                  _pg_break = "\\\\ \\columnbreak\n"; // "\\\\ \\newpage\n"; +                } else { // portrait +                  _pg_break = "\\clearpage\n"; +                } +              } +            } +          } +        } else if (auto m = matchFirst(doc_matters.conf_make_meta.make.breaks, rgx.make_breakpage)) { +          if (matchFirst(m.captures["breakpage"], test_for_break_level)) { +            _pg_break = "\\clearpage\n"; +          } +        } else if (auto m = matchFirst(doc_matters.conf_make_meta.make.breaks, rgx.make_breakcolumn)) { +          if (matchFirst(m.captures["breakcolumn"], test_for_break_level)) { +            if ((paper_size_orientation == "a4.landscape") +              || (paper_size_orientation == "b4.landscape") +              || (paper_size_orientation == "a5.landscape") +              || (paper_size_orientation == "letter.landscape") +              || (paper_size_orientation == "legal.landscape") +            ) { +              _pg_break = "\\\\ \\columnbreak\n"; // "\\\\ \\newpage\n"; +            } else { // portrait +              _pg_break = "\\clearpage\n"; +            } +          } +        } +      } else if (!(doc_matters.conf_make_meta.make.breaks.empty)) { +        _pg_break = ""; +      } +      return _pg_break; +    }      if (obj.metainfo.is_a == "heading") {        string _tex_para;        string _pg_break; @@ -530,7 +582,13 @@ template outputLaTeX() {        case 4: // 1 == section          _columns = (_part != "bookindex")            ? "" : "\n\\br\n\\begin{multicols}{2}"; -        _pg_break = "\\clearpage\n"; +        if (doc_matters.conf_make_meta.make.doc_type == "article") {             // defaults for article +          _pg_break = ""; +        } else if (doc_matters.conf_make_meta.make.doc_type == "book") {         // defaults for book +          _pg_break = "\\clearpage\n"; +        } else { +          _pg_break = "\\clearpage\n"; +        }          _sect = "section";          _post = "";          _title_add = format(q"┃ @@ -1281,7 +1339,7 @@ string table(O,M)(            case "para":              switch (obj.metainfo.is_a) {              case "heading": -              _txt = _txt.heading(obj, doc_matters); +              _txt = _txt.heading(obj, doc_matters, paper_size_orientation);                goto default;              case "toc":                break; @@ -1302,7 +1360,7 @@ string table(O,M)(            case "para":              switch (obj.metainfo.is_a) {              case "heading": -              _txt = _txt.heading(obj, doc_matters); +              _txt = _txt.heading(obj, doc_matters, paper_size_orientation);                goto default;              case "para":                _txt = _txt.para(obj) @@ -1366,7 +1424,7 @@ string table(O,M)(                if (part == "bookindex") {                  _multicolumns = true;                } -              _txt = _txt.heading(obj, doc_matters, part); +              _txt = _txt.heading(obj, doc_matters, paper_size_orientation, part);                goto default;              case "endnote":              assert(part == "endnotes");                /* uncomment code to reinstate endnotes in endnote section */ diff --git a/src/doc_reform/io_out/rgx.d b/src/doc_reform/io_out/rgx.d index 3aaf420..37ad39c 100644 --- a/src/doc_reform/io_out/rgx.d +++ b/src/doc_reform/io_out/rgx.d @@ -54,6 +54,8 @@  module doc_reform.io_out.rgx;  static template spineRgxOut() {    static struct RgxO { +    static make_breakpage                             = ctRegex!(`new=(?P<breakpage>.+?)(?:;|$)`); +    static make_breakcolumn                           = ctRegex!(`break=(?P<breakcolumn>.+?)(?:;|$)`,);      static newline                                        = ctRegex!("\n", "mg");      static space                                          = ctRegex!(`[ ]`, "mg");      static spaces_keep                                    = ctRegex!(`(?P<keep_spaces>^[ ]+|[ ]{2,})`, "mg"); // code, verse, block | 
