Offer-motivated features: :hline defaults, ranged :hpos, @date :days, :bottom none

- @table: a writer's :hline/:vline replaces the default lines; new
  boundary name 'none' removes all lines
- @table: ranged :hpos argument overrides :cell_hpos per cell
  (\multicolumn{1} in tex; positions a colspan anchor's merged cell)
- @date/@datetime: :days offset argument (sks/date/date.py)
- @document: ":bottom none" suppresses the footer (\pagestyle{empty})

Also carries the escape-system generator/renderer fixes, per-cell-range
:format, and uppercase .TTF/.OTF font recognition from klammertext-dev.
This commit is contained in:
2026-07-24 21:37:58 +02:00
parent 8a2699a253
commit 4262fc6136
14 changed files with 657 additions and 146 deletions

View File

@@ -192,7 +192,10 @@ namespace latex {
ss << "\\newcommand{\\documenttwocolumn}{" << (two_column ? "true" : "false") << "}\n";
ss << "\\newcommand{\\documentlandscape}{" << (landscape ? "true" : "false") << "}\n";
ss << "\\newcommand{\\documentisbook}{" << (book_format ? "true" : "false") << "}\n";
if (!bottom.empty()) {
// ":bottom none" suppresses the footer entirely: no \documentbottom,
// and \pagestyle{empty} replaces the sks page styles below.
bool no_footer = (bottom == "none");
if (!bottom.empty() && !no_footer) {
ss << "\\newcommand{\\documentbottom}{" << bottom << "}\n";
}
@@ -255,7 +258,7 @@ namespace latex {
ss << book_verso_page(copyright);
// Table of contents (starts on page iii, recto)
ss << "\\pagestyle{noheader}\n"
ss << "\\pagestyle{" << (no_footer ? "empty" : "noheader") << "}\n"
<< "\\tableofcontents\n";
// Advance to the next recto page for the body.
@@ -270,9 +273,13 @@ namespace latex {
ss << "\\clearpage\n"
<< "\\thispagestyle{empty}\\mbox{}\\clearpage\n"
<< "\\pagenumbering{arabic}\n"
<< "\\pagestyle{sksbook}\n";
<< "\\pagestyle{" << (no_footer ? "empty" : "sksbook") << "}\n";
} else {
ss << "\\pagestyle{sks" << structure << "}\n\n";
if (no_footer) {
ss << "\\pagestyle{empty}\n\n";
} else {
ss << "\\pagestyle{sks" << structure << "}\n\n";
}
// Plain or article: title block with optional copyright footnote
if (!copyright.empty()) {
ss << "\\renewcommand{\\thefootnote}{}\n";