aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2022-03-24 21:12:43 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2022-04-03 18:13:53 -0400
commit6d74d9fa63bc478fcd56a2edf4bdb9906efa1966 (patch)
tree2323e775148a403c6a5e36b28cb309ef91390c08
parentlatex output (try tidy); linebreaks more generally (diff)
latex header, work on (& some code formatting)
-rw-r--r--org/metaverse.org2
-rw-r--r--org/out_latex.org831
-rw-r--r--src/doc_reform/io_out/latex.d694
-rw-r--r--src/doc_reform/meta/metadoc_from_src.d2
4 files changed, 765 insertions, 764 deletions
diff --git a/org/metaverse.org b/org/metaverse.org
index 1ae0be4..25b414a 100644
--- a/org/metaverse.org
+++ b/org/metaverse.org
@@ -1206,7 +1206,7 @@ if there is a blurb section you need to:
the_document_blurb_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1to4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
- } else {
+ } else if (!(line.empty)) {
an_object = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur);
comp_obj_para = comp_obj_para.init;
comp_obj_para.metainfo.is_of_part = "backmatter";
diff --git a/org/out_latex.org b/org/out_latex.org
index bac3158..817bbc8 100644
--- a/org/out_latex.org
+++ b/org/out_latex.org
@@ -27,95 +27,93 @@
<<doc_header_including_copyright_and_license>>
module doc_reform.io_out.latex;
template outputLaTeX() {
- <<output_latex_imports>>
- mixin InternalMarkup; // watch
- mixin spineRgxOut;
- static auto rgx = RgxO();
- mixin spineLanguageCodes;
- auto lang = Lang();
- <<output_latex_shared_geometry_paper_dimensions>>
- <<output_latex_shared_special_characters_to_escape_object>>
- <<output_latex_shared_special_characters_to_escape_text>>
- <<output_latex_shared_fontface>>
- <<output_latex_shared_leading_hardspaces>>
- <<output_latex_shared_character_nbsp_to_hardspace>>
- <<output_latex_shared_character_spaces_to_hardspace>>
- <<output_latex_shared_character_nbsp_to_space>>
- <<output_latex_shared_links_and_images>>
- <<output_latex_shared_footnotes>>
- <<output_latex_shared_footnotes_remove>>
- <<output_latex_shared_para>>
- <<output_latex_shared_bookindex>>
-<<output_latex_shared_heading>>
-<<output_latex_shared_group>>
-<<output_latex_shared_block>>
-<<output_latex_shared_verse>>
-<<output_latex_shared_codeblock>>
-<<output_latex_shared_tablarize>>
-<<output_latex_shared_table>>
- <<output_latex_head_bullets_and_indentation>>
- <<output_latex_head>>
- <<output_latex_head_papertype>>
- <<output_latex_head_footer>>
- <<output_latex_head_tex_papermargins>>
- <<output_latex_head_tex_columns_multi>>
- <<output_latex_head_tex_columns_multi_portrait>>
-<<output_latex_head_tex_columns_multi_portrait_set>>
-<<output_latex_head_tex_columns_multi_portrait_close>>
- <<output_latex_head_tex_columns_multi_landscape>>
- <<output_latex_head_tex_colorlinks>>
- <<output_latex_head_tex_colorlinks_mono>>
- <<output_latex_head_tex_colorlinks_mono_set>>
-<<output_latex_head_tex_colorlinks_mono_close>>
- <<output_latex_head_tex_colorlinks_color>>
- <<output_latex_head_tex_colorlinks_color_set>>
-<<output_latex_head_tex_colorlinks_color_close>>
- <<output_latex_head_format_string_paper_set>>
- <<output_latex_head_format_string_paper_set_format_portrait>>
-<<output_latex_head_format_string_paper_set_format_portrait_tex>>
- <<output_latex_head_format_string_paper_set_format_portrait_variables>>
- <<output_latex_head_format_string_paper_set_format_landscape>>
-<<output_latex_head_format_string_paper_set_format_landscape_tex>>
- <<output_latex_head_format_string_paper_set_format_landscape_variables>>
- <<output_latex_head_format_string_paper_set_return>>
- <<output_latex_head_format_string_paper_set_orientation>>
- <<output_latex_head_format_string_paper_set_color>>
- <<output_latex_head_format_tex_set_start_latex_head>>
-<<output_latex_head_tex_set_generated_by>>
-<<output_latex_head_tex_set_paper_type>>
-<<output_latex_head_tex_set_orintation>>
-<<output_latex_head_tex_set_margins>>
-<<output_latex_head_tex_set_columns>>
-<<output_latex_head_tex_set_usepackages_languages_and_font>>
-<<output_latex_head_tex_set_usepackages_1>>
-<<output_latex_head_tex_set_metadata>>
-<<output_latex_head_tex_set_colors>>
-<<output_latex_head_tex_set_usepackage_misc>>
-<<output_latex_head_tex_set_indent_bullet_list>>
-<<output_latex_head_tex_set_part_section_subsection_subsubsection_paragraph_subparagraph>>
-<<output_latex_head_tex_set_misc>>
- <<output_latex_head_a_format_string_variables>>
- <<output_latex_head_close>>
- <<output_latex_body_function>>
- <<output_latex_body_foreach_doc_part>>
- <<output_latex_body_for_doc_frontmatter>>
- <<output_latex_body_for_doc_body>>
- <<output_latex_body_for_doc_backmatter>>
- <<output_latex_body_for_doc_default>>
- <<output_latex_body_function_return>>
- <<output_latex_tail_function>>
- <<output_latex_tail_format_string>>
-<<output_latex_tail_format_string_tex>>
- <<output_latex_tail_format_string_close>>
- <<output_latex_tail_function_return>>
- <<output_latex_output_write>>
- <<output_latex_output_set>>
+ <<ImportsAndMixins_imports>>
+ <<Function_shared_geometry_paper_dimensions>>
+ <<Function_shared_special_characters_to_escape_object>>
+ <<Function_shared_special_characters_to_escape_text>>
+ <<Function_shared_fontface>>
+ <<Function_shared_leading_hardspaces>>
+ <<Function_shared_character_nbsp_to_hardspace>>
+ <<Function_shared_character_spaces_to_hardspace>>
+ <<Function_shared_character_nbsp_to_space>>
+ <<Function_shared_links_and_images>>
+ <<Function_shared_footnotes>>
+ <<Function_shared_footnotes_remove>>
+ <<Function_shared_para>>
+ <<Function_shared_bookindex>>
+<<Function_shared_heading>>
+<<Function_shared_group>>
+<<Function_shared_block>>
+<<Function_shared_verse>>
+<<Function_shared_codeblock>>
+ <<Function_shared_tablarize>>
+<<Function_shared_table>>
+ <<Function_head_bullets_and_indentation>>
+ <<MethodOpen_head>>
+ <<Struct_head_papertype>>
+ <<Function_head_footer>>
+ <<Struct_head_tex_papermargins>>
+ <<Struct_head_tex_columns_multi>>
+ <<FmtTxtOpen_head_tex_columns_multi_portrait>>
+<<FmtTxtSet_head_tex_columns_multi_portrait>>
+<<FmtTxtClose_head_tex_columns_multi_portrait>>
+ <<VarSet_head_tex_columns_multi_landscape>>
+ <<Struct_head_tex_colorlinks>>
+ <<FmtTxtOpen_head_tex_colorlinks_mono>>
+ <<FmtTxtSet_head_tex_colorlinks_mono>>
+<<FmtTxtClose_head_tex_colorlinks_mono>>
+ <<FmtTxtOpen_head_tex_colorlinks_color>>
+ <<FmtTxtSet_head_tex_colorlinks_color>>
+<<FmtTxtClose_head_tex_colorlinks_color>>
+ <<MethodOpen_head_format_string_paper_set>>
+ <<Condition_FmtTxtOpen_head_format_string_paper_set_format_portrait>>
+<<FmtTxtSet_head_format_string_paper_set_format_portrait_tex>>
+ <<FmtTxtClose_head_format_string_paper_set_format_portrait_variables>>
+ <<Condition_FmtTxtOpen_head_format_string_paper_set_format_landscape>>
+<<FmtTxtSet_head_format_string_paper_set_format_landscape_tex>>
+ <<FmtTxtClose_head_format_string_paper_set_format_landscape_variables>>
+ <<MethodClose_head_format_string_paper_set_return>>
+ <<Switch_head_format_string_paper_set_orientation>>
+ <<ConditionalSetVar_head_format_string_paper_set_color>>
+ <<FmtTxtOpen_head_format_tex_set_start_latex_head>>
+<<FmtTxtSet_head_tex_set_generated_by>>
+<<FmtTxtSet_head_tex_set_paper_type>>
+<<FmtTxtSet_head_tex_set_orintation>>
+<<FmtTxtSet_head_tex_set_columns>>
+<<FmtTxtSet_head_tex_set_margins>>
+<<FmtTxtSet_head_tex_set_usepackages_languages_and_font>>
+<<FmtTxtSet_head_tex_set_usepackages_1>>
+<<FmtTxtSet_head_tex_set_metadata>>
+<<FmtTxtSet_head_tex_set_colors>>
+<<FmtTxtSet_head_tex_set_usepackage_misc>>
+<<FmtTxtSet_head_tex_set_indent_bullet_list>>
+<<FmtTxtSet_head_tex_set_part_section_subsection_subsubsection_paragraph_subparagraph>>
+<<FmtTxtSet_head_tex_set_misc>>
+<<FmtTxtSet_head_tex_newEnvironment>>
+<<FmtTxtSet_head_tex_newCommands>>
+%% <<FmtTxtSet_head_tex_bug_remove_blank_first_page>>
+ <<FmtTxtClose_head_a_format_string_variables>>
+ <<MethodClose_head_close>>
+ <<MethodOpen_body_function>>
+ <<MethodLoopOpen_body_foreach_doc_part>>
+ <<CasePart_body_for_doc_frontmatter>>
+ <<CasePart_body_for_doc_body>>
+ <<CasePart_body_for_doc_backmatter>>
+ <<CasePart_body_for_doc_default>>
+ <<MethodClose_body_function_return>>
+ <<MethodOpen_tail_function>>
+ <<FmtTxtOpen_tail_format_string>>
+<<FmtTxtSet_tail_format_string_tex>>
+ <<FmtTxtClose_tail_format_string>>
+ <<MethodClose_tail_function_return>>
+ <<Function_output_write>>
+ <<Function_output_set>>
}
#+END_SRC
** write latex output :latex:out:
-#+NAME: output_latex_output_write
+#+NAME: Function_output_write
#+BEGIN_SRC d
void writeOutputLaTeX(T,M)(
const T latex_content,
@@ -157,7 +155,7 @@ void writeOutputLaTeX(T,M)(
** latex output hub [#A] :latex:pdf:out:
-#+NAME: output_latex_output_set
+#+NAME: Function_output_set
#+BEGIN_SRC d
void outputLaTeX(D,M)(
const D doc_abstraction,
@@ -181,7 +179,7 @@ void outputLaTeX(D,M)(
* stuff
** output imports
-#+NAME: output_latex_imports
+#+NAME: ImportsAndMixins_imports
#+BEGIN_SRC d
import
std.digest.sha,
@@ -190,12 +188,17 @@ import
std.uri,
std.conv : to;
import doc_reform.io_out;
+mixin InternalMarkup; // watch
+mixin spineRgxOut;
+static auto rgx = RgxO();
+mixin spineLanguageCodes;
+auto lang = Lang();
#+END_SRC
** shared
*** paper dimensions (struct) geometry
-#+NAME: output_latex_shared_geometry_paper_dimensions
+#+NAME: Function_shared_geometry_paper_dimensions
#+BEGIN_SRC d
auto paper() {
string mm(uint mmi) {
@@ -456,7 +459,7 @@ auto paper() {
*** latex \escape special characters
**** general
-#+NAME: output_latex_shared_special_characters_to_escape_object
+#+NAME: Function_shared_special_characters_to_escape_object
#+BEGIN_SRC d
@safe string sp_char_esc(O)(
string _txt,
@@ -485,7 +488,7 @@ auto paper() {
}
#+END_SRC
-#+NAME: output_latex_shared_special_characters_to_escape_text
+#+NAME: Function_shared_special_characters_to_escape_text
#+BEGIN_SRC d
@safe string sp_char_esc_txt()(
string _txt,
@@ -527,7 +530,7 @@ auto paper() {
- bold, italics, underscore, strikethrough
-#+NAME: output_latex_shared_fontface
+#+NAME: Function_shared_fontface
#+BEGIN_SRC d
@safe string fontface()(
string _txt,
@@ -550,7 +553,7 @@ _txt = _txt
**** spaces
***** leading hardspace UNUSED
-#+NAME: output_latex_shared_leading_hardspaces
+#+NAME: Function_shared_leading_hardspaces
#+BEGIN_SRC d
@safe string leading_hardspaces()(
string _txt,
@@ -567,7 +570,7 @@ _txt = _txt
***** nbsp character UNUSED
-#+NAME: output_latex_shared_character_nbsp_to_hardspace_
+#+NAME: shared_character_nbsp_to_hardspace_
#+BEGIN_SRC d
@safe string nbsp_char_replace()(string _txt) {
if (_txt.match(rgx.nbsp_char)) {
@@ -579,7 +582,7 @@ _txt = _txt
***** nbsp character
-#+NAME: output_latex_shared_character_nbsp_to_hardspace
+#+NAME: Function_shared_character_nbsp_to_hardspace
#+BEGIN_SRC d
@safe string nbsp_char()(string _txt) {
if (_txt.match(rgx.nbsp_char)) {
@@ -597,7 +600,7 @@ _txt = _txt
***** keep spaces
-#+NAME: output_latex_shared_character_spaces_to_hardspace
+#+NAME: Function_shared_character_spaces_to_hardspace
#+BEGIN_SRC d
@safe string spaces_to_nbsp()(string _txt) {
if (_txt.match(rgx.spaces_keep)) {
@@ -615,7 +618,7 @@ _txt = _txt
***** remove nbsp character
-#+NAME: output_latex_shared_character_nbsp_to_space
+#+NAME: Function_shared_character_nbsp_to_space
#+BEGIN_SRC d
@safe string nbsp_char_to_space()(string _txt) {
if (_txt.match(rgx.nbsp_char)) {
@@ -628,7 +631,7 @@ _txt = _txt
**** links and images
***** links / urls
-#+NAME: output_latex_shared_links_and_images
+#+NAME: Function_shared_links_and_images
#+BEGIN_SRC d
@safe string links_and_images(O,M)(
string _txt,
@@ -682,7 +685,7 @@ _txt = _txt
*** footnotes
**** footnotes
-#+NAME: output_latex_shared_footnotes
+#+NAME: Function_shared_footnotes
#+BEGIN_SRC d
@safe string footnotes()(
string _txt,
@@ -703,7 +706,7 @@ _txt = _txt
**** footnote remove
-#+NAME: output_latex_shared_footnotes_remove
+#+NAME: Function_shared_footnotes_remove
#+BEGIN_SRC d
@safe string remove_footnotes()(
string _txt,
@@ -718,7 +721,7 @@ _txt = _txt
*** para
**** para
-#+NAME: output_latex_shared_para
+#+NAME: Function_shared_para
#+BEGIN_SRC d
@safe string para(O)(
string _txt,
@@ -738,7 +741,7 @@ _txt = _txt
**** bookindex para
-#+NAME: output_latex_shared_bookindex
+#+NAME: Function_shared_bookindex
#+BEGIN_SRC d
@safe string bookindex(O)(
string _txt,
@@ -759,7 +762,7 @@ _txt = _txt
*** bullets & indentation
-#+NAME: output_latex_head_bullets_and_indentation
+#+NAME: Function_head_bullets_and_indentation
#+BEGIN_SRC d
@safe string bullets_and_indentation(O)(
string _txt,
@@ -804,7 +807,7 @@ _txt = _txt
*** heading
-#+NAME: output_latex_shared_heading
+#+NAME: Function_shared_heading
#+BEGIN_SRC d
@safe string heading(O,M)(
string _txt,
@@ -938,43 +941,16 @@ _txt = _txt
goto default;
default:
if (obj.metainfo.heading_lev_markup == 0) {
- _tex_para = q"┃\begin{document}
-\DeclareTOCStyleEntry[numwidth+=8pt]{part}{part}
-\DeclareTOCStyleEntry[numwidth+=4pt]{section}{section}
-\DeclareTOCStyleEntry[numwidth+=3pt]{section}{paragraph}
-\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subparagraph}
-\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subsection}
-\DeclareTOCStyleEntries[indent+=4pt]{section}{section,subsection,subsubsection}
-\DeclareTOCStyleEntries[numwidth+=3pt]{section}{paragraph,subparagraph}
-\RedeclareSectionCommand[%%
- style=section,
- level=0,
- indent=\z@,
- beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,
- afterskip=2.3ex \@plus.2ex,
- tocindent=0pt,
- tocnumwidth=1.5em
- ]{part}
-\RedeclareSectionCommands[%%
- tocnumwidth+=4pt,
- tocindent+=4pt,
- style=section,
- beforeskip=-0pt,
- afterskip=4pt,
- afterindent=false,
- indent=0pt]{section,subsection,subsubsection}
-\RedeclareSectionCommands[%%
- beforeskip=-10pt plus -2pt minus -1pt,
- afterskip=1sp plus -1sp minus 1sp,
- font=\normalfont\itshape,
- indent=0pt]{paragraph,subparagraph}
-\title{%s}
+ _tex_para = q"┃
+\begin{document}
+\thispagestyle{empty}
+\title{%s%s}
\author{ \textnormal{%s}}
\date{\begin{tiny}%s\end{tiny}}
-\thispagestyle{empty}
\maketitle
-\pagestyle{fancy}
+\addcontentsline{toc}{part}{%s}
\newpage
+\pagestyle{fancy}
\pagenumbering{alph}
\setcounter{page}{1}
\markboth{%s}{%s}
@@ -982,10 +958,13 @@ _txt = _txt
%s
\clearpage┃";
_txt = format(_tex_para,
- (doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt,
+ (doc_matters.conf_make_meta.meta.title_main).sp_char_esc_txt,
+ doc_matters.conf_make_meta.meta.title_subtitle.empty ? ""
+ : " \\\\ - \\\\ " ~ (doc_matters.conf_make_meta.meta.title_subtitle).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.creator_author).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.date_published).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.title_main).sp_char_esc_txt,
+ (doc_matters.conf_make_meta.meta.title_main).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.rights_copyright).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.rights_license).sp_char_esc_txt,
@@ -1025,7 +1004,7 @@ _txt = _txt
\markboth{%s}{%s}
%% \null
\clearpage
-\setcounter{page}{1}┃";
+\setcounter{page}{2}┃";
_txt = format(_tex_para,
(doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.creator_author).sp_char_esc_txt,
@@ -1080,105 +1059,105 @@ _txt = _txt
- (hardspace not honored) clear hardspace marker
-#+NAME: output_latex_shared_group
+#+NAME: Function_shared_group
#+BEGIN_SRC d
-string group(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "group") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objGroupOpen
+ string group(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "group") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objGroupOpen
%s
\objGroupClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.footnotes.split(rgx.br_line_spaced).join("\\brl{1}").strip // provides more control (more noise, not as tidy)
- // _txt.footnotes.split(rgx.br_line_spaced).join("") // this works using a line-space, looks tidy, keep ref.
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.footnotes.split(rgx.br_line_spaced).join("\\brl{1}").strip // provides more control (more noise, not as tidy)
+ // _txt.footnotes.split(rgx.br_line_spaced).join("") // this works using a line-space, looks tidy, keep ref.
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
#+END_SRC
**** block
- (hardspace honored) \hardspace
-#+NAME: output_latex_shared_block
+#+NAME: Function_shared_block
#+BEGIN_SRC d
-string block(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "block") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objBlockOpen
+ string block(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "block") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objBlockOpen
%s
\objBlockClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.nbsp_char.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.nbsp_char.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
#+END_SRC
**** (poem) verse
- (hardspace honored) \hardspace
-#+NAME: output_latex_shared_verse
+#+NAME: Function_shared_verse
#+BEGIN_SRC d
-string verse(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "verse") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objPoemVerseOpen
+ string verse(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "verse") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objPoemVerseOpen
%s
\objPoemVerseClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.spaces_to_nbsp.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.spaces_to_nbsp.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
#+END_SRC
**** codeblock
- (hardspace honored) \begin{lstlisting} clear hardspace marker
-#+NAME: output_latex_shared_codeblock
+#+NAME: Function_shared_codeblock
#+BEGIN_SRC d
-string codeblock(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "code") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\begin{objCodeBlock}\begin{lstlisting}
+ string codeblock(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "code") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\begin{objCodeBlock}\begin{lstlisting}
%s
\end{lstlisting}\end{objCodeBlock}
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.nbsp_char_to_space
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.nbsp_char_to_space
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
#+END_SRC
**** table
@@ -1187,7 +1166,7 @@ string codeblock(O,M)(
***** tablarize
-#+NAME: output_latex_shared_tablarize
+#+NAME: Function_shared_tablarize
#+BEGIN_SRC d
auto tablarize(O)(
string _txt,
@@ -1226,61 +1205,61 @@ auto tablarize(O)(
***** table
-#+NAME: output_latex_shared_table
+#+NAME: Function_shared_table
#+BEGIN_SRC d
-string table(O,M)(
- string _txt,
- O obj,
- M doc_matters,
- string paper_size_orientation,
-) {
- if (obj.metainfo.is_a == "table") {
- auto _t = _txt.tablarize(obj);
- string _table = _t[0];
- string _t_n = _t[1];
- uint pw = 0;
- switch (paper_size_orientation) {
- case "a4.portrait": pw = (paper.a4.portrait.w - 20); break;
- case "a4.landscape": pw = (paper.a4.landscape.w - 20); break;
- case "b4.portrait": pw = (paper.b4.portrait.w - 20); break;
- case "b4.landscape": pw = (paper.b4.landscape.w - 20); break;
- case "a5.portrait": pw = (paper.a5.portrait.w - 20); break;
- case "a5.landscape": pw = (paper.a5.landscape.w - 20); break;
- case "letter.portrait": pw = (paper.letter.portrait.w - 20); break;
- case "letter.landscape": pw = (paper.letter.landscape.w - 20); break;
- case "legal.portrait": pw = (paper.legal.portrait.w - 20); break;
- case "legal.landscape": pw = (paper.legal.landscape.w - 20); break;
- default: pw = 0; break;
- }
- // auto textwidth = (pw - 24);
- string _colw = "";
- foreach (w; obj.table.column_widths) {
- _colw ~= format(q"┃p{%.0fmm}┃",
- (w * pw / 100)
- // (w * (pw - 24)/ 100)
- // (w * textwidth / 100)
- );
- }
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objTableOpen{%s}
+ string table(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ string paper_size_orientation,
+ ) {
+ if (obj.metainfo.is_a == "table") {
+ auto _t = _txt.tablarize(obj);
+ string _table = _t[0];
+ string _t_n = _t[1];
+ uint pw = 0;
+ switch (paper_size_orientation) {
+ case "a4.portrait": pw = (paper.a4.portrait.w - 20); break;
+ case "a4.landscape": pw = (paper.a4.landscape.w - 20); break;
+ case "b4.portrait": pw = (paper.b4.portrait.w - 20); break;
+ case "b4.landscape": pw = (paper.b4.landscape.w - 20); break;
+ case "a5.portrait": pw = (paper.a5.portrait.w - 20); break;
+ case "a5.landscape": pw = (paper.a5.landscape.w - 20); break;
+ case "letter.portrait": pw = (paper.letter.portrait.w - 20); break;
+ case "letter.landscape": pw = (paper.letter.landscape.w - 20); break;
+ case "legal.portrait": pw = (paper.legal.portrait.w - 20); break;
+ case "legal.landscape": pw = (paper.legal.landscape.w - 20); break;
+ default: pw = 0; break;
+ }
+ // auto textwidth = (pw - 24);
+ string _colw = "";
+ foreach (w; obj.table.column_widths) {
+ _colw ~= format(q"┃p{%.0fmm}┃",
+ (w * pw / 100)
+ // (w * (pw - 24)/ 100)
+ // (w * textwidth / 100)
+ );
+ }
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objTableOpen{%s}
%s
\objTableClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _colw,
- _table,
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _colw,
+ _table,
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
#+END_SRC
** latex parts
*** latex head :head:
**** latex head function
-#+NAME: output_latex_head
+#+NAME: MethodOpen_head
#+BEGIN_SRC d
string latex_head(M)(
M doc_matters,
@@ -1292,7 +1271,7 @@ string latex_head(M)(
***** paper type dimensions
****** struct
-#+NAME: output_latex_head_papertype
+#+NAME: Struct_head_papertype
#+BEGIN_SRC d
struct paperTypeLatex {
string a4_portrait;
@@ -1311,7 +1290,7 @@ auto paper_type_latex = paperTypeLatex();
****** footer
-#+NAME: output_latex_head_footer
+#+NAME: Function_head_footer
#+BEGIN_SRC d
string _footer(M)(M doc_matters) {
string _ft = "\\lfoot[\\textrm{\\thepage}]";
@@ -1346,7 +1325,7 @@ string _footer(M)(M doc_matters) {
***** paper margins
****** struct
-#+NAME: output_latex_head_tex_papermargins
+#+NAME: Struct_head_tex_papermargins
#+BEGIN_SRC d
struct paperMargins {
string portrait;
@@ -1358,7 +1337,7 @@ auto margins = paperMargins();
***** multicol
****** struct
-#+NAME: output_latex_head_tex_columns_multi
+#+NAME: Struct_head_tex_columns_multi
#+BEGIN_SRC d
struct columnsMulti {
string portrait;
@@ -1369,25 +1348,25 @@ auto multicol = columnsMulti();
****** portrait
-#+NAME: output_latex_head_tex_columns_multi_portrait
+#+NAME: FmtTxtOpen_head_tex_columns_multi_portrait
#+BEGIN_SRC d
multicol.portrait = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_tex_columns_multi_portrait_set
+#+NAME: FmtTxtSet_head_tex_columns_multi_portrait
#+BEGIN_SRC latex
\usepackage{multicol}
#+END_SRC
-#+NAME: output_latex_head_tex_columns_multi_portrait_close
+#+NAME: FmtTxtClose_head_tex_columns_multi_portrait
#+BEGIN_SRC d
┃",
- );
+ );
#+END_SRC
****** landscape
-#+NAME: output_latex_head_tex_columns_multi_landscape
+#+NAME: VarSet_head_tex_columns_multi_landscape
#+BEGIN_SRC d
multicol.landscape = "";
#+END_SRC
@@ -1395,7 +1374,7 @@ multicol.landscape = "";
***** color links
****** struct
-#+NAME: output_latex_head_tex_colorlinks
+#+NAME: Struct_head_tex_colorlinks
#+BEGIN_SRC d
struct colorLinks {
string mono;
@@ -1406,12 +1385,12 @@ auto links = colorLinks();
****** mono
-#+NAME: output_latex_head_tex_colorlinks_mono
+#+NAME: FmtTxtOpen_head_tex_colorlinks_mono
#+BEGIN_SRC d
links.mono = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_tex_colorlinks_mono_set
+#+NAME: FmtTxtSet_head_tex_colorlinks_mono
#+BEGIN_SRC latex
colorlinks=true,
urlcolor=black,
@@ -1420,20 +1399,20 @@ linkcolor=black,
citecolor=black,
#+END_SRC
-#+NAME: output_latex_head_tex_colorlinks_mono_close
+#+NAME: FmtTxtClose_head_tex_colorlinks_mono
#+BEGIN_SRC d
┃",
- );
+ );
#+END_SRC
****** color
-#+NAME: output_latex_head_tex_colorlinks_color
+#+NAME: FmtTxtOpen_head_tex_colorlinks_color
#+BEGIN_SRC d
links.color = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_tex_colorlinks_color_set
+#+NAME: FmtTxtSet_head_tex_colorlinks_color
#+BEGIN_SRC latex
colorlinks=true,
urlcolor=myblue, %% \href{...}{...} external url
@@ -1442,31 +1421,31 @@ linkcolor=myred, %% \href{...} and \pageref{...}
citecolor=black,
#+END_SRC
-#+NAME: output_latex_head_tex_colorlinks_color_close
+#+NAME: FmtTxtClose_head_tex_colorlinks_color
#+BEGIN_SRC d
┃",
- );
+ );
#+END_SRC
**** latex head starts
***** dimensions & orientation
****** set
-#+NAME: output_latex_head_format_string_paper_set
+#+NAME: MethodOpen_head_format_string_paper_set
#+BEGIN_SRC d
string set_paper(P)(P paper_set,) {
string paper_type_description;
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_format_portrait
+#+NAME: Condition_FmtTxtOpen_head_format_string_paper_set_format_portrait
#+BEGIN_SRC d
if (paper_set.is_portrait) {
paper_type_description = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_format_portrait_tex
-#+BEGIN_SRC d
-\documentclass[%s,%s,titlepage]{scrartcl}
+#+NAME: FmtTxtSet_head_format_string_paper_set_format_portrait_tex
+#+BEGIN_SRC latex
+\documentclass[%s,%s,titlepage,makeidx]{scrartcl}
\usepackage{geometry}
\geometry{
%s,
@@ -1478,7 +1457,7 @@ if (paper_set.is_portrait) {
}┃",
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_format_portrait_variables
+#+NAME: FmtTxtClose_head_format_string_paper_set_format_portrait_variables
#+BEGIN_SRC d
paper_set.fontsize,
paper_set.papersize,
@@ -1491,15 +1470,15 @@ if (paper_set.is_portrait) {
);
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_format_landscape
+#+NAME: Condition_FmtTxtOpen_head_format_string_paper_set_format_landscape
#+BEGIN_SRC d
} else {
paper_type_description = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_format_landscape_tex
+#+NAME: FmtTxtSet_head_format_string_paper_set_format_landscape_tex
#+BEGIN_SRC d
-\documentclass[%s,%s,landscape,titlepage,twocolumn]{scrartcl}
+\documentclass[%s,%s,landscape,titlepage,twocolumn,makeidx]{scrartcl}
\usepackage{geometry}
\geometry{
%s,
@@ -1511,7 +1490,7 @@ if (paper_set.is_portrait) {
}┃",
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_format_landscape_variables
+#+NAME: FmtTxtClose_head_format_string_paper_set_format_landscape_variables
#+BEGIN_SRC d
paper_set.fontsize,
paper_set.papersize,
@@ -1524,7 +1503,7 @@ if (paper_set.is_portrait) {
);
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_return
+#+NAME: MethodClose_head_format_string_paper_set_return
#+BEGIN_SRC d
}
return paper_type_description;
@@ -1537,27 +1516,27 @@ if (paper_set.is_portrait) {
$SpineBIN/spine --verbose --latex --set-papersize="a4,letter.portrait,b4.portrait" --output="$SpineOUT" $SpinePOD/*
#+END_SRC
-#+NAME: output_latex_head_format_string_paper_set_orientation
+#+NAME: Switch_head_format_string_paper_set_orientation
#+BEGIN_SRC d
string paper_size_orientation_latex;
switch (paper_size_orientation) {
-case "a4.portrait": paper_size_orientation_latex = set_paper(paper.a4.portrait); break;
-case "a4.landscape": paper_size_orientation_latex = set_paper(paper.a4.landscape); break;
-case "b4.portrait": paper_size_orientation_latex = set_paper(paper.b4.portrait); break;
-case "b4.landscape": paper_size_orientation_latex = set_paper(paper.b4.landscape); break;
-case "a5.portrait": paper_size_orientation_latex = set_paper(paper.a5.portrait); break;
-case "a5.landscape": paper_size_orientation_latex = set_paper(paper.a5.landscape); break;
-case "letter.portrait": paper_size_orientation_latex = set_paper(paper.letter.portrait); break;
-case "letter.landscape": paper_size_orientation_latex = set_paper(paper.letter.landscape); break;
-case "legal.portrait": paper_size_orientation_latex = set_paper(paper.legal.portrait); break;
-case "legal.landscape": paper_size_orientation_latex = set_paper(paper.legal.landscape); break;
-default: paper_size_orientation_latex = paper_type_latex.a4_portrait;
+ case "a4.portrait": paper_size_orientation_latex = set_paper(paper.a4.portrait); break;
+ case "a4.landscape": paper_size_orientation_latex = set_paper(paper.a4.landscape); break;
+ case "b4.portrait": paper_size_orientation_latex = set_paper(paper.b4.portrait); break;
+ case "b4.landscape": paper_size_orientation_latex = set_paper(paper.b4.landscape); break;
+ case "a5.portrait": paper_size_orientation_latex = set_paper(paper.a5.portrait); break;
+ case "a5.landscape": paper_size_orientation_latex = set_paper(paper.a5.landscape); break;
+ case "letter.portrait": paper_size_orientation_latex = set_paper(paper.letter.portrait); break;
+ case "letter.landscape": paper_size_orientation_latex = set_paper(paper.letter.landscape); break;
+ case "legal.portrait": paper_size_orientation_latex = set_paper(paper.legal.portrait); break;
+ case "legal.landscape": paper_size_orientation_latex = set_paper(paper.legal.landscape); break;
+ default: paper_size_orientation_latex = paper_type_latex.a4_portrait;
}
#+END_SRC
***** set color links
-#+NAME: output_latex_head_format_string_paper_set_color
+#+NAME: ConditionalSetVar_head_format_string_paper_set_color
#+BEGIN_SRC d
string links_mono_or_color_set = links.mono.strip;
if (
@@ -1575,14 +1554,14 @@ if (
***** format latex head, open
-#+NAME: output_latex_head_format_tex_set_start_latex_head
+#+NAME: FmtTxtOpen_head_format_tex_set_start_latex_head
#+BEGIN_SRC d
string _latex_head = format(q"┃%%%% spine LaTeX output
#+END_SRC
***** description comment
-#+NAME: output_latex_head_tex_set_generated_by
+#+NAME: FmtTxtSet_head_tex_set_generated_by
#+BEGIN_SRC latex
%%%% Generated by: %s
%%%% D version: %s
@@ -1597,7 +1576,7 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
- paper_type_latex.us_letter_portrait
- paper_type_latex.us_letter_landscape
-#+NAME: output_latex_head_tex_set_paper_type
+#+NAME: FmtTxtSet_head_tex_set_paper_type
#+BEGIN_SRC latex
%s
#+END_SRC
@@ -1607,29 +1586,29 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
- margins.portrait
- margins.landscape
-#+NAME: output_latex_head_tex_set_orintation
+#+NAME: FmtTxtSet_head_tex_set_orintation
#+BEGIN_SRC latex
%s
#+END_SRC
-***** margin shared
+***** multicol (portrait | landscape)
-#+NAME: output_latex_head_tex_set_margins
+#+NAME: FmtTxtSet_head_tex_set_columns
#+BEGIN_SRC latex
-\setlength{\marginparsep}{4mm}
-\setlength{\marginparwidth}{8mm}
+%s
#+END_SRC
-***** multicol (portrait | landscape)
+***** margin shared
-#+NAME: output_latex_head_tex_set_columns
+#+NAME: FmtTxtSet_head_tex_set_margins
#+BEGIN_SRC latex
-%s
+\setlength{\marginparsep}{4mm}
+\setlength{\marginparwidth}{8mm}
#+END_SRC
***** language & font
-#+NAME: output_latex_head_tex_set_usepackages_languages_and_font
+#+NAME: FmtTxtSet_head_tex_set_usepackages_languages_and_font
#+BEGIN_SRC latex
\usepackage[T1]{fontenc}
%% \usepackage[utf8]{inputenc}
@@ -1647,7 +1626,7 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
***** latex head
-#+NAME: output_latex_head_tex_set_usepackages_1
+#+NAME: FmtTxtSet_head_tex_set_usepackages_1
#+BEGIN_SRC latex
\usepackage{alltt}
\usepackage{hyperref}
@@ -1656,8 +1635,10 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
***** hyperref metadata
-#+NAME: output_latex_head_tex_set_metadata
+#+NAME: FmtTxtSet_head_tex_set_metadata
#+BEGIN_SRC latex
+ unicode=true,
+ pdfusetitle,
pdftitle={%s},
pdfauthor={%s},
pdfsubject={%s},
@@ -1668,8 +1649,13 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
pdffitwindow=false, %% window fit to page when opened
pdfstartview={FitH}, %% fits the width of the page to the window
pdfnewwindow=true, %% links in new window
+ pdfborder={0 0 1},
plainpages=false, %% was true
+ bookmarks=true,
bookmarksopen=false,
+ bookmarksnumbered=false,
+ backref=false,
+ breaklinks=false,
%% colorlinks=true,
%% urlcolor=black,
%% filecolor=black,
@@ -1692,7 +1678,7 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
***** define colors
-#+NAME: output_latex_head_tex_set_colors
+#+NAME: FmtTxtSet_head_tex_set_colors
#+BEGIN_SRC latex
\usepackage[usenames]{color}
\definecolor{myblack}{rgb}{0,0,0}
@@ -1708,82 +1694,46 @@ string _latex_head = format(q"┃%%%% spine LaTeX output
***** latex head
-#+NAME: output_latex_head_tex_set_usepackage_misc
+#+NAME: FmtTxtSet_head_tex_set_usepackage_misc
#+BEGIN_SRC latex
\usepackage{textcomp}
\usepackage[parfill]{parskip}
\usepackage[normalem]{ulem}
\usepackage{soul}
\usepackage{longtable}
-\usepackage[tc]{titlepic}
\usepackage{graphicx}
-\makeatletter
-\parindent{0pt}
+\usepackage[tc]{titlepic}
\usepackage{amssymb}
\usepackage{listings}
-\usepackage{color}
-\usepackage{textcomp}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{4}
+\usepackage{bookmark}
+\usepackage{microtype}
\makeatletter
#+END_SRC
***** indent, bullet, list
-#+NAME: output_latex_head_tex_set_indent_bullet_list
+#+NAME: FmtTxtSet_head_tex_set_indent_bullet_list
#+BEGIN_SRC latex
\usepackage[multiple,ragged]{footmisc}
\setlength\footnotemargin{12pt}
\usepackage[para]{manyfoot}
\DeclareNewFootnote{A}
-\newenvironment{ParagraphIndent}[1]%%
-{
-\begin{list}{}{%%
-\setlength\topsep{0pt}%%
-\addtolength{\leftmargin}{#1}
-\setlength\parsep{0pt plus 1pt}%%
-}
-\item[]
-}
-{\end{list}}
-\newenvironment{ParagraphHang}[2]%%
-{
-\begin{list}{}{%%
-\setlength\topsep{0pt}%%
-\addtolength{\leftmargin}{#1}
-\itemindent=#2
-\setlength\parsep{0pt plus 1pt}%%
-}
-\item[]
-}
-{\end{list}}
-\newenvironment{Bullet}[1]%%
-{
-\begin{list}{}{%%
-\setlength\topsep{0pt}%%
-\addtolength{\leftmargin}{#1}
-\itemindent=-1em
-\setlength\parsep{0pt plus 1pt}%%
-}
-\item[]
-$\txtbullet$\hspace{\enspace}
-}
-{\end{list}}
#+END_SRC
%%\DeclareNewFootnote[para]{A}
***** part, section, subsection, subsubsection, paragraph, subparagraph
-#+NAME: output_latex_head_tex_set_part_section_subsection_subsubsection_paragraph_subparagraph
+#+NAME: FmtTxtSet_head_tex_set_part_section_subsection_subsubsection_paragraph_subparagraph
#+BEGIN_SRC latex
\usepackage{fancyhdr}
-\lhead{}
#+END_SRC
***** latex head misc. including defined commands
-#+NAME: output_latex_head_tex_set_misc
+#+NAME: FmtTxtSet_head_tex_set_misc
#+BEGIN_SRC latex
\selectlanguage{%s}
\lhead[ ]{ }
@@ -1791,15 +1741,83 @@ $\txtbullet$\hspace{\enspace}
\rhead[ ]{ }
%s
\rfoot[\tiny \href{}{}]{\textrm{\thepage}}
-\tolerance=300
-\clubpenalty=300
-\widowpenalty=300
-\makeatother
+%% \tolerance=300
+%% \clubpenalty=300
+%% \widowpenalty=300
\makeatother
\chardef\txtbullet="2022
\chardef\tilde="7E
\def\asterisk{{\rm \char42} }
\definecolor{Light}{gray}{.92}
+\definecolor{listinggray}{gray}{0.9}
+\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
+\lstset{
+ backgroundcolor=\color{lbcolor},
+ tabsize=4,
+ rulecolor=,
+ language=,
+ basicstyle={\ttfamily\scriptsize},
+ upquote=true,
+ 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},
+}
+\DeclareTOCStyleEntry[numwidth+=8pt]{part}{part}
+\DeclareTOCStyleEntry[numwidth+=4pt]{section}{section}
+\DeclareTOCStyleEntry[numwidth+=3pt]{section}{paragraph}
+\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subparagraph}
+\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subsection}
+\DeclareTOCStyleEntries[indent+=4pt]{section}{section,subsection,subsubsection}
+\DeclareTOCStyleEntries[numwidth+=3pt]{section}{paragraph,subparagraph}
+#+END_SRC
+
+***** latex head new environment
+
+#+NAME: FmtTxtSet_head_tex_newEnvironment
+#+BEGIN_SRC latex
+\newenvironment{ParagraphIndent}[1]{%%
+ \begin{list}{}{%%
+ \setlength\topsep{0pt}%%
+ \addtolength{\leftmargin}{#1}
+ \setlength\parsep{0pt plus 1pt}%%
+ }
+ \item[]
+} {\end{list}}
+\newenvironment{ParagraphHang}[2]{%%
+ \begin{list}{}{%%
+ \setlength\topsep{0pt}%%
+ \addtolength{\leftmargin}{#1}
+ \itemindent=#2
+ \setlength\parsep{0pt plus 1pt}%%
+ }
+ \item[]
+} {\end{list}}
+\newenvironment{Bullet}[1]{%%
+ \begin{list}{}{%%
+ \setlength\topsep{0pt}%%
+ \addtolength{\leftmargin}{#1}
+ \itemindent=-1em
+ \setlength\parsep{0pt plus 1pt}%%
+ }
+ \item[]
+ $\txtbullet$\hspace{\enspace}
+} {\end{list}}
+#+END_SRC
+
+***** latex head new commands defined
+
+#+NAME: FmtTxtSet_head_tex_newCommands
+#+BEGIN_SRC latex
\newcommand{\monosp}[1]{\normaltext\ttfamily\texbackslash#1}
\newcommand{\br}{\hfill\break}
\newcommand{\brl}[1]{%%
@@ -1810,19 +1828,19 @@ $\txtbullet$\hspace{\enspace}
\fi
}
\newcommand{\brln}{\hspace*{\fill}\linebreak}
-\newcomand{\objBlockOpen}{
+\newcommand{\objBlockOpen}{
\setlength{\parskip}{0.5ex plus0.2ex minus0.1ex}\raggedright
\begin{footnotesize}
}
-\newcomand{\objBlockClose}{%%
+\newcommand{\objBlockClose}{%%
\end{footnotesize}
\setlength{\parskip}{1ex plus0.5ex minus0.2ex}
}
-\newcomand{\objGroupOpen}{%%
+\newcommand{\objGroupOpen}{%%
\setlength{\parskip}{0.5ex plus0.2ex minus0.1ex}
\begin{footnotesize}
}
-\newcomand{\objGroupClose}{%%
+\newcommand{\objGroupClose}{%%
\end{footnotesize}
}
\newcommand{\objPoemVerseOpen}{%%
@@ -1836,12 +1854,13 @@ $\txtbullet$\hspace{\enspace}
\setlength{\parskip}{1ex plus0.5ex minus0.2ex}
\linebreak
}
-\newcommand{\parasep}{\smallskip \begin{center}*\hspace{2em}*\hspace{2em}*\end{center} \br}
+\newcommand{\parasep}{%%
+ \smallskip \begin{center}*\hspace{2em}*\hspace{2em}*\end{center} \br
+}
\newcommand{\spaces}[1]{{\hspace*{#1ex}}}
\newcommand{\s}{\hspace*{1ex}}
\newcommand{\hardspace}{\hspace*{1ex}}
\newcommand{\-}{\hspace*{1ex}}
-\newcommand{\..}{\hspace*{1ex}} %% dots trailing
\newcommand{\caret}{{\^{~}}}
\newcommand{\pipe}{{\textbar}}
\newcommand{\curlyOpen}{{}
@@ -1851,18 +1870,25 @@ $\txtbullet$\hspace{\enspace}
\newcommand{\slash}{{/}}
\newcommand{\underscore}{\_}
\newcommand{\exclaim}{\Verbatim{!}}
-\newcommand{\linktext}[2]{{\href{#1}
-{\ulcorner\textup{{#2}}\lrcorner}}}
-\newcommand{\linkurl}[2]{{\href{#1}
-{\scriptsize\ttfamily\ulcorner\textup{{#2}}\lrcorner}}}
-\newcommand{\link}[2]{{\begin{scriptsize}\color{black}\urlstyle{tt}\href{#1}
-{\ulcorner{#2}\lrcorner}\end{scriptsize}}}
+\newcommand{\linktext}[2]{%%
+ {\href{#1}
+ {\;\ulcorner\,\textup{{#2}}\,\lrcorner}}
+}
+\newcommand{\linkurl}[2]{%%
+ \;{\href{#1}
+ {\;\scriptsize\ttfamily\ulcorner\,\textup{{#2}}\,\lrcorner}}
+}
+\newcommand{\link}[2]{%%
+ {\begin{scriptsize}\color{black}\urlstyle{tt}\href{#1}
+ {\;\ulcorner\,{#2}\,\lrcorner}\end{scriptsize}}
+}
\newcommand{\objCodeBlock}[1]{\normaltext\raggedright\small\ttfamily\texbackslash#1}
-\newcommand{\objCodeOpen}{\normaltext\raggedright\small\ttfamily\texbackslash
-\begin{lstlisting}
+\newcommand{\objCodeOpen}{%%
+ \normaltext\raggedright\small\ttfamily\texbackslash
+ \begin{lstlisting}
}
-\newcommand{\objCodeClose}{
-\end{lstlisting}
+\newcommand{\objCodeClose}{%%
+ \end{lstlisting}
}
\newcommand{\ocn}[1]{%%
\setlength{\parindent}{0em}
@@ -1874,51 +1900,36 @@ $\txtbullet$\hspace{\enspace}
\hspace{-0.5ex}{\marginpar{\begin{tiny}\hspace{0em}\hypertarget{#1}{#1}\end{tiny}}}
\fi
}
-\newcommand{\ocnhold}[1]{
-\begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{#1}{#1}\end{tiny}}}
+\newcommand{\ocnhold}[1]{%%
+ \begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{#1}{#1}\end{tiny}}}
}
\newcommand{\objCodeBlockHold}[1]{\normaltext\raggedright\small\ttfamily\texbackslash#1}
-\definecolor{listinggray}{gray}{0.9}
-\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
-\lstset{
- backgroundcolor=\color{lbcolor},
- tabsize=4,
- rulecolor=,
- language=,
- basicstyle={\ttfamily\scriptsize},
- upquote=true,
- 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},
-}
-\newcommand{\objTableOpen}[1]{
-\setlength{\LTleft}{0pt}
-\setlength{\LTright}{\fill}
-\begin{tiny}
-\begin{longtable}{#1}
+\newcommand{\objTableOpen}[1]{%%
+ \setlength{\LTleft}{0pt}
+ \setlength{\LTright}{\fill}
+ \begin{tiny}
+ \begin{longtable}{#1}
}
-\newcommand{\objTableClose}{
-\end{longtable}
-\end{tiny}
+\newcommand{\objTableClose}{%%
+ \end{longtable}
+ \end{tiny}
}
#+END_SRC
%%\chardef\asterisk="2A
%%\newcommand{\hardspace}{\hspace{.5em}}
+***** latex remove blank first page BUG FIX can REMOVE UNUSED
+
+#+NAME: FmtTxtSet_head_tex_bug_remove_blank_first_page
+#+BEGIN_SRC latex
+\usepackage{atbegshi} %% http://ctan.org/pkg/atbegshi %% (BUG tmp FIX deal with problem, remove first page which is blank)
+\AtBeginDocument{\AtBeginShipoutNext{\AtBeginShipoutDiscard}} %% (BUG tmp FIX deal with problem, remove first page which is blank)
+#+END_SRC
+
**** latex head format inclusions
-#+NAME: output_latex_head_a_format_string_variables
+#+NAME: FmtTxtClose_head_a_format_string_variables
#+BEGIN_SRC d
┃",
doc_matters.opt.action.debug_do_latex ? "" : doc_matters.generator_program.name_and_version.strip,
@@ -1942,7 +1953,7 @@ $\txtbullet$\hspace{\enspace}
**** latex head return
-#+NAME: output_latex_head_close
+#+NAME: MethodClose_head_close
#+BEGIN_SRC d
return _latex_head.strip;
}
@@ -1951,7 +1962,7 @@ $\txtbullet$\hspace{\enspace}
*** ↻ latex body :content:body:
**** latex body function
-#+NAME: output_latex_body_function
+#+NAME: MethodOpen_body_function
#+BEGIN_SRC d
string latex_body(D,M)(
const D doc_abstraction,
@@ -1965,7 +1976,7 @@ string latex_body(D,M)(
**** ↻ loop open
-#+NAME: output_latex_body_foreach_doc_part
+#+NAME: MethodLoopOpen_body_foreach_doc_part
#+BEGIN_SRC d
foreach (part; doc_matters.has.keys_seq.latex) {
foreach (obj; doc_abstraction[part]) {
@@ -1975,7 +1986,7 @@ foreach (part; doc_matters.has.keys_seq.latex) {
**** ↻ within loop
***** frontmatter
-#+NAME: output_latex_body_for_doc_frontmatter
+#+NAME: CasePart_body_for_doc_frontmatter
#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
_txt = obj.text
@@ -2002,7 +2013,7 @@ case "frontmatter": assert(part == "head" || "toc");
***** body
-#+NAME: output_latex_body_for_doc_body
+#+NAME: CasePart_body_for_doc_body
#+BEGIN_SRC d
case "body": assert(part == "body" || "head"); // surprise
_txt = obj.text
@@ -2060,7 +2071,7 @@ case "body": assert(part == "body" || "head"); // surprise
***** backmatter
-#+NAME: output_latex_body_for_doc_backmatter
+#+NAME: CasePart_body_for_doc_backmatter
#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -2120,7 +2131,7 @@ case "backmatter":
***** after
-#+NAME: output_latex_body_for_doc_default
+#+NAME: CasePart_body_for_doc_default
#+BEGIN_SRC d
case "comment":
break;
@@ -2145,7 +2156,7 @@ if (_multicolumns) {
**** latex body return
-#+NAME: output_latex_body_function_return
+#+NAME: MethodClose_body_function_return
#+BEGIN_SRC d
return _latex_body;
}
@@ -2154,7 +2165,7 @@ if (_multicolumns) {
*** latex tail :tail:
**** latex tail function
-#+NAME: output_latex_tail_function
+#+NAME: MethodOpen_tail_function
#+BEGIN_SRC d
string latex_tail(M)(
M doc_matters,
@@ -2164,7 +2175,7 @@ string latex_tail(M)(
**** latex tail starts
-#+NAME: output_latex_tail_format_string
+#+NAME: FmtTxtOpen_tail_format_string
#+BEGIN_SRC d
string _latex_tail = format(q"┃
#+END_SRC
@@ -2173,7 +2184,7 @@ string _latex_tail = format(q"┃
***** latex document end
-#+NAME: output_latex_tail_format_string_tex
+#+NAME: FmtTxtSet_tail_format_string_tex
#+BEGIN_SRC latex
\end{document}
@@ -2181,7 +2192,7 @@ string _latex_tail = format(q"┃
**** latex tail format inclusions
-#+NAME: output_latex_tail_format_string_close
+#+NAME: FmtTxtClose_tail_format_string
#+BEGIN_SRC d
┃",
// doc_matters.conf_make_meta.meta.title_full,
@@ -2191,7 +2202,7 @@ string _latex_tail = format(q"┃
**** latex tail return
-#+NAME: output_latex_tail_function_return
+#+NAME: MethodClose_tail_function_return
#+BEGIN_SRC d
return _latex_tail;
}
diff --git a/src/doc_reform/io_out/latex.d b/src/doc_reform/io_out/latex.d
index ca809d5..1f58c35 100644
--- a/src/doc_reform/io_out/latex.d
+++ b/src/doc_reform/io_out/latex.d
@@ -651,43 +651,16 @@ template outputLaTeX() {
goto default;
default:
if (obj.metainfo.heading_lev_markup == 0) {
- _tex_para = q"┃\begin{document}
-\DeclareTOCStyleEntry[numwidth+=8pt]{part}{part}
-\DeclareTOCStyleEntry[numwidth+=4pt]{section}{section}
-\DeclareTOCStyleEntry[numwidth+=3pt]{section}{paragraph}
-\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subparagraph}
-\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subsection}
-\DeclareTOCStyleEntries[indent+=4pt]{section}{section,subsection,subsubsection}
-\DeclareTOCStyleEntries[numwidth+=3pt]{section}{paragraph,subparagraph}
-\RedeclareSectionCommand[%%
- style=section,
- level=0,
- indent=\z@,
- beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,
- afterskip=2.3ex \@plus.2ex,
- tocindent=0pt,
- tocnumwidth=1.5em
- ]{part}
-\RedeclareSectionCommands[%%
- tocnumwidth+=4pt,
- tocindent+=4pt,
- style=section,
- beforeskip=-0pt,
- afterskip=4pt,
- afterindent=false,
- indent=0pt]{section,subsection,subsubsection}
-\RedeclareSectionCommands[%%
- beforeskip=-10pt plus -2pt minus -1pt,
- afterskip=1sp plus -1sp minus 1sp,
- font=\normalfont\itshape,
- indent=0pt]{paragraph,subparagraph}
-\title{%s}
+ _tex_para = q"┃
+\begin{document}
+\thispagestyle{empty}
+\title{%s%s}
\author{ \textnormal{%s}}
\date{\begin{tiny}%s\end{tiny}}
-\thispagestyle{empty}
\maketitle
-\pagestyle{fancy}
+\addcontentsline{toc}{part}{%s}
\newpage
+\pagestyle{fancy}
\pagenumbering{alph}
\setcounter{page}{1}
\markboth{%s}{%s}
@@ -695,10 +668,13 @@ template outputLaTeX() {
%s
\clearpage┃";
_txt = format(_tex_para,
- (doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt,
+ (doc_matters.conf_make_meta.meta.title_main).sp_char_esc_txt,
+ doc_matters.conf_make_meta.meta.title_subtitle.empty ? ""
+ : " \\\\ - \\\\ " ~ (doc_matters.conf_make_meta.meta.title_subtitle).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.creator_author).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.date_published).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.title_main).sp_char_esc_txt,
+ (doc_matters.conf_make_meta.meta.title_main).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.rights_copyright).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.rights_license).sp_char_esc_txt,
@@ -738,7 +714,7 @@ template outputLaTeX() {
\markboth{%s}{%s}
%% \null
\clearpage
-\setcounter{page}{1}┃";
+\setcounter{page}{2}┃";
_txt = format(_tex_para,
(doc_matters.conf_make_meta.meta.title_full).sp_char_esc_txt,
(doc_matters.conf_make_meta.meta.creator_author).sp_char_esc_txt,
@@ -786,158 +762,158 @@ template outputLaTeX() {
}
return _txt.strip;
}
-string group(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "group") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objGroupOpen
+ string group(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "group") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objGroupOpen
%s
\objGroupClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.footnotes.split(rgx.br_line_spaced).join("\\brl{1}").strip // provides more control (more noise, not as tidy)
- // _txt.footnotes.split(rgx.br_line_spaced).join("") // this works using a line-space, looks tidy, keep ref.
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.footnotes.split(rgx.br_line_spaced).join("\\brl{1}").strip // provides more control (more noise, not as tidy)
+ // _txt.footnotes.split(rgx.br_line_spaced).join("") // this works using a line-space, looks tidy, keep ref.
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
-string block(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "block") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objBlockOpen
+ string block(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "block") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objBlockOpen
%s
\objBlockClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.nbsp_char.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.nbsp_char.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
-string verse(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "verse") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objPoemVerseOpen
+ string verse(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "verse") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objPoemVerseOpen
%s
\objPoemVerseClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.spaces_to_nbsp.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.spaces_to_nbsp.footnotes.split(rgx.br_linebreaks_newlines).join("\\br\n").strip
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
-string codeblock(O,M)(
- string _txt,
- O obj,
- M doc_matters,
-) {
- if (obj.metainfo.is_a == "code") {
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\begin{objCodeBlock}\begin{lstlisting}
+ string codeblock(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ ) {
+ if (obj.metainfo.is_a == "code") {
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\begin{objCodeBlock}\begin{lstlisting}
%s
\end{lstlisting}\end{objCodeBlock}
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _txt.nbsp_char_to_space
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _txt.nbsp_char_to_space
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
-auto tablarize(O)(
- string _txt,
- const O obj,
-) {
- string[] _table_rows = (_txt).split(rgx.table_delimiter_row);
- string[] _table_cols;
- string _table;
- string _tablenote;
- foreach(row_idx, row; _table_rows) {
- _table_cols = row.split(rgx.table_delimiter_col);
- _table ~= "";
- foreach(col_idx, cell; _table_cols) {
- if ((_table_cols.length == 1)
- && (_table_rows.length <= row_idx+2)) { // check row_idx+2 (rather than == ++row_idx)
- _tablenote ~= cell;
- } else {
- // // _table ~= "\\bfseries ";
- // _table ~= cell;
- // _table ~= (_table_cols.length > (col_idx + 1)) ? "&" : "";
- _table ~= format(q"┃%s%s┃",
- cell,
- (_table_cols.length > (col_idx + 1)) ? "&" : ""
- );
+ auto tablarize(O)(
+ string _txt,
+ const O obj,
+ ) {
+ string[] _table_rows = (_txt).split(rgx.table_delimiter_row);
+ string[] _table_cols;
+ string _table;
+ string _tablenote;
+ foreach(row_idx, row; _table_rows) {
+ _table_cols = row.split(rgx.table_delimiter_col);
+ _table ~= "";
+ foreach(col_idx, cell; _table_cols) {
+ if ((_table_cols.length == 1)
+ && (_table_rows.length <= row_idx+2)) { // check row_idx+2 (rather than == ++row_idx)
+ _tablenote ~= cell;
+ } else {
+ // // _table ~= "\\bfseries ";
+ // _table ~= cell;
+ // _table ~= (_table_cols.length > (col_idx + 1)) ? "&" : "";
+ _table ~= format(q"┃%s%s┃",
+ cell,
+ (_table_cols.length > (col_idx + 1)) ? "&" : ""
+ );
+ }
}
+ _table ~= "\\\\";
}
- _table ~= "\\\\";
+ Tuple!(string, string) t = tuple(
+ _table,
+ _tablenote,
+ );
+ return t;
}
- Tuple!(string, string) t = tuple(
- _table,
- _tablenote,
- );
- return t;
-}
-string table(O,M)(
- string _txt,
- O obj,
- M doc_matters,
- string paper_size_orientation,
-) {
- if (obj.metainfo.is_a == "table") {
- auto _t = _txt.tablarize(obj);
- string _table = _t[0];
- string _t_n = _t[1];
- uint pw = 0;
- switch (paper_size_orientation) {
- case "a4.portrait": pw = (paper.a4.portrait.w - 20); break;
- case "a4.landscape": pw = (paper.a4.landscape.w - 20); break;
- case "b4.portrait": pw = (paper.b4.portrait.w - 20); break;
- case "b4.landscape": pw = (paper.b4.landscape.w - 20); break;
- case "a5.portrait": pw = (paper.a5.portrait.w - 20); break;
- case "a5.landscape": pw = (paper.a5.landscape.w - 20); break;
- case "letter.portrait": pw = (paper.letter.portrait.w - 20); break;
- case "letter.landscape": pw = (paper.letter.landscape.w - 20); break;
- case "legal.portrait": pw = (paper.legal.portrait.w - 20); break;
- case "legal.landscape": pw = (paper.legal.landscape.w - 20); break;
- default: pw = 0; break;
- }
- // auto textwidth = (pw - 24);
- string _colw = "";
- foreach (w; obj.table.column_widths) {
- _colw ~= format(q"┃p{%.0fmm}┃",
- (w * pw / 100)
- // (w * (pw - 24)/ 100)
- // (w * textwidth / 100)
- );
- }
- string _tex_para;
- _tex_para = q"┃\ocn{%s}\objTableOpen{%s}
+ string table(O,M)(
+ string _txt,
+ O obj,
+ M doc_matters,
+ string paper_size_orientation,
+ ) {
+ if (obj.metainfo.is_a == "table") {
+ auto _t = _txt.tablarize(obj);
+ string _table = _t[0];
+ string _t_n = _t[1];
+ uint pw = 0;
+ switch (paper_size_orientation) {
+ case "a4.portrait": pw = (paper.a4.portrait.w - 20); break;
+ case "a4.landscape": pw = (paper.a4.landscape.w - 20); break;
+ case "b4.portrait": pw = (paper.b4.portrait.w - 20); break;
+ case "b4.landscape": pw = (paper.b4.landscape.w - 20); break;
+ case "a5.portrait": pw = (paper.a5.portrait.w - 20); break;
+ case "a5.landscape": pw = (paper.a5.landscape.w - 20); break;
+ case "letter.portrait": pw = (paper.letter.portrait.w - 20); break;
+ case "letter.landscape": pw = (paper.letter.landscape.w - 20); break;
+ case "legal.portrait": pw = (paper.legal.portrait.w - 20); break;
+ case "legal.landscape": pw = (paper.legal.landscape.w - 20); break;
+ default: pw = 0; break;
+ }
+ // auto textwidth = (pw - 24);
+ string _colw = "";
+ foreach (w; obj.table.column_widths) {
+ _colw ~= format(q"┃p{%.0fmm}┃",
+ (w * pw / 100)
+ // (w * (pw - 24)/ 100)
+ // (w * textwidth / 100)
+ );
+ }
+ string _tex_para;
+ _tex_para = q"┃\ocn{%s}\objTableOpen{%s}
%s
\objTableClose
┃";
- _txt = format(_tex_para,
- obj.metainfo.object_number,
- _colw,
- _table,
- ).strip;
+ _txt = format(_tex_para,
+ obj.metainfo.object_number,
+ _colw,
+ _table,
+ ).strip;
+ }
+ return _txt;
}
- return _txt;
-}
@safe string bullets_and_indentation(O)(
string _txt,
O obj,
@@ -1022,47 +998,47 @@ string table(O,M)(
}
return _ft;
}
- struct paperMargins {
- string portrait;
- string landscape;
- }
- auto margins = paperMargins();
- struct columnsMulti {
- string portrait;
- string landscape;
- }
- auto multicol = columnsMulti();
- multicol.portrait = format(q"┃
+ struct paperMargins {
+ string portrait;
+ string landscape;
+ }
+ auto margins = paperMargins();
+ struct columnsMulti {
+ string portrait;
+ string landscape;
+ }
+ auto multicol = columnsMulti();
+ multicol.portrait = format(q"┃
\usepackage{multicol}
┃",
- );
- multicol.landscape = "";
- struct colorLinks {
- string mono;
- string color;
- }
- auto links = colorLinks();
- links.mono = format(q"┃
+ );
+ multicol.landscape = "";
+ struct colorLinks {
+ string mono;
+ string color;
+ }
+ auto links = colorLinks();
+ links.mono = format(q"┃
colorlinks=true,
urlcolor=black,
filecolor=black,
linkcolor=black,
citecolor=black,
┃",
- );
- links.color = format(q"┃
+ );
+ links.color = format(q"┃
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,) {
- string paper_type_description;
- if (paper_set.is_portrait) {
- paper_type_description = format(q"┃
-\documentclass[%s,%s,titlepage]{scrartcl}
+ );
+ string set_paper(P)(P paper_set,) {
+ string paper_type_description;
+ if (paper_set.is_portrait) {
+ paper_type_description = format(q"┃
+\documentclass[%s,%s,titlepage,makeidx]{scrartcl}
\usepackage{geometry}
\geometry{
%s,
@@ -1072,18 +1048,18 @@ string table(O,M)(
top=%s,
bottom=%s,
}┃",
- paper_set.fontsize,
- 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}
+ paper_set.fontsize,
+ 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,makeidx]{scrartcl}
\usepackage{geometry}
\geometry{
%s,
@@ -1093,54 +1069,54 @@ string table(O,M)(
top=%s,
bottom=%s,
}┃",
- paper_set.fontsize,
- 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,
- );
+ paper_set.fontsize,
+ 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;
}
- return paper_type_description;
- }
- string paper_size_orientation_latex;
- switch (paper_size_orientation) {
- case "a4.portrait": paper_size_orientation_latex = set_paper(paper.a4.portrait); break;
- case "a4.landscape": paper_size_orientation_latex = set_paper(paper.a4.landscape); break;
- case "b4.portrait": paper_size_orientation_latex = set_paper(paper.b4.portrait); break;
- case "b4.landscape": paper_size_orientation_latex = set_paper(paper.b4.landscape); break;
- case "a5.portrait": paper_size_orientation_latex = set_paper(paper.a5.portrait); break;
- case "a5.landscape": paper_size_orientation_latex = set_paper(paper.a5.landscape); break;
- case "letter.portrait": paper_size_orientation_latex = set_paper(paper.letter.portrait); break;
- case "letter.landscape": paper_size_orientation_latex = set_paper(paper.letter.landscape); break;
- case "legal.portrait": paper_size_orientation_latex = set_paper(paper.legal.portrait); break;
- case "legal.landscape": paper_size_orientation_latex = set_paper(paper.legal.landscape); break;
- default: paper_size_orientation_latex = paper_type_latex.a4_portrait;
- }
- string links_mono_or_color_set = links.mono.strip;
- if (
- (doc_matters.opt.action.latex_color_links)
- || (paper_size_orientation ==
- "a4.landscape" ||
- "a5.landscape" ||
- "b4.landscape" ||
- "letter.landscape" ||
- "legal.landscape")
- ){
- links_mono_or_color_set = links.mono.strip;
- }
- string _latex_head = format(q"┃%%%% spine LaTeX output
+ string paper_size_orientation_latex;
+ switch (paper_size_orientation) {
+ case "a4.portrait": paper_size_orientation_latex = set_paper(paper.a4.portrait); break;
+ case "a4.landscape": paper_size_orientation_latex = set_paper(paper.a4.landscape); break;
+ case "b4.portrait": paper_size_orientation_latex = set_paper(paper.b4.portrait); break;
+ case "b4.landscape": paper_size_orientation_latex = set_paper(paper.b4.landscape); break;
+ case "a5.portrait": paper_size_orientation_latex = set_paper(paper.a5.portrait); break;
+ case "a5.landscape": paper_size_orientation_latex = set_paper(paper.a5.landscape); break;
+ case "letter.portrait": paper_size_orientation_latex = set_paper(paper.letter.portrait); break;
+ case "letter.landscape": paper_size_orientation_latex = set_paper(paper.letter.landscape); break;
+ case "legal.portrait": paper_size_orientation_latex = set_paper(paper.legal.portrait); break;
+ case "legal.landscape": paper_size_orientation_latex = set_paper(paper.legal.landscape); break;
+ default: paper_size_orientation_latex = paper_type_latex.a4_portrait;
+ }
+ string links_mono_or_color_set = links.mono.strip;
+ if (
+ (doc_matters.opt.action.latex_color_links)
+ || (paper_size_orientation ==
+ "a4.landscape" ||
+ "a5.landscape" ||
+ "b4.landscape" ||
+ "letter.landscape" ||
+ "legal.landscape")
+ ){
+ links_mono_or_color_set = links.mono.strip;
+ }
+ string _latex_head = format(q"┃%%%% spine LaTeX output
%%%% Generated by: %s
%%%% D version: %s
%s
%%%% %s %s
%s
%s
+%s
\setlength{\marginparsep}{4mm}
\setlength{\marginparwidth}{8mm}
-%s
\usepackage[T1]{fontenc}
%% \usepackage[utf8]{inputenc}
\usepackage[english]{babel}
@@ -1153,6 +1129,8 @@ string table(O,M)(
\usepackage{alltt}
\usepackage{hyperref}
\hypersetup{
+ unicode=true,
+ pdfusetitle,
pdftitle={%s},
pdfauthor={%s},
pdfsubject={%s},
@@ -1163,8 +1141,13 @@ string table(O,M)(
pdffitwindow=false, %% window fit to page when opened
pdfstartview={FitH}, %% fits the width of the page to the window
pdfnewwindow=true, %% links in new window
+ pdfborder={0 0 1},
plainpages=false, %% was true
+ bookmarks=true,
bookmarksopen=false,
+ bookmarksnumbered=false,
+ backref=false,
+ breaklinks=false,
%% colorlinks=true,
%% urlcolor=black,
%% filecolor=black,
@@ -1184,71 +1167,91 @@ string table(O,M)(
\usepackage[normalem]{ulem}
\usepackage{soul}
\usepackage{longtable}
-\usepackage[tc]{titlepic}
\usepackage{graphicx}
-\makeatletter
-\parindent{0pt}
+\usepackage[tc]{titlepic}
\usepackage{amssymb}
\usepackage{listings}
-\usepackage{color}
-\usepackage{textcomp}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{4}
+\usepackage{bookmark}
+\usepackage{microtype}
\makeatletter
\usepackage[multiple,ragged]{footmisc}
\setlength\footnotemargin{12pt}
\usepackage[para]{manyfoot}
\DeclareNewFootnote{A}
-\newenvironment{ParagraphIndent}[1]%%
-{
-\begin{list}{}{%%
-\setlength\topsep{0pt}%%
-\addtolength{\leftmargin}{#1}
-\setlength\parsep{0pt plus 1pt}%%
-}
-\item[]
-}
-{\end{list}}
-\newenvironment{ParagraphHang}[2]%%
-{
-\begin{list}{}{%%
-\setlength\topsep{0pt}%%
-\addtolength{\leftmargin}{#1}
-\itemindent=#2
-\setlength\parsep{0pt plus 1pt}%%
-}
-\item[]
-}
-{\end{list}}
-\newenvironment{Bullet}[1]%%
-{
-\begin{list}{}{%%
-\setlength\topsep{0pt}%%
-\addtolength{\leftmargin}{#1}
-\itemindent=-1em
-\setlength\parsep{0pt plus 1pt}%%
-}
-\item[]
-$\txtbullet$\hspace{\enspace}
-}
-{\end{list}}
\usepackage{fancyhdr}
-\lhead{}
\selectlanguage{%s}
\lhead[ ]{ }
\chead[ \fancyplain{} \bfseries \footnotesize \leftmark ]{ \fancyplain{} \bfseries \footnotesize \rightmark }
\rhead[ ]{ }
%s
\rfoot[\tiny \href{}{}]{\textrm{\thepage}}
-\tolerance=300
-\clubpenalty=300
-\widowpenalty=300
-\makeatother
+%% \tolerance=300
+%% \clubpenalty=300
+%% \widowpenalty=300
\makeatother
\chardef\txtbullet="2022
\chardef\tilde="7E
\def\asterisk{{\rm \char42} }
\definecolor{Light}{gray}{.92}
+\definecolor{listinggray}{gray}{0.9}
+\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
+\lstset{
+ backgroundcolor=\color{lbcolor},
+ tabsize=4,
+ rulecolor=,
+ language=,
+ basicstyle={\ttfamily\scriptsize},
+ upquote=true,
+ 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},
+}
+\DeclareTOCStyleEntry[numwidth+=8pt]{part}{part}
+\DeclareTOCStyleEntry[numwidth+=4pt]{section}{section}
+\DeclareTOCStyleEntry[numwidth+=3pt]{section}{paragraph}
+\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subparagraph}
+\DeclareTOCStyleEntry[numwidth+=3pt]{section}{subsection}
+\DeclareTOCStyleEntries[indent+=4pt]{section}{section,subsection,subsubsection}
+\DeclareTOCStyleEntries[numwidth+=3pt]{section}{paragraph,subparagraph}
+\newenvironment{ParagraphIndent}[1]{%%
+ \begin{list}{}{%%
+ \setlength\topsep{0pt}%%
+ \addtolength{\leftmargin}{#1}
+ \setlength\parsep{0pt plus 1pt}%%
+ }
+ \item[]
+} {\end{list}}
+\newenvironment{ParagraphHang}[2]{%%
+ \begin{list}{}{%%
+ \setlength\topsep{0pt}%%
+ \addtolength{\leftmargin}{#1}
+ \itemindent=#2
+ \setlength\parsep{0pt plus 1pt}%%
+ }
+ \item[]
+} {\end{list}}
+\newenvironment{Bullet}[1]{%%
+ \begin{list}{}{%%
+ \setlength\topsep{0pt}%%
+ \addtolength{\leftmargin}{#1}
+ \itemindent=-1em
+ \setlength\parsep{0pt plus 1pt}%%
+ }
+ \item[]
+ $\txtbullet$\hspace{\enspace}
+} {\end{list}}
\newcommand{\monosp}[1]{\normaltext\ttfamily\texbackslash#1}
\newcommand{\br}{\hfill\break}
\newcommand{\brl}[1]{%%
@@ -1259,19 +1262,19 @@ $\txtbullet$\hspace{\enspace}
\fi
}
\newcommand{\brln}{\hspace*{\fill}\linebreak}
-\newcomand{\objBlockOpen}{
+\newcommand{\objBlockOpen}{
\setlength{\parskip}{0.5ex plus0.2ex minus0.1ex}\raggedright
\begin{footnotesize}
}
-\newcomand{\objBlockClose}{%%
+\newcommand{\objBlockClose}{%%
\end{footnotesize}
\setlength{\parskip}{1ex plus0.5ex minus0.2ex}
}
-\newcomand{\objGroupOpen}{%%
+\newcommand{\objGroupOpen}{%%
\setlength{\parskip}{0.5ex plus0.2ex minus0.1ex}
\begin{footnotesize}
}
-\newcomand{\objGroupClose}{%%
+\newcommand{\objGroupClose}{%%
\end{footnotesize}
}
\newcommand{\objPoemVerseOpen}{%%
@@ -1285,12 +1288,13 @@ $\txtbullet$\hspace{\enspace}
\setlength{\parskip}{1ex plus0.5ex minus0.2ex}
\linebreak
}
-\newcommand{\parasep}{\smallskip \begin{center}*\hspace{2em}*\hspace{2em}*\end{center} \br}
+\newcommand{\parasep}{%%
+ \smallskip \begin{center}*\hspace{2em}*\hspace{2em}*\end{center} \br
+}
\newcommand{\spaces}[1]{{\hspace*{#1ex}}}
\newcommand{\s}{\hspace*{1ex}}
\newcommand{\hardspace}{\hspace*{1ex}}
\newcommand{\-}{\hspace*{1ex}}
-\newcommand{\..}{\hspace*{1ex}} %% dots trailing
\newcommand{\caret}{{\^{~}}}
\newcommand{\pipe}{{\textbar}}
\newcommand{\curlyOpen}{{}
@@ -1300,18 +1304,25 @@ $\txtbullet$\hspace{\enspace}
\newcommand{\slash}{{/}}
\newcommand{\underscore}{\_}
\newcommand{\exclaim}{\Verbatim{!}}
-\newcommand{\linktext}[2]{{\href{#1}
-{\ulcorner\textup{{#2}}\lrcorner}}}
-\newcommand{\linkurl}[2]{{\href{#1}
-{\scriptsize\ttfamily\ulcorner\textup{{#2}}\lrcorner}}}
-\newcommand{\link}[2]{{\begin{scriptsize}\color{black}\urlstyle{tt}\href{#1}
-{\ulcorner{#2}\lrcorner}\end{scriptsize}}}
+\newcommand{\linktext}[2]{%%
+ {\href{#1}
+ {\;\ulcorner\,\textup{{#2}}\,\lrcorner}}
+}
+\newcommand{\linkurl}[2]{%%
+ \;{\href{#1}
+ {\;\scriptsize\ttfamily\ulcorner\,\textup{{#2}}\,\lrcorner}}
+}
+\newcommand{\link}[2]{%%
+ {\begin{scriptsize}\color{black}\urlstyle{tt}\href{#1}
+ {\;\ulcorner\,{#2}\,\lrcorner}\end{scriptsize}}
+}
\newcommand{\objCodeBlock}[1]{\normaltext\raggedright\small\ttfamily\texbackslash#1}
-\newcommand{\objCodeOpen}{\normaltext\raggedright\small\ttfamily\texbackslash
-\begin{lstlisting}
+\newcommand{\objCodeOpen}{%%
+ \normaltext\raggedright\small\ttfamily\texbackslash
+ \begin{lstlisting}
}
-\newcommand{\objCodeClose}{
-\end{lstlisting}
+\newcommand{\objCodeClose}{%%
+ \end{lstlisting}
}
\newcommand{\ocn}[1]{%%
\setlength{\parindent}{0em}
@@ -1323,61 +1334,40 @@ $\txtbullet$\hspace{\enspace}
\hspace{-0.5ex}{\marginpar{\begin{tiny}\hspace{0em}\hypertarget{#1}{#1}\end{tiny}}}
\fi
}
-\newcommand{\ocnhold}[1]{
-\begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{#1}{#1}\end{tiny}}}
+\newcommand{\ocnhold}[1]{%%
+ \begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{#1}{#1}\end{tiny}}}
}
\newcommand{\objCodeBlockHold}[1]{\normaltext\raggedright\small\ttfamily\texbackslash#1}
-\definecolor{listinggray}{gray}{0.9}
-\definecolor{lbcolor}{rgb}{0.9,0.9,0.9}
-\lstset{
- backgroundcolor=\color{lbcolor},
- tabsize=4,
- rulecolor=,
- language=,
- basicstyle={\ttfamily\scriptsize},
- upquote=true,
- 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},
-}
-\newcommand{\objTableOpen}[1]{
-\setlength{\LTleft}{0pt}
-\setlength{\LTright}{\fill}
-\begin{tiny}
-\begin{longtable}{#1}
+\newcommand{\objTableOpen}[1]{%%
+ \setlength{\LTleft}{0pt}
+ \setlength{\LTright}{\fill}
+ \begin{tiny}
+ \begin{longtable}{#1}
}
-\newcommand{\objTableClose}{
-\end{longtable}
-\end{tiny}
+\newcommand{\objTableClose}{%%
+ \end{longtable}
+ \end{tiny}
}
- ┃",
- doc_matters.opt.action.debug_do_latex ? "" : doc_matters.generator_program.name_and_version.strip,
- doc_matters.opt.action.debug_do_latex ? "" : doc_matters.generator_program.compiler.strip,
- doc_matters.opt.action.debug_do_latex ? "" : "", // "%%%% LaTeX output last Generated on: " ~ doc_matters.generator_program.stime.strip,
- doc_matters.generator_program.project_name.strip,
- doc_matters.generator_program.url_home.strip,
- paper_size_orientation_latex.strip,
- margins.portrait.strip,
- multicol.portrait.strip,
- lang.codes[doc_matters.src.language]["xlp"],
- "english",
- doc_matters.conf_make_meta.meta.title_full.strip,
- doc_matters.conf_make_meta.meta.creator_author.strip,
- doc_matters.conf_make_meta.meta.classify_subject.strip,
- links_mono_or_color_set,
- lang.codes[doc_matters.src.language]["xlp"],
- _footer(doc_matters),
- );
+%% \usepackage{atbegshi} %% http://ctan.org/pkg/atbegshi %% (BUG tmp FIX deal with problem, remove first page which is blank)
+%% \AtBeginDocument{\AtBeginShipoutNext{\AtBeginShipoutDiscard}} %% (BUG tmp FIX deal with problem, remove first page which is blank)
+ ┃",
+ doc_matters.opt.action.debug_do_latex ? "" : doc_matters.generator_program.name_and_version.strip,
+ doc_matters.opt.action.debug_do_latex ? "" : doc_matters.generator_program.compiler.strip,
+ doc_matters.opt.action.debug_do_latex ? "" : "", // "%%%% LaTeX output last Generated on: " ~ doc_matters.generator_program.stime.strip,
+ doc_matters.generator_program.project_name.strip,
+ doc_matters.generator_program.url_home.strip,
+ paper_size_orientation_latex.strip,
+ margins.portrait.strip,
+ multicol.portrait.strip,
+ lang.codes[doc_matters.src.language]["xlp"],
+ "english",
+ doc_matters.conf_make_meta.meta.title_full.strip,
+ doc_matters.conf_make_meta.meta.creator_author.strip,
+ doc_matters.conf_make_meta.meta.classify_subject.strip,
+ links_mono_or_color_set,
+ lang.codes[doc_matters.src.language]["xlp"],
+ _footer(doc_matters),
+ );
return _latex_head.strip;
}
string latex_body(D,M)(
diff --git a/src/doc_reform/meta/metadoc_from_src.d b/src/doc_reform/meta/metadoc_from_src.d
index 5befb23..c9b6fda 100644
--- a/src/doc_reform/meta/metadoc_from_src.d
+++ b/src/doc_reform/meta/metadoc_from_src.d
@@ -881,7 +881,7 @@ template docAbstraction() {
the_document_blurb_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1to4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
- } else {
+ } else if (!(line.empty)) {
an_object = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur);
comp_obj_para = comp_obj_para.init;
comp_obj_para.metainfo.is_of_part = "backmatter";