From d65c208b161ffee9ce5343fdfdb17d00523cecae Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 20 Apr 2021 03:00:55 +0000 Subject: CTAN sync 202104200300 --- macros/luatex/optex/base/parameters.opm | 588 -------------------------------- 1 file changed, 588 deletions(-) delete mode 100644 macros/luatex/optex/base/parameters.opm (limited to 'macros/luatex/optex/base/parameters.opm') diff --git a/macros/luatex/optex/base/parameters.opm b/macros/luatex/optex/base/parameters.opm deleted file mode 100644 index c8df6eec49..0000000000 --- a/macros/luatex/optex/base/parameters.opm +++ /dev/null @@ -1,588 +0,0 @@ -%% This is part of the OpTeX project, see http://petr.olsak.net/optex - -\_codedecl \normalbaselineskip {Parameter settings <2020-03-17>} % preloaded in format - - \_doc ----------------------------- - \secc Primitive registers - The primitive registers with the same default value as in plain \TeX/ follow: - \_cod ----------------------------- - -\_parindent=20pt % indentation of paragraphs -\_pretolerance=100 % parameters used in paragraph breaking algorithm -\_tolerance=200 -\_hbadness=1000 -\_vbadness=1000 -\_doublehyphendemerits=10000 -\_finalhyphendemerits=5000 -\_adjdemerits=10000 -\_uchyph=1 -\_defaulthyphenchar=`\- -\_defaultskewchar=-1 -\_hfuzz=0.1pt -\_vfuzz=0.1pt -\_overfullrule=5pt -\_linepenalty=10 % penalty between lines inside the paragraph -\_hyphenpenalty=50 % when a word is bro-ken -\_exhyphenpenalty=50 % when the hyphenmark is used explicitly -\_binoppenalty=700 % between binary operators in math -\_relpenalty=500 % between relations in math -\_brokenpenalty=100 % after lines if they end by a broken word. -\_displaywidowpenalty=50 % before last line of paragraph if display math follows -\_predisplaypenalty=10000 % above display math -\_postdisplaypenalty=0 % below display math -\_delimiterfactor=901 % parameter for scaling delimiters -\_delimitershortfall=5pt -\_nulldelimiterspace=1.2pt -\_scriptspace=0.5pt -\_maxdepth=4pt -\_splitmaxdepth=\_maxdimen -\_boxmaxdepth=\_maxdimen -\_parskip=0pt plus 1pt -\_abovedisplayskip=12pt plus 3pt minus 9pt -\_abovedisplayshortskip=0pt plus 3pt -\_belowdisplayskip=12pt plus 3pt minus 9pt -\_belowdisplayshortskip=7pt plus 3pt minus 4pt -\_parfillskip=0pt plus 1fil -\_thinmuskip=3mu -\_medmuskip=4mu plus 2mu minus 4mu -\_thickmuskip=5mu plus 5mu - - \_doc ----------------------------- - Note that `\topskip` and `\splittopskip` are changed when first - `\typosize` sets the main values (default font size and default - `\baselineskip`). - \_cod ----------------------------- - -\_topskip=10pt % top edge of page-box to first baseline distance -\_splittopskip=10pt - - \_doc ----------------------------- - \secc Plain \TeX/ registers - Declared registers used in plain \TeX/ - \_cod ----------------------------- - -% We also define special registers that function like parameters: -\_newskip\_smallskipamount \_smallskipamount=3pt plus 1pt minus 1pt -\_newskip\_medskipamount \_medskipamount=6pt plus 2pt minus 2pt -\_newskip\_bigskipamount \_bigskipamount=12pt plus 4pt minus 4pt -\_newskip\_normalbaselineskip \_normalbaselineskip=12pt -\_newskip\_normallineskip \_normallineskip=1pt -\_newdimen\_normallineskiplimit \_normallineskiplimit=0pt -\_newdimen\_jot \_jot=3pt -\_newcount\_interdisplaylinepenalty \_interdisplaylinepenalty=100 -\_newcount\_interfootnotelinepenalty \_interfootnotelinepenalty=100 - -\_def\_normalbaselines{\_lineskip=\_normallineskip - \_baselineskip=\_normalbaselineskip \_lineskiplimit=\_normallineskiplimit} - -\_def\_frenchspacing{\_sfcode`\.=1000 \_sfcode`\?=1000 \_sfcode`\!=1000 - \_sfcode`\:=1000 \_sfcode`\;=1000 \_sfcode`\,=1000 } -\_def\_nonfrenchspacing{\_sfcode`\.=3000 \_sfcode`\?=3000 \_sfcode`\!=3000 - \_sfcode`\:=2000 \_sfcode`\;=1500 \_sfcode`\,=1250 } - -\_public \normalbaselines \frenchspacing \nonfrenchspacing - \smallskipamount \medskipamount \bigskipamount - \normalbaselineskip \normallineskip \normallineskiplimit - \jot \interdisplaylinepenalty \interfootnotelinepenalty ; - - \_doc ----------------------------- - \secc Different settings than in plain \TeX/ - - Default \"baseline setting" is for 10\,pt fonts (like in plain \TeX/). - But `\typosize` and `\typoscale` macros re-declare it if another font size is used. - - The \`\nonfrenchspacing` is not set by default because - the author of \OpTeX/ is living in Europe. - If you set `\enlang` hyphenation patterns then `\nonfrenchspacing` - is set. - \_cod ----------------------------- - -\_normalbaselines % baseline setting, 10 pt font size - - \_doc ----------------------------- - Different values than in plain \TeX/ have the following primitive registers. - We prohibit orphans, set more information for tracing boxes, set page origin - to the upper left corner of the paper (no at 1\,in, 1\,in coordinates) - and set default page dimensions as A4, no letter. - \_cod ----------------------------- - -\_emergencystretch=20pt % we want to use third pass of paragraph building algoritmh - % we need not keep the compatibility with old documents - -\_clubpenalty=10000 % after first line of paragraph -\_widowpenalty=10000 % before last line of paragraph - -\_showboxbreadth=150 % for tracing boxes -\_showboxdepth=7 -\_errorcontextlines=15 -\_tracinglostchars=2 % missing chracter warnings on terminal too - -\_outputmode=1 % PDF ouput -\_pdfvorigin=0pt % orgin is exatly at left upper corner -\_pdfhorigin=0pt -\_hoffset=25mm % margins are 2.5cm, no 1in -\_voffset=25mm -\_hsize=160mm % 210mm (from A4 size) - 2*25mm (default margins) -\_vsize=244mm % 297mm (from A4 size) - 2*25mm (default margins) -3mm baseline correction -\_pagewidth=210 true mm -\_pageheight=297 true mm - - \_doc ----------------------------- - If you insist on plain \TeX/ values of these parameters then you can - call the `\plaintexsetting` macro. - \_cod ----------------------------- - -\_def\_plaintexsetting{% - \_emergencystretch=0pt - \_clubpenalty=150 - \_widowpenalty=150 - \_pdfvorigin=1in - \_pdfhorigin=1in - \_hoffset=0pt - \_voffset=0pt - \_hsize=6.5in - \_vsize=8.9in - \_pagewidth=8.5 true in - \_pageheight=11 true in - \_nonfrenchspacing -} -\_public \plaintexsetting ; - - \_doc ----------------------------- - \secc[oparams] \OpTeX/ parameters - - The main principle of how to configure \OpTeX/ is not to use only parameters. - A designer can copy macros from \OpTeX/ and re-define them as required. - This is a reason why we don't implement dozens of parameters, - but we keep \OpTeX/ macros relatively simple. Example: do you want - another design of section titles? Copy macros `\_printsec` and - `\_printsecc` from `sections.opm` file to your macro file and re-define them. - - Notice for OPmac users: there is an important difference: all "string-like" - parameters are token lists in \OpTeX/ (OPmac uses macros for them). The reason of - this difference: if a user sets parameter by unprefixed (public) control sequence, - an \OpTeX/ macro can read {\em the same data} using a prefixed (private) control sequence. - - The \`\picdir` tokens list can include a directory where image files - (loaded by `\inspic`) are saved. Empty `\picdir` (default value) means - that image files are in the current directory (or somewhere in the \TeX/ - system where \LuaTeX/ can find them). If you set a non-empty value to - the `\picdir`, then it must end by `/` character, for example - `\picdir={img/}` means that there exists a directory `img` in your - current directory and the image files are stored here. - \_cod ----------------------------- - -\_newtoks\_picdir -\_public \picdir ; - - \_doc ----------------------------- - You can control the dimensions of included images by - the parameters \`\picwidth` (which is equivalent to \`\picw`) and - \`\picheight`. By default these parameters are set to zero: the native - dimension of the image is used. If only `\picwidth` has a nonzero value, - then this is the width of the image (height is calculated automatically in - order to respect the aspect of the image). If only `\picheight` has - a nonzero value then the height is given, the width is calculated. If both - parameters are non-zero, the height and width are given and the aspect - ratio of the image is (probably) broken. We recommend setting these - parameters locally in the group where \^`\inspic` is used in order to not - influence the dimensions of other images. But there exist many - situations you need to put the same dimensions to more images, - so you can set this parameter only once before more \^`\inspic` macros. - \_cod ----------------------------- - -\_newdimen\_picwidth \_picwidth=0pt \_let\picw=\_picwidth -\_newdimen\_picheight \_picheight=0pt -\_public \picwidth \picheight ; - - \_doc ----------------------------- - The \`\everytt` is the token list used in - \^`\begtt`...\^`\endtt` environment and - in the verbatim group opened by \^`\verbinput` macro. You can include a - code which is processed inside the group after basic settings were done - On the other hand, it is processed before the scanner of verbatim text is started. - Your macros should influence scanner (catcode settings) or printing - process of the verbatim code or both. - - The code from the line immediately after \^`\begtt` is processed after - the \^`\everytt`. This code should overwrite \^`\everytt` settings. Use - \^`\everytt` for all verbatim environments in your document and use a code - after \^`\begtt` locally only for this environment. - - The \`\everyintt` token list does similar work - but acts in the in-line verbatim - text processed by a pair of \^`\verbchar` characters or by \^`\code``{}`. - You can set `\everyintt={\Red}` for example if you want in-line verbatim - in red color. - \_cod ----------------------------- - -\_newtoks\_everytt -\_newtoks\_everyintt -\_public \everytt \everyintt ; - - \_doc ----------------------------- - The \`\ttline` is used - in \^`\begtt`...\^`\endtt` environment or in the code - printed by \^`\verbinput`. If `\ttline` is positive or zero, then the - verbatim code has numbered lines from `\ttline+1`. The `\ttline` - register is re-set to a new value after a code piece is printed, so next - code pieces have numbered lines continuously. If `\ttline=-1`, then - \^`\begtt`...\^`\endtt` lines are without numbers and \^`\verbinput` lines - show the line numbers of inputted file. If `\ttline`\code{<-1} - then no line numbers are printed. - \_cod ----------------------------- - -\_newcount\_ttline \_ttline=-1 % last line number in \begtt...\endtt -\_public \ttline ; - - \_doc ----------------------------- - The \`\ttindent` gives default indentation - of verbatim lines printed by \^`\begtt`...\^`\endtt` pair or by - \^`\verbinput`. - \nl - The \`\ttshift` gives the amount of shift of all verbatim lines to the right. - Despite the \^`\ttindent`, it does not shift the line numbers, only - the text. - \nl - The \`\iindent` gives default indentations used in the table of contents, - captions, lists, bib references, - \nl - It is strongly recommended to re-set this value if you set `\parindent` - to another value than plain \TeX/ default 20pt. A well-typeset - document should have the same dimension for all indentations, so - you should say `\ttindent=\parindent` and `\iindent=\parindent`. - \_cod ----------------------------- - -\_newdimen\_ttindent \_ttindent=\_parindent % indentation in verbatim -\_newdimen\_ttshift -\_newdimen\_iindent \_iindent=\_parindent -\_public \ttindent \ttshift \iindent ; - - \_doc ----------------------------- - The tabulator `^^I` has its category code like space: it behaves as a - space in normal text. This is a common plain \TeX/ setting. - But in the multiline verbatim environment it - is active and expands to the `\hskip` where `` - is the width of \`\tabspaces` spaces. - Default `\tabspaces=3` means - that tabulator behaves like three spaces in multiline verbatim. - \_cod ----------------------------- - -\_newcount \_tabspaces \_tabspaces=3 -\_public \tabspaces ; - - \_doc ----------------------------- - If \`\hicolors` is non-empty then its contents is used instead - `\_hicolors` declared in the file `hisyntax-.opm`. - The user can give his/her preferences about colors for - syntax highlighting by this tokens list. - The full color set must be declared here. - \_cod ----------------------------- - -\_newtoks\_hicolors -\_public \hicolors ; - - \_doc ----------------------------- - The default item mark used between \^`\begitems` and \^`\enditems` is the bullet. - The \`\defaultitem` tokens list declares this default item mark. - \nl - The \`\everyitem` tokens list is applied in vertical mode - at the start of each item. - \nl - The \`\everylist` tokens list is applied after the group is opened by \^`\begitems` - \nl - The \`\ilevel` keeps the value of the current nesting level of the items list. - \nl - The \`\listskipamount` gives vertical skip above and below the items list - if `\ilevel=1`. - \_cod ----------------------------- - -\_newtoks\_defaultitem \_defaultitem={$\_bullet$\_enspace} -\_newtoks\_everyitem -\_newtoks\_everylist -\_newskip \_listskipamount \_listskipamount=\_medskipamount -\_newcount \_ilevel -\_public \defaultitem \everyitem \everylist \listskipamount \ilevel ; - - \_doc ----------------------------- - The \^`\tit` macro includes `\vglue`\`\titskip` above the title of the document. - \_cod ----------------------------- - -\_newskip\_titskip \_titskip=40pt \_relax % \vglue above title printed by \tit -\_public \titskip ; - - \_doc ---------------------------- - The \^`\begmulti` and \^`\endmulti` pair creates more columns. The parameter - \`\colsep` declares the space between columns. If $n$ columns are specified - then we have $n-1$ `\colseps` and $n$ columns in total `\hsize`. This - gives the definite result of the width of the columns. - \_cod ---------------------------- - -\_newdimen\_colsep \_colsep=20pt % space between columns -\_public \colsep ; - - \_doc ----------------------------- - Each line in the Table of contents is printed in a group. - The \`\everytocline` tokens list is processed here before - the internal `\_tocl:` macro which starts printing the line. - \_cod ----------------------------- - -\_newtoks \_everytocline -\_public \everytocline ; - - \_doc ----------------------------- - The \`\bibtexhook` tokens list is used inside the group when `\usebib` command is - processed after style file is loaded and before printing bib-entries. - You can re-define a behavior of the style file here or you can modify the - more declaration for printing (fonts, baselineskip, etc.) or you can - define specific macros used in your `.bib` file. - \_cod ----------------------------- - -\_newtoks\_bibtexhook -\_public \bibtexhook ; - - \_doc ----------------------------- - \`\everycapitonf` is used before printing caption in figures and - \`\everycapitont` is used before printing caption in tables. - \_cod ----------------------------- - -\_newtoks\_everycaptiont \_newtoks\_everycaptionf -\_public \everycaptiont \everycaptionf ; - - \_doc ----------------------------- - The \`\everyii` tokens list is used before `\noindent` for each - Index item when printing the Index. - \_cod ----------------------------- - -\_newtoks\_everyii -\_public \everyii ; - - \_doc ----------------------------- - The \`\everymnote` is used in the \^`\mnote` group before `\noindent` which - immediately precedes marginal note text. - \nl - The \`\mnotesize` is the horizontal size of the marginal notes. - \nl - The \`\mnoteindent` is horizontal space between body-text and marginal note. - \_cod ----------------------------- - -\_newtoks\_everymnote -\_newdimen\_mnotesize \_mnotesize=20mm % the width of the mnote paragraph -\_newdimen\_mnoteindent \_mnoteindent=10pt % ditance between mnote and text -\_public \everymnote \mnotesize \mnoteindent ; - - \_doc ----------------------------- - The \^`\table` parameters follow. The \`\thistable` tokens list - register should be used for giving an exception for only one `\table` - which follows. It should change locally other parameters of the `\table`. - It is reset to an empty list after the table is printed. - \nl - The \`\everytable` tokens list register is applied in every table. - There is another difference between these two registers. - The `\thistable` is used first, then strut and baselineskip settings are - done, then `\everytable` is applied and then the table is printed. - \nl - \`\tabstrut` configures the height and depth of lines in the table. - You can declare `\tabstrut={}`, then normal baselineskip is used in the - table. This can be used when you don't use horizontal nor vertical - lines in tables. - \nl - \`\tabiteml` is applied before each item, - \`\tabitemr` is applied after each item of the table. - \nl - \`\tablinespace` is additional vertical space between horizontal rules - and the lines of the table. - \nl - \`\hhkern` gives the space between horizontal lines if they are doubled and - \`\vvkern` gives the space between such vertical lines. - \nl - \`\tabskipl` is `\tabskip` used before first column, - \`\tabskipr` is `\tabskip` used after the last column. - \nl - \`\tsize` is virtual unit of the width of paragraph-like table items when - `\table pxto` is used. - \_cod ----------------------------- - -\_newtoks\_everytable \_newtoks\_thistable -\_newtoks\_tabiteml \_newtoks\_tabitemr \_newtoks\_tabstrut -\_newdimen\_tablinespace \_newdimen\_vvkern \_newdimen\_hhkern \_newdimen\_tsize -\_newskip\_tabskipl \_newskip\_tabskipr -\_everytable={} % code used after settings in \vbox before table processing -\_thistable={} % code used when \vbox starts, is is removed after using it -\_tabstrut={\_strut} -\_tabiteml={\_enspace} % left material in each column -\_tabitemr={\_enspace} % right material in each column -\_tablinespace=2pt % additional vertical space before/after horizontal rules -\_vvkern=1pt % space between double vertical line and used in \frame -\_hhkern=1pt % space between double horizontal line and used in \frame -\_tabskipl=0pt\_relax % \tabskip used before first column -\_tabskipr=0pt\_relax % \tabskip used after the last column -\_public \everytable \thistable \tabiteml \tabitemr \tabstrut \tablinespace - \vvkern \hhkern \tsize \tabskipl \tabskipr ; - - \_doc ----------------------------- - The \^`\eqalign` macro can be configured by \`\eqlines` and \`\eqstyle` - tokens lists. The default values are set in order these macro beahaves - as in Plain \TeX. The \`\eqspace` is horizontal space put - between equation systems if more columns in \^`\eqalign` are used. - \_cod ----------------------------- - -\_newtoks \_eqlines \_eqlines={\_openup\_jot} -\_newtoks \_eqstyle \_eqstyle={\_strut\_displaystyle} -\_newdimen \_eqspace \_eqspace=20pt -\_public \eqlines \eqstyle \eqspace ; - - \_doc ----------------------------- - \`\lmfil` is \"left matrix filler" (for `\matrix` columns). The default - value does centering because the right matrix filler is directly set to `\hfil`. - \_cod ----------------------------- - -\_newtoks \_lmfil \_lmfil={\_hfil} -\_public \lmfil ; - - \_doc ----------------------------- - The output routine uses token list \`\headline` and \`\footline` in the - same sense as in plain \TeX/. If they are non-empty then `\hfil` or `\hss` - must be here because they are used inside `\hbox to\hsize`. - - Assume that page-body text can be typeset in different sizes and - different fonts and we don't know in what font context the output routine - is invoked. So, it is strongly recommended to declare fixed variants of - fonts at the beginning of your document. For example `\fontdef\rmfixed{\rm}`, - `\fontdef\itfixed{\it}`. Then use them in headline and footline: - \begtt - \headline={\itfixed Text of headline, section: \fistmark \hss} - \footline={\rmfixed \ifodd\pageno \hfill\fi \folio \hfil} - \endtt - \_cod ----------------------------- - -\_newtoks\_headline \_headline={} -\_newtoks\_footline \_footline={\_hss\_rmfixed \_folio \_hss} -\_public \headline \footline ; - - \_doc ----------------------------- - The distance between the `\headline` and the top of the page text - is controlled by the \`\headlinedist` register. - The distance between the bottom of - page-text and `\footline` is \`\footlinedist`. - More precisely: baseline of - headline and baseline of the first line in page-text have distance - `\headlinedist+\topskip`. The baseline of the last line in page-text and - the baseline of the footline have distance `\footlinedist`. - Default values are inspired by plain \TeX/. - \_cod ----------------------------- - -\_newdimen \_headlinedist \_headlinedist=14pt -\_newdimen \_footlinedist \_footlinedist=24pt -\_public \headlinedist \footlinedist ; - - \_doc ----------------------------- - The \`\pgbottomskip` is inserted to the page bottom - in the output routine. You can set less tolerance here than - `\raggedbotom` does. By default, no tolerance is given. - \_cod ----------------------------- - -\_newskip \_pgbottomskip \_pgbottomskip=0pt \_relax -\_public \pgbottomskip ; - - \_doc ----------------------------- - The \`\nextpages` tokens list can include settings which will be used at - next pages. It is processed at the end of output routine with - `\globaldefs=1` prefix. The `\nextpages` is reset to empty after - processing. Example of usage: - \begtt - \headline={} \nexptages={\headline={\rmfixed \firstmark \hfil}} - \endtt - This example sets current page with empty headline, but next pages have - non-empty headlines. - \_cod ----------------------------- - -\_newtoks \_nextpages -\_public \nextpages ; - - \_doc ----------------------------- - The \`\pgbackground` token list can include macros which generate a - vertical list. It is used as page background. The top-left corner of such - `\vbox` is at the top-left corner of the paper. Example creates the - background of all pages yellow: - \begtt - \pgbackground={\Yellow \hrule height 0pt depth\pdfpageheight width\pdfpagewidth} - \endtt - \_cod ----------------------------- - -\_newtoks \_pgbackground \_pgbackground={} % for page background -\_public \pgbackground ; - - \_doc ----------------------------- - The parameters used in \^`\inoval` and \^`\incircle` macros - can be re-set by \`\ovalparams`, \`\circleparams` tokens lists. - The default values (documented in the user manual) are set in the macros. - \_cod ----------------------------- - -\_newtoks \_ovalparams -\_newtoks \_circleparams -%\_ovalparams={\_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp -% \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt } -%\_circleparams={\_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp -% \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt} - -\_newdimen \_roundness \_roundness=5mm % used in \clippingoval macro - -\_public \ovalparams \circleparams \roundness ; - - \_doc ----------------------------- - \OpTeX/ defines \"Standard \OpTeX/ markup language"% - \fnote{Will be developed in 2021.} - which lists selected commands from chapter~1 and gives their behavior when a - converter from \OpTeX/ document to HTML or Markdown or \LaTeX/ is used. - The structure-oriented commands are selected here, but the commands which - declare typographical appearance (page layout, dimensions, selected font - family) are omitted. More information for such a converter should be - given in \`\cnvinfo``{}`. - \OpTeX/ simply ignores this but the converter can read its configuration - from here. For example, a user can write: - \begtt \catcode`\<=13 - \cnvinfo {type=html, } - \cnvinfo {type=markdown, } - \endtt - and the document can be processed by \OpTeX/ to create PDF, or by a - converter to create HTML, or by another converter to create Markdown. - \_cod ----------------------------- - -\_let\cnvinfo=\_ignoreit - - -\_endcode %---------------------------------------------------- - -The behavior of document processing by \OpTeX/ is -controlled by {\em parameters}. The parameters are -\begitems -* primitive registers used in build-in algorithms of \TeX/, -* registers declared and used by \OpTeX/ macros. -\enditems -Both groups of registers have their type: number, dimension, skip, token -list. - -The registers are represented by their names (control sequences). If the user -re-defines this control sequence then the appropriate register exists -steadily and build-in algorithms are using it without change. But user -cannot access its value in this case. \OpTeX/ declares two control sequences -for each register: prefixed (private) and unprefixed (public). \OpTeX/ macros use only -prefixed variants of control sequences. The user should use the unprefixed variant -with the same meaning and set or read the values of registers using the -unprefixed variant. If the user re-defines the unprefixed control sequence of -a register then \OpTeX/ macros still work without change. - -%There are only a few parameters declared by \OpTeX/ macros. All of them -%are listed in this section. This is the desired feature of the \OpTeX/. -%If you want to do more -%changes which cannot be controlled by parameters listed here then you -%can copy the appropriate \OpTeX/ macro to your macro file and you -%can completely re-define it. The typical examples are `\_printsomething` -%macros which declare the design of the document. - -\_endinput - -History: -2020-04-04 ... \tabspaces added -2020-04-03 ... \hicolors added -- cgit v1.2.3