Files
klammertext/sks/block/block.k
Andy Kopra d61336b191 Escaping, table layout, and document fixes
Quoted Klammertext specials (^@ ^| ^# ^^ ^: ^*) and ^'...'^ regions now
survive re-processing (held as escape markers until final output);
:after_apply phase functions receive and return raw target text.

Tables: :hpos element position (center|left|right|<length>) replaces the
unimplemented :center/:indent; the ranged cell override is renamed
:justify; :column_width works in html (colgroup widths) and gains
'fill' -- the remaining width, capped at the column's widest entry, in
both targets; a table wider than the text column warns on the console;
table edges without an outer line set their text flush on the margins.

@document: no empty title bar for untitled documents; @vfill fills to
the bottom of the window in html (pure CSS); @vspace in plain text;
new @dot klammer; monospace email links.
2026-07-25 21:16:21 +02:00

129 lines
2.9 KiB
Plaintext

@@sp.k : Non-breaking space character @@
@@sp.html :: &^#160; @@
@@sp.tex :: ~ @@
@@footnote.k s : Footnote (TBD) @@
@@footnote :: [*s*] @@
@@indent.k s :w.int 3 :linebreak.bool false : Indented block @@
@@indent :: @eval block.Indent(K) eval@ @@
@@quote.k s :w.int 1 :source : Quotation block @@
@@quote.html ::
<div class="quote">
*s*
</div>
@@
@@quote.tex ::
ANDY: QUOTE: *s*
#[
\hspace*{@{justify.length_mul("|margin|", 1, 'latex')}@}
\begin{minipage}{\textwidth- @{justify.length_mul("|margin|", 2, 'latex')}@ }
\raggedright
|text|
@? """|source|""" |?
\vspace*{6pt}
{\begin{spacing}{1.1}\footnotesize\raggedleft |source| \end{spacing}}
?@
\end{minipage}
]#
@@
@@quote.txt ::
@eval block.block_indent(K) eval@
@@
@@note.k s :label Note :color 1.0,1.0,0.9 :bordercolor 0.2,0.2,0.2 :level.int 0 :width
: Rectangular block for a special note @@
@@note :: @eval block.Note(K) eval@ @@
@@center.k s : Center text @@
@@center.tex ::
\begin{center}
*s*
\end{center}
@@
@@center.html ::
<div class="center">
*s*
</div>
@@
@@right.k s : Right-justified text @@
@@right.html ::
<b>TBD</b> *s*
@@
@@right.tex ::
\begin{flushright}
*s*
\end{flushright}
@@
@@nl.k : Newline character @@
@@nl.html :: <br> @@
@@nl.tex :: \newline @@
@@nl.txt :: \n @@
@@tnl.k : Table newline (deprecated; check) @@
@@tnl.html :: <br> @@
@@tnl.tex :: \\\\ @@
@@tnl.txt :: \n @@
@@newpage.k : Start new page @@
@@newpage.html :: @@
@@newpage.tex :: \newpage @@
@@newpage.txt :: @@
@@extendpage.k linecount : Extenad current page @@
@@extendpage.html :: @@
@@extendpage.tex :: \enlargethispage{*linecount*\baselineskip} @@
@@extendpage.txt :: @@
@@vspace.k lines.float : Vertical space, in multiples of the current line height @@
@@vspace.tex :: \vspace{*lines*\baselineskip} @@
@@vspace.html :: <div style="height: *lines*lh"></div> @@
@@vspace.txt :: @eval "__VSPACE__" * round(*lines*) @ @@
@@vfill.k :
Fill the vertical space so that any following text is flush with the bottom
of the page (in HTML, the bottom of the window; once the content is taller
than the window the space collapses, as on a full LaTeX page). Several
vfills divide the space equally, like LaTeX's \vfill glue. In plain text,
only makes some vertical space. @@
@@vfill.tex :: \vfill @@
# An empty glue div; block.css gives it flex-grow 1 and makes the text
# column a flex column only in documents that use it (the :has() rule).
@@vfill.html :: <div class="vfill"></div> @@
@@vfill.txt :: @vspace 3 @ @@
@@qa.k question | answer : Question and answer formatting @@
@@qa ::
@b Q: @ *question*
@b A: @ *answer*
@@
@@@argtype coords | x and y coordinates :pattern 'float'\s+'float' @@@
@@block.k : to.coords | content :width.float .5 :point.coords 0.0 0.0
: Absolute positioning of text block @@
@@block :: @eval block.Block(K) eval@ @@
@@lines.k s : Maintain line breaks @@
@@lines :: @eval block.Lines(K) eval@ @@
@@twocolumns.tex s :
\begin{multicols}{2}
*s*
\end{multicols}
@@