summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-01-15 03:05:16 +0000
committerNorbert Preining <norbert@preining.info>2021-01-15 03:05:16 +0000
commitbdead7ff97ef61cca4f56b4a153cc85e18c41fda (patch)
tree8637c036f7a9879c7af64b7b9de8fa82d06e8b1d /macros
parenta607bd31ca2f248c3553f46abe08f9bc257390d8 (diff)
CTAN sync 202101150305
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/easybook/README.md4
-rw-r--r--macros/latex/contrib/easybook/doc/easybook-demo.pdfbin308559 -> 308552 bytes
-rw-r--r--macros/latex/contrib/easybook/doc/easybook-demo.tex8
-rw-r--r--macros/latex/contrib/easybook/doc/easybook.pdfbin229049 -> 230898 bytes
-rw-r--r--macros/latex/contrib/easybook/doc/easybook.tex10
-rw-r--r--macros/latex/contrib/easybook/easybook.cls24
-rw-r--r--macros/latex/contrib/fcolumn/README24
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.dtx438
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.ins8
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.pdfbin281502 -> 318761 bytes
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.sty299
-rw-r--r--macros/latex/contrib/fcolumn/makefile18
-rw-r--r--macros/latex/contrib/readablecv/README.md24
-rw-r--r--macros/latex/contrib/readablecv/ReadableCV.cls188
-rw-r--r--macros/latex/contrib/readablecv/ReadableCV.pdfbin94148 -> 135615 bytes
-rw-r--r--macros/latex/contrib/readablecv/ReadableCV.tex141
-rw-r--r--macros/luatex/optex/README8
-rw-r--r--macros/luatex/optex/base/alloc.opm28
-rw-r--r--macros/luatex/optex/base/basic-macros.opm52
-rw-r--r--macros/luatex/optex/base/bib-iso690.opm237
-rw-r--r--macros/luatex/optex/base/bib-simple.opm2
-rw-r--r--macros/luatex/optex/base/cite-bib.opm60
-rw-r--r--macros/luatex/optex/base/colors.opm126
-rw-r--r--macros/luatex/optex/base/doc.opm84
-rw-r--r--macros/luatex/optex/base/f-adventor.opm2
-rw-r--r--macros/luatex/optex/base/f-antt.opm2
-rw-r--r--macros/luatex/optex/base/f-baskerville.opm2
-rw-r--r--macros/luatex/optex/base/f-bonum.opm2
-rw-r--r--macros/luatex/optex/base/f-comicneue.opm2
-rw-r--r--macros/luatex/optex/base/f-cursor.opm2
-rw-r--r--macros/luatex/optex/base/f-dejavu.opm2
-rw-r--r--macros/luatex/optex/base/f-ebgaramond.opm2
-rw-r--r--macros/luatex/optex/base/f-garamondl.opm2
-rw-r--r--macros/luatex/optex/base/f-gfsbodoni.opm2
-rw-r--r--macros/luatex/optex/base/f-heros.opm81
-rw-r--r--macros/luatex/optex/base/f-kerkis.opm2
-rw-r--r--macros/luatex/optex/base/f-kpfonts.opm2
-rw-r--r--macros/luatex/optex/base/f-libertine-s.opm2
-rw-r--r--macros/luatex/optex/base/f-libertine.opm2
-rw-r--r--macros/luatex/optex/base/f-libertinus.opm2
-rw-r--r--macros/luatex/optex/base/f-lido.opm4
-rw-r--r--macros/luatex/optex/base/f-lmfonts.opm30
-rw-r--r--macros/luatex/optex/base/f-merriweather.opm2
-rw-r--r--macros/luatex/optex/base/f-pagella.opm2
-rw-r--r--macros/luatex/optex/base/f-poltawski.opm2
-rw-r--r--macros/luatex/optex/base/f-roboto.opm2
-rw-r--r--macros/luatex/optex/base/f-schola.opm2
-rw-r--r--macros/luatex/optex/base/f-sourcepro.opm2
-rw-r--r--macros/luatex/optex/base/f-technika.opm2
-rw-r--r--macros/luatex/optex/base/f-termes.opm2
-rw-r--r--macros/luatex/optex/base/f-xcharter.opm2
-rw-r--r--macros/luatex/optex/base/fams-ini.opm34
-rw-r--r--macros/luatex/optex/base/fnotes.opm67
-rw-r--r--macros/luatex/optex/base/fonts-catalog.opm25
-rw-r--r--macros/luatex/optex/base/fonts-opmac.opm36
-rw-r--r--macros/luatex/optex/base/fonts-preload.opm21
-rw-r--r--macros/luatex/optex/base/fonts-resize.opm86
-rw-r--r--macros/luatex/optex/base/fonts-select.opm237
-rw-r--r--macros/luatex/optex/base/graphics.opm162
-rw-r--r--macros/luatex/optex/base/hi-syntax.opm62
-rw-r--r--macros/luatex/optex/base/hisyntax-c.opm32
-rw-r--r--macros/luatex/optex/base/hisyntax-html.opm2
-rw-r--r--macros/luatex/optex/base/hisyntax-python.opm2
-rw-r--r--macros/luatex/optex/base/hisyntax-tex.opm2
-rw-r--r--macros/luatex/optex/base/hyperlinks.opm36
-rw-r--r--macros/luatex/optex/base/hyphen-lan.opm50
-rw-r--r--macros/luatex/optex/base/if-macros.opm72
-rw-r--r--macros/luatex/optex/base/keyval.opm36
-rw-r--r--macros/luatex/optex/base/languages.opm50
-rw-r--r--macros/luatex/optex/base/lists.opm47
-rw-r--r--macros/luatex/optex/base/logos.opm17
-rw-r--r--macros/luatex/optex/base/luatex-ini.opm2
-rw-r--r--macros/luatex/optex/base/makeindex.opm116
-rw-r--r--macros/luatex/optex/base/maketoc.opm32
-rw-r--r--macros/luatex/optex/base/margins.opm6
-rw-r--r--macros/luatex/optex/base/math-macros.opm126
-rw-r--r--macros/luatex/optex/base/math-preload.opm74
-rw-r--r--macros/luatex/optex/base/math-unicode.opm102
-rw-r--r--macros/luatex/optex/base/more-macros.opm44
-rw-r--r--macros/luatex/optex/base/multicolumns.opm24
-rw-r--r--macros/luatex/optex/base/optex.ini4
-rw-r--r--macros/luatex/optex/base/optex.lua9
-rw-r--r--macros/luatex/optex/base/others.opm56
-rw-r--r--macros/luatex/optex/base/outlines.opm42
-rw-r--r--macros/luatex/optex/base/output.opm78
-rw-r--r--macros/luatex/optex/base/parameters.opm236
-rw-r--r--macros/luatex/optex/base/pdfuni-string.opm28
-rw-r--r--macros/luatex/optex/base/plain-macros.opm50
-rw-r--r--macros/luatex/optex/base/prefixed.opm138
-rw-r--r--macros/luatex/optex/base/print-unimath.opm8
-rw-r--r--macros/luatex/optex/base/ref-file.opm64
-rw-r--r--macros/luatex/optex/base/references.opm16
-rw-r--r--macros/luatex/optex/base/sections.opm161
-rw-r--r--macros/luatex/optex/base/slides.opm66
-rw-r--r--macros/luatex/optex/base/styles.opm14
-rw-r--r--macros/luatex/optex/base/table.opm197
-rw-r--r--macros/luatex/optex/base/uni-lcuc.opm4
-rw-r--r--macros/luatex/optex/base/unimath-codes.opm141
-rw-r--r--macros/luatex/optex/base/usebib.opm96
-rw-r--r--macros/luatex/optex/base/verbatim.opm93
-rw-r--r--macros/luatex/optex/demo/op-demo.tex30
-rw-r--r--macros/luatex/optex/demo/op-letter-cs.tex2
-rw-r--r--macros/luatex/optex/demo/op-letter-en.tex2
-rw-r--r--macros/luatex/optex/demo/op-slides.tex74
-rw-r--r--macros/luatex/optex/doc/optex-doc.pdfbin1326904 -> 1362584 bytes
-rw-r--r--macros/luatex/optex/doc/optex-doc.tex26
-rw-r--r--macros/luatex/optex/doc/optex-math.tex402
-rw-r--r--macros/luatex/optex/doc/optex-techdoc.tex40
-rw-r--r--macros/luatex/optex/doc/optex-userdoc.tex944
-rw-r--r--macros/luatex/optex/pkg/emoji.opm55
-rw-r--r--macros/luatex/optex/pkg/vlna.opm193
111 files changed, 3640 insertions, 3177 deletions
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index f3499d9dd8..e33ecae209 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -28,7 +28,7 @@ This work may be distributed and/or modified under the conditions of the CC-BY 4
## Website
-| [Gitee](https://gitee.com/TeX-doc/easybook) | [Github](https://github.com/TeX-doc/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [Font](https://wws.lanzous.com/b01ns361i) |
+| [Gitee](https://gitee.com/texl3/easybook) | [Github](https://github.com/texl3/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [Font](https://wws.lanzous.com/b01ns361i) |
# easybook 书籍文档类
@@ -60,4 +60,4 @@ xelatex -shell-escape easybook-demo
## 网址
-| [Gitee](https://gitee.com/TeX-doc/easybook) | [Github](https://github.com/TeX-doc/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [字体](https://wws.lanzous.com/b01ns361i) | \ No newline at end of file
+| [Gitee](https://gitee.com/texl3/easybook) | [Github](https://github.com/texl3/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [字体](https://wws.lanzous.com/b01ns361i) | \ No newline at end of file
diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.pdf b/macros/latex/contrib/easybook/doc/easybook-demo.pdf
index 6de20edc12..6007aa288b 100644
--- a/macros/latex/contrib/easybook/doc/easybook-demo.pdf
+++ b/macros/latex/contrib/easybook/doc/easybook-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.tex b/macros/latex/contrib/easybook/doc/easybook-demo.tex
index 208bf76afa..a71d505407 100644
--- a/macros/latex/contrib/easybook/doc/easybook-demo.tex
+++ b/macros/latex/contrib/easybook/doc/easybook-demo.tex
@@ -91,12 +91,12 @@
\author
{
瞿毅\thanks{texeasybook@foxmail.com.} \\
- \textcolor[HTML]{c71d23}{\faGit}~\url{https://gitee.com/TeX-doc/easybook}\thanks{Gitee为项目的主要发布地址。} \\
- \faGithub~\url{https://github.com/TeX-doc/easybook} \\
- \textcolor[HTML]{00c2ff}{\faEdge}~\url{https://latexstudio.net} \\
+ \git~\url{https://gitee.com/texl3/easybook}\thanks{Gitee为项目的主要发布地址。} \\
+ \github~\url{https://github.com/texl3/easybook} \\
+ \edge~\url{https://latexstudio.net} \\
\url{https://ctan.org/pkg/easybook}
}
- \date{2021/01/13\hskip\ccwd\relax v1.21c}
+ \date{2021/01/14\hskip\ccwd\relax v1.21d}
}
\begin{document}
diff --git a/macros/latex/contrib/easybook/doc/easybook.pdf b/macros/latex/contrib/easybook/doc/easybook.pdf
index 1ce9c8675b..d63bb1b67a 100644
--- a/macros/latex/contrib/easybook/doc/easybook.pdf
+++ b/macros/latex/contrib/easybook/doc/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/doc/easybook.tex b/macros/latex/contrib/easybook/doc/easybook.tex
index bb52059ba9..c84a11e209 100644
--- a/macros/latex/contrib/easybook/doc/easybook.tex
+++ b/macros/latex/contrib/easybook/doc/easybook.tex
@@ -8,7 +8,7 @@
\title{\sffamily easybook书籍文档类}
\author{瞿毅}
-\date{2021/01/13\hskip\ccwd\relax v1.21c\thanks{\url{https://gitee.com/TeX-doc/easybook}}}
+\date{2021/01/14\hskip\ccwd\relax v1.21d\thanks{\url{https://gitee.com/texl3/easybook}}}
\begin{document}
\maketitle
@@ -295,7 +295,7 @@
\end{syntax}
\changes{v1.21}{2021/01/11}{修复单面文档时页眉横线消失的问题。}
\changes{v1.21c}{2021/01/13}{增加配置页眉页脚的选项。}
-\opt{hdrset} 将选项交给 \pkg{fancyhdr} 宏包页面风格命令 \tn{fancyhf} 处理,\pkg{fancyhdr} 将页眉页脚分成左中右和奇数页(odd)、偶数页(even)共12个部分,所以设置了对应的12个选项。\opt{head} 与 \opt{foot} 表示页眉与页脚区域,前缀e、o代表偶数、奇数,前缀l、c、r代表左、中、右部分。单面打印时,偶数前缀的选项无效。
+\opt{hdrset} 将选项交给 \pkg{fancyhdr} 宏包页面风格命令 \tn{fancyhf} 处理,设置的是一个名为 \opt{fancy} 的页面风格。\pkg{fancyhdr} 将页眉页脚分成左中右和奇数页(odd)、偶数页(even)共12个部分,所以设置了对应的12个选项。\opt{head} 与 \opt{foot} 表示页眉与页脚区域,前缀e、o代表偶数、奇数,前缀l、c、r代表左、中、右部分。单面打印时,偶数前缀的选项无效。
\begin{ctexexam}
\ctexset
{
@@ -311,15 +311,17 @@
\end{function}
\subsection{目录样式}
-\begin{function}[EXP,added = 2021-01-13]{tocset/.../format,tocset/.../indent,tocset/.../rule,\tocrule}
+\begin{function}[EXP,added = 2021-01-13,updated = 2021-01-14]{tocset/.../format,tocset/.../indent,tocset/.../rule,tocset/lolskip,tocset/belowoffset,\tocrule}
\begin{syntax}
format = <目录标题格式>
indent = <目录标题左边缩进>
rule = <目录引导线样式>
+ lolskip = <(0.8pc)>
+ belowoffset = <(-1pc)>
\tn{tocrule} = \oarg{引导点间距}\oarg{引导点大小}\marg{引导点}\oarg{页码格式}
\end{syntax}
\changes{v1.21c}{2021/01/13}{增加配置目录样式的选项。}
-\opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,预置了 \opt{part}、\opt{chapter}、\opt{section}、\opt{subsection} 和 \opt{lists} 五种级别的目录标题,键值列表中的...代表它们。\opt{lists} 为图片、表格和代码目录格式的级别。\tn{tocrule} 命令生成目录引导线,需要在 \opt{rule} 选项中使用,其中引导线间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体、距离。
+\opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,预置了 \opt{part}、\opt{chapter}、\opt{section}、\opt{subsection} 和 \opt{lists} 五种级别的目录标题,键值列表中的...代表它们。\opt{lists} 为图片、表格和代码目录格式的级别。\opt{lolskip} 是代码目录标题后的距离,与\CTeX 的 \opt{lotskip} 和 \opt{lofskip} 不太一样。\opt{belowoffset} 选项为目录总标题 \tn{contentsname} 后的间距补偿,一般为负值,用于抵消 \opt{format} 中设置的间距。建议 \opt{lolskip+lists/format/addvspace = -belowoffset}。\tn{tocrule} 命令生成目录引导线,需要在 \opt{rule} 选项中使用,其中引导线间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体、距离。
\begin{ctexexam}
\ctexset
{
diff --git a/macros/latex/contrib/easybook/easybook.cls b/macros/latex/contrib/easybook/easybook.cls
index 5806182a9e..6e9111e6a9 100644
--- a/macros/latex/contrib/easybook/easybook.cls
+++ b/macros/latex/contrib/easybook/easybook.cls
@@ -9,10 +9,11 @@
%% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/01/13}{v1.21c}{}
+\ProvidesExplClass{easybook}{2021/01/14}{1.21d}{}
\cs_generate_variant:Nn \keys_define:nn {nx}
\cs_generate_variant:Nn \int_to_arabic:n {v}
+\cs_generate_variant:Nn \dim_add:Nn {NV}
\cs_new_protected:Npn \__ctex_define:n #1
{\keys_define:nn {ctex/#1}}
\cs_new_protected:Npn \__put_ctexbook:n #1
@@ -166,6 +167,9 @@
modifier = {by},
version = {4.0}
]{doclicense}
+\cs_new_eq:NN \github\faGithub
+\cs_new:Npn \git{\textcolor[HTML]{c71d23}{\faGit}}
+\cs_new:Npn \edge{\textcolor[HTML]{00c2ff}{\faEdge}}
\ctex_at_end_preamble:n
{
\tl_if_empty:NF \g__config_tl
@@ -437,7 +441,7 @@
\__ctex_define:n {tocset}
{
part/format .tl_set:N = \l__toc_part_format_tl,
- part/format .initial:n =
+ part/format .initial:n =
{\addvspace{1pc}\sffamily\large},
part/indent .tl_set:N = \l__toc_part_indent_tl,
part/indent .initial:n = 0\ccwd,
@@ -471,7 +475,12 @@
lists/indent .tl_set:N = \l__toc_lists_indent_tl,
lists/indent .initial:n = 0\ccwd,
lists/rule .tl_set:N = \l__toc_lists_rule_tl,
- lists/rule .initial:n = \tocrule{$\cdot$}
+ lists/rule .initial:n = \tocrule{$\cdot$},
+ lists/lolskip .dim_set:N = \l__toc_lolskip_dim,
+ lists/lolskip .initial:n = 0.8pc,
+
+ belowoffset .dim_set:N = \l__toc_offset_dim,
+ belowoffset .initial:n = -1pc
}
\NewDocumentCommand{\tocrule}{O{0.7pc}O{1.2}mO{}}
@@ -547,7 +556,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
\__title_mark:n {\contentsname}
- \vspace*{-1pc}
+ \vspace*{\l__toc_offset_dim}
\@starttoc{toc}
\if@restonecol
\twocolumn
@@ -565,7 +574,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
\__title_mark_intoc:n {\listfigurename}
- \vspace*{-1pc}
+ \vspace*{\l__toc_offset_dim}
\@starttoc{lof}
\if@restonecol
\twocolumn
@@ -583,7 +592,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
\__title_mark_intoc:n {\listtablename}
- \vspace*{-1pc}
+ \vspace*{\l__toc_offset_dim}
\@starttoc{lot}
\if@restonecol
\twocolumn
@@ -605,7 +614,8 @@
\fi
}
\__title_mark_intoc:n {\lstlistlistingname}
- \vspace*{-0.2pc}
+ \dim_add:NV \l__toc_offset_dim\l__toc_lolskip_dim
+ \vspace*{\l__toc_offset_dim}
\@starttoc{lol}
\@ifundefined{@restonecoltrue}{}
{
diff --git a/macros/latex/contrib/fcolumn/README b/macros/latex/contrib/fcolumn/README
index 5ee451fa0d..e585aa6aaf 100644
--- a/macros/latex/contrib/fcolumn/README
+++ b/macros/latex/contrib/fcolumn/README
@@ -7,15 +7,16 @@ such columns, including the sum line (preceded by a rule of the correct
width), using the specifier ``f''.
The column specifier f itself is rather simple. It is the predefined
-version of a generic column F. The generic version expects three
-arguments: |#1| is the separator, |#2| is the decimal mark, and |#3|
+version of a generic column F. The generic version expects four
+arguments: |#1| is the separator, |#2| is the decimal mark, |#3| is
the coding used for grouping digits of the integer part and decimal
-part. For example the f-column in the current version of the package
+part, and #4 is anything added before typesetting the contents of a
+column. For example the f-column in the current version of the package
is using 3,2 as #3, meaning that numbers are typeset with 2 decimal
digits and grouping is done on 3 digits. The grouping character is
``.'' and the decimal separator is ``,'', thereby coding for the
continental European standard. People in the Anglo-saxon world would
-rather code |\newcolumntype{f}{F{,}{.}{3,2}}|.
+rather code |\newcolumntype{f}{F{,}{.}{3,2}{}}|.
To show where and how the f-column is used, let's look at a typical
financial table.
@@ -33,7 +34,7 @@ The core part of this table is input as
\begin{tabular}{lflf}
house & 200000 & equity capital & 50000 \\
bank account & -603,23 & mortgage & 150000 \\
-savings & 28000 \\
+savings & 28000 \\
cash & 145,85 & profit & 27542,62 \\
\sumline
\end{tabular}
@@ -44,20 +45,23 @@ calculates the totals, makes rules of the correct widths, and
checks whether the two columns are in balance; if not, the user
is warned via a message. A special command \resetsumline exists
which allows one to restart a table, so that multiple tables
-in one tabular environment are possible.
+that are aligned are possible in one tabular environment.
+ The fcolumn specifier can be used in a tabular environment
+and in the longtable environment. Specific fcolumn formatting,
+like colour and/or font changes are possible.
To install:
-----------
Run the file fcolumn.ins through (La)TeX (in a directory also
containing fcolumn.dtx) or type ``make install'' and move the
-file fcolumn.sty to a place searched by TeX.
+resultant file fcolumn.sty to a place searched by TeX.
To produce the documentation:
-----------------------------
-Run the file fcolumn.dtx through LaTeX. Update the glossary
-and index by makeindex:
+Type ``make''. Or run the file fcolumn.dtx through LaTeX,
+update the glossary and index by makeindex:
makeindex -s gglo.ist -o fcolumn.gls fcolumn.glo
makeindex -s gglo.ist -o fcolumn.ind fcolumn.idx
-and then LaTeX again; presto!
+and then LaTeX fcolumn.dtx again; presto!
diff --git a/macros/latex/contrib/fcolumn/fcolumn.dtx b/macros/latex/contrib/fcolumn/fcolumn.dtx
index 5dcef07b61..41bee63cf1 100644
--- a/macros/latex/contrib/fcolumn/fcolumn.dtx
+++ b/macros/latex/contrib/fcolumn/fcolumn.dtx
@@ -1,5 +1,5 @@
% \iffalse meta-comment
-% Copyright (C) 2015--2019 by Edgar Olthof
+% Copyright (C) 2015--2021 by Edgar Olthof
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -14,11 +14,12 @@
% \fi
% \iffalse
%<package>\ProvidesPackage{fcolumn}
-%<package> [2019/04/24 v1.2 Automatic Currency Package (EHTO)]
+%<package> [2021/01/14 v1.3 Automatic Currency Package (EHTO)]
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\RequirePackage{array}[v2.4k]
%<*driver>
\documentclass{ltxdoc}
+\usepackage{longtable}
\usepackage{fcolumn}
\usepackage{booktabs}
\usepackage[tableposition=top,aboveskip=0pt]{caption}
@@ -30,15 +31,16 @@ indention=0pt,labelsep=colon,justification=raggedright}
\usepackage{url}
\usepackage[hyperfootnotes=false,hidelinks]{hyperref}
\usepackage{eurosym}
+\usepackage{color}
\EnableCrossrefs
\CodelineIndex
-\RecordChanges
\begin{document}
\DocInput{fcolumn.dtx}
\end{document}
%</driver>
% \fi
-% \CheckSum{1078}
+% \RecordChanges
+% \CheckSum{1287}
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -64,24 +66,32 @@ indention=0pt,labelsep=colon,justification=raggedright}
% counts and resetting of column counter done in a nicer way.}
% \changes{v1.1.1}{2015/09/27}{Installation procedure changed from .ins-in-.dtx to separate
% .ins and .dtx after discussion with Karl Berry as well as some minor code improvements.}
-% \changes{v1.1.2}{2015/09/29}{Some inconsistencies between explanatory text
-% and actual code removed.}
+% \changes{v1.1.2}{2015/09/29}{Some inconsistencies between explanatory text and actual
+% code removed.}
% \changes{v1.2}{2019/03/06}{Input parsing changed after comment from Frank
% Mittelbach. He (Frank) also gave various suggestions for improving robustness
% or user friendlyness of this package. This version is only backwards compatible
% when zero decimal digits were and are specified as modifier.}
+% \changes{v1.3}{2021/01/03}{Christian Hoff requested the possibility to provide extra formatting
+% information to a column, e.g., colouring. That was implemented by having an extra parameter
+% to the generic F-column. The current solution is not very robust, as font and/or size change
+% in math environment are very tricky, but providing colour information works, see the example
+% in the main text. This version is now compatible with package longtable. Version~1.3 is
+% backwards compatible to~1.2: it only adds functionality.}
% \GetFileInfo{fcolumn.sty}
-% \DoNotIndex{\@arstrut,\@arstrutbox,\@depth,\@firstampfalse,\@firstamptrue,\@gobble,\@halignto}
-% \DoNotIndex{\@height,\@mkpream,\@ne,\@nextchar,\@preamble,\@sharp,\@tempdima,\@tempswafalse}
-% \DoNotIndex{\@tempswatrue,\@\temptokena,\@tfor,\@whilesw,\@width,\advance,\arraystretch,\baselineskip}
-% \DoNotIndex{\begingroup,\bgroup,\count,\count@,\cr,\csname,\def,\divide,\do,\dp,\edef,\egroup}
-% \DoNotIndex{\else,\endcsname,\endgroup,\expandafter,\extrarowheight,\fi,\gdef,\halignto,\hbox}
-% \DoNotIndex{\hfil,\ht,\if,\if@firstamp,\if@tempswa,\ifcase,\lineskip,\loop,\m@ne,\m@th,\message}
-% \DoNotIndex{\multiply,\or,\par,\prepnext@tok,\protect,\repeat,\setbox,\space,\string,\strutbox}
-% \DoNotIndex{\tabskip,\tabularnewline,\the,\the@toks,\thr@@,\tw@,\unhbox,\vbox,\vcenter,\vrule}
+% \DoNotIndex{\@@endpbox,\@@startpbox,\@acol,\@arstrut,\@arstrutbox,\@classiv,\@classz,\@depth}
+% \DoNotIndex{\@firstampfalse,\@firstamptrue,\@gobble,\@halignto,\@height,\@mkpream,\@ne,\@nextchar}
+% \DoNotIndex{\@preamble,\@sharp,\@tempdima,\@tempswafalse,\@tempswatrue,\@\temptokena,\@tfor}
+% \DoNotIndex{\@whilesw,\@width,\advance,\arraystretch,\baselineskip,\begingroup,\bgroup,\count}
+% \DoNotIndex{\count@,\cr,\csname,\def,\divide,\do,\dp,\edef,\egroup,\hfil,\hline,\ht,\if,\if@firstamp}
+% \DoNotIndex{\if@tempswa,\ifcase,\kill,\lineskip,\LT@@hl,\LT@@tabarray,\LT@bchunk,\LT@caption,\LT@endpbox}
+% \DoNotIndex{\LT@hline,\LT@kill,\LT@LL@FM@cr,\LT@make@row,\LT@mcol,\LT@no@pgbk,\LT@nofcols,\LT@rows}
+% \DoNotIndex{\LT@setprevdepth,\LT@startpbox,\LT@tabularcr,\LTleft,\LTright,\loop,\m@ne,\m@th,\message}
+% \DoNotIndex{\multiply,\or,\par,\prepnext@tok,\protect,\refstepcounter,\repeat,\setbox,\space,\string}
+% \DoNotIndex{\strutbox,\tabskip,\tabularnewline,\the,\the@toks,\thr@@,\tw@,\unhbox,\vbox,\vcenter,\vrule}
% \DoNotIndex{\vskip,\vtop,\wd,\xdef,\z@,\z@skip}
-% \title{The \textsf{fcolumn} package\thanks{This file has version
-% number \fileversion, last revised \filedate.}}
+% \title{The \textsf{fcolumn} package\thanks{This file has version number \fileversion, last
+% revised \filedate.}}
% \author{Edgar Olthof\\
% \texttt{edgar <dot> olthof <at> inter <dot> nl <dot> net}}
% \date{Printed \today}
@@ -98,16 +108,16 @@ indention=0pt,labelsep=colon,justification=raggedright}
% The package |fcolumn| provides the macros for an extra tabular specifier
% that makes creating financial tables easy. The column specifier |f|
% itself is rather simple; it is the predefined version of a generic
-% column |F|. The generic version expects three arguments: 1)~grouping
+% column |F|. The generic version expects four arguments: 1)~grouping
% character of the integer part on output, 2)~decimal mark used on output,
-% and 3)~compact additional information on input/output characteristics,
-% see below.
+% 3)~compact additional information on input/output characteristics, and
+% 4)~anything, but primarily used for providing formatting information, see below.
%
% The f-column in the current version of the package is defined for the
-% continental European standard: |\newcolumntype{f}{F{.}{,}{3,2}}|. This
+% continental European standard: |\newcolumntype{f}{F{.}{,}{3,2}{}}|. This
% means that a number like 12345,67 will be typeset as $12{.}345{,}67$.
% People in the Anglo-saxon world would rather code
-% |\newcolumntype{f}{F{,}{.}{3,2}}| for the same input, yielding
+% |\newcolumntype{f}{F{,}{.}{3,2}{}}| for the same input, yielding
% $12{,}345{.}67$ as output for the number given above. The default
% value for |#3| is |3,2|, indicating
% that grouping of the integer part is by three digits, that a comma is
@@ -116,7 +126,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% If however, in your country or company grouping is done with a thinspace every
% four digits, that the separator in the source should be the character |p|,
% and there are three digits after the decimal mark---that happens to be a
-% |\cdot|---, then simply specify |\newcolumntype{f}{F{\,}{\cdot}{4p3}}| in
+% |\cdot|---, then simply specify |\newcolumntype{f}{F{\,}{\cdot}{4p3}{}}| in
% that case. The input could be 12345p678 then, yielding $1{\,}2345{\cdot}678$
% as output.
%
@@ -125,6 +135,11 @@ indention=0pt,labelsep=colon,justification=raggedright}
% mark) you have to explicitly specify |x,0|. If you want no grouping
% character, specify |0,x|.
%
+% As the fourth parameter you can insert anything just before the typesetting
+% of an amount in a column takes place. Its purpose is to add additional
+% formatting information, e.g., |\color{red}| to have the contents of a column
+% coloured red, but it can be misused, so use with care. And it can't do all!
+%
% This package requires and loads the |array| package~\cite{array}. To
% show where and how the |F|-column is used, let's look at some typical
% financial information as shown in Table~\ref{tab:ex1}
@@ -138,7 +153,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \midrule
% house & 200000 & equity capital& 50000 \\
% bank account & -603,23 & mortgage & 150000 \\
-% savings & 28000 & & \\
+% savings & 28000 \\
% cash & 145,85 & profit & 27542,62 \\
% \sumline
% \bottomrule
@@ -146,7 +161,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \end{table}
% and how this is entered in \LaTeX\ (Table~\ref{tab:ex2}).
% \begin{table}[htb]
-% \caption{Verbatim version of Example Table.}
+% \caption{Verbatim version of Example Table~\ref{tab:ex1}.}
% \label{tab:ex2}
% \begin{verbatim}
%\begin{table}[htb]
@@ -159,7 +174,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
%\midrule
%house & 200000 & equity capital& 50000 \\
%bank account & -603,23 & mortgage & 150000 \\
-%savings & 28000 & & \\
+%savings & 28000 \\
%cash & 145,85 & profit & 27542,62 \\
%\sumline
%\bottomrule
@@ -176,17 +191,143 @@ indention=0pt,labelsep=colon,justification=raggedright}
%
% This package is heavily inspired by the |dcolumn| package by
% David Carlisle~\cite{dcolumn}, some constructions are more or less
-% copied from that package. Version~1.2 (this version) uses a few ideas
-% from, and incorporates quite some suggestions by, Frank Mittelbach.
+% copied from that package. Version~1.3 (this version) incorporates the idea
+% of Christian Hoff of providing additional (formatting) information per column.
+% A rather contrived example is given in Table~\ref{tab:ex3}, combining colour and fonts.
+% \newcolumntype{q}[1]{F{.}{,}{3,2}{#1}}
+% \begin{table}[htb]
+% \caption{Example Table with column formatting.}
+% \label{tab:ex3}
+% \begin{tabular}{@{}lq{\color{red}\mathsf,{}\mathbf}lq{\color{green}}@{}}
+% \multicolumn4c{\bfseries Balance sheet}\\
+% \toprule
+% properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+% \midrule
+% house & 200000 & equity capital& 50000 \\
+% bank account & -603,23 & mortgage & 150000 \\
+% savings & 28000 \\
+% cash & 145,85 & profit & 27542,62 \\
+% \sumline
+% \bottomrule
+% \end{tabular}
+% \end{table}
+% How this is entered in \LaTeX\ is shown in Table~\ref{tab:ex4}.
+% \begin{table}[htb]
+% \caption{Almost verbatim version of Example Table~\ref{tab:ex3}.}
+% \label{tab:ex4}
+% \begin{verbatim}
+%\newcolumntype{q}[1]{F{.}{,}{3,2}{#1}}
+%\begin{table}[htb]
+%\caption{Example Table with column formatting.}
+%\label{tab:ex3}
+%\begin{tabular}{@{}lq{\color{red}\mathsf,{}\mathbf}lq{\color{green}}@{}}
+%\multicolumn4c{\bfseries Balance sheet}\\
+%...
+%...(same financial contents as in Table 1)
+%...
+%\end{tabular}
+%\end{table}
+% \end{verbatim}
+% \end{table}
+% The font changing commands like |\mathsf| and |\mathbf| act on an argument, hence require
+% braces, but these are already provided internally for this purpose. For that reason this
+% type of commands must be given last, without braces (and if you don't specify a font
+% changing command, these extra internal braces are just redundant). The argument to
+% the new columntype may consist of two parts,
+% separated by a comma. In that case, the part to the left of the comma is applied to the
+% whole column and the right part is applied in addition to the result. The example in
+% Table~\ref{tab:ex3} shows this: the bold font is only used in the |\sumline| and the
+% effect of |\mathsf| is annulled by the brace pair before |\mathbf|. You may even change
+% the colour for the |\sumline|, e.g., blue by ``|,{}\color{blue}\mathbf|'', since colour
+% settings do not require braces and the last setting overrides a previous one. If you want
+% bold font for the whole column, leave out the comma (and the |\mathsf{}|).
+%
+% Note that changes in font size, e.g., ``|\huge|'' in ``|\huge\color{red}\mathbf|''
+% as parameter to column type |q| are ignored by \LaTeX, since the formatting
+% information is used in math environment, which has its own way of handling this.
+% This isn't bad, as size changes in one column, without overall changes to the
+% table look terrible. If you want something huge, make a |\huge| table.
+%
+% This package now also works with |longtable|~\cite{longtable}, provided
+% |longtable| is loaded before |fcolumn|; it checks for that. For a change,
+% the raw formatting of the multipage table is shown first, in Table~\ref{tab:ex5}.
+% For more information on how to handle |\endhead| and related commands, see the
+% documentation of |longtable|~\cite{longtable}.
+% \begin{table}[htb]
+% \caption{Almost verbatim version of Example Table~\ref{tab:ex6}.}
+% \label{tab:ex5}
+% \begin{verbatim}
+%\begin{longtable}[l]{@{}lflf@{}}
+%\caption{\label{tab:ex6}Table showing compatibility of fcolumn and
+% longtable.}\\
+%\multicolumn4c{\bfseries Balance sheet}\\
+%\toprule
+%properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+%\midrule
+%\endfirsthead
+%\caption[]{\textit{(continued from previous page)\/}}\\
+%\midrule
+%properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+%\midrule
+%\endhead
+%\midrule
+%\multicolumn4{r@{}}{\textit{(Table continues on next page)\/}}\\
+%\endfoot
+%\bottomrule
+%\endlastfoot
+%...
+%...(somewhat altered financial contents as in Table 1)
+%...
+%\end{longtable}
+% \end{verbatim}
+% \end{table}
%
+% \noindent And here is the result (it's ugly, but it had to be that long to
+% demonstrate the page break). Not shown here are the new |fcolumn|
+% formatting possibilities (like new fonts and/or colours), but it has been
+% checked they do work in combination with |longtable|.
+% \begin{longtable}[l]{@{}lflf@{}}
+% \caption{\label{tab:ex6}Table showing compatibility of fcolumn and
+% longtable.}\\
+% \multicolumn4c{\bfseries Balance sheet}\\
+% \toprule
+% properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+% \midrule
+% \endfirsthead
+% \caption[]{\textit{(continued from previous page)\/}}\\
+% \midrule
+% properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+% \midrule
+% \endhead
+% \midrule
+% \multicolumn4{r@{}}{\textit{(Table continues on next page)\/}}\\
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% house & 200000 & equity capital& 50000 \\
+% bank account & -603,23 & mortgage & 150000 \\
+% savings 1 & 2800 \\
+% savings 2 & 2800 \\
+% savings 3 & 2800 \\
+% savings 4 & 2800 \\
+% savings 5 & 2800 \\
+% savings 6 & 2800 \\
+% savings 7 & 2800 \\
+% savings 8 & 2800 \\
+% savings 9 & 2800 \\
+% savings 10 & 2800 \\
+% cash & 145,85 & profit & 27542,62 \\
+% \sumline
+% \end{longtable}
+
% \section{Commands}
% The user only needs to know six commands or constructions. These six are given here.
% \begin{macro}{F}
% In the tabular the column specifier |F| can be given with arguments, or
-% the predefined version~|f|, where the three arguments of |F| are |{.}|,
-% |{,}|, and |{3,2}|. If you want |g| to be your own definition like the
+% the predefined version~|f|, where the four arguments of |F| are |{.}|,
+% |{,}|, |{3,2}|, and |{}|. If you want |g| to be your own definition like the
% curious one given in Section~\ref{intro}, then specify
-% |\newcolumntype{g}{F{\,}{\cdot}{4p3}}| prior to using |g| in a tabular.
+% |\newcolumntype{g}{F{\,}{\cdot}{4p3}{}}| prior to using |g| in a tabular.
%
% Entries in an F-column are, from that moment on, treated as numbers unless
% explicitly escaped by |\leeg|, see below. The numbers are typeset
@@ -196,7 +337,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% character is the dot, except when the dot is specified as input decimal
% mark; in that case the comma is acting as input grouping character. With
% this convention the continental Europe and Anglo-saxon part of the world
-% is served.
+% is served. And using input grouping markers is optional.
% \end{macro}
% \begin{macro}{\sumline}
% The numbers in an |F|-column are typeset as a financial amount, but the real
@@ -207,7 +348,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \item It generates a rule with width calculated in the first item;
% \item It checks the columns that are supposed to balance whether or not they
% actually do. If so, nothing happens. If not, a |\PackageWarning| is given
-% that column $i$ and $j$ do not balance, where $i$ and $j$ are the relevant
+% that column~$i$ and~$j$ do not balance, where $i$ and $j$ are the relevant
% columns. This is only done if the total number of |F|-columns is even,
% e.g., if there are six |F|-columns, then~1 is checked against~4, 2 against~5,
% and 3 against~6. If the number of |F|-columns is odd then anything could be
@@ -217,18 +358,21 @@ indention=0pt,labelsep=colon,justification=raggedright}
% By default the vertical separation between the rule and the total is
% 2\thinspace pt, but this can be changed by the optional argument to
% |\sumline|. Give, e.g., |\sumline[10pt]|, in case you want this spacing
-% to be 10\thinspace pt.
+% to be 10\thinspace pt. And you may even give two options, like in
+% |\sumline[10pt][5pt]|, in which the second option is the extra space below
+% the summary row. In fact that second option is the option to |\\| that is
+% implicit in |\sumline|.
% \end{macro}
% \begin{macro}{\resetsumline}
% Suppose you want to typeset one tabular with the profit-and-loss of many
% projects individually. The layout of those tabulars is the same and it
% were nice if all columns were aligned. This can be done by making it one
% big tabular with a fresh start for each project. The macro
-% |\resetsumlines| is used for that: it resets all totals and all column
-% widths, see for example Table~\ref{tab:ex3}.
+% |\resetsumline| is used for that: it resets all totals and all column
+% widths, see for example Table~\ref{tab:ex7}.
% \begin{table}[htb]
% \caption{Example: multiple projects.}
-% \label{tab:ex3}
+% \label{tab:ex7}
% \begin{tabular}{@{}lfflff@{}}
% \multicolumn6c{\bfseries Project~1}\\
% \toprule
@@ -256,10 +400,10 @@ indention=0pt,labelsep=colon,justification=raggedright}
% Note that the rules in the first and third |F|-columns of project~1 cover
% $1{.}200{,}00$ whereas in project~2 those rules are narrower since they
% only cover $430{,}00$; still the columns are aligned. The verbatim way
-% of setting up Table~\ref{tab:ex3} is given in Table~\ref{tab:ex4}.
+% of setting up Table~\ref{tab:ex7} is given in Table~\ref{tab:ex6}.
% \begin{table}[htb]
-% \caption{Verbatim version of Table~\ref{tab:ex3}.}
-% \label{tab:ex4}
+% \caption{Verbatim version of Table~\ref{tab:ex7}.}
+% \label{tab:ex8}
% \begin{verbatim}
%\begin{table}[htb]
%\caption{Example: multiple projects.}
@@ -317,7 +461,9 @@ indention=0pt,labelsep=colon,justification=raggedright}
% even other ways. By default (for aesthetic reasons) |fcolumn| typesets
% it with a minus~sign, but strict accounting prescibes that the number
% should be put between parentheses. The latter can be accomplished by
-% setting |\strict@ccountingtrue|.
+% setting |\strict@ccountingtrue|. But since this contains a non-letter,
+% it is also possible to invoke |fcolumn| with the option |strict|, i.e.,
+% |\usepackage[strict]{fcolumn}|, which sets this flag.
% \end{macro}
% \StopEventually{\PrintChanges\PrintIndex}
% \section{The macros}
@@ -339,8 +485,8 @@ indention=0pt,labelsep=colon,justification=raggedright}
% column type |f| does not use private macros (no~|@|), so overriding its
% definition is easy for a user.
% \begin{macrocode}
-\newcolumntype{F}[3]{>{\b@fi{#1}{#2}{#3}}r<{\e@fi}}
-\newcolumntype{f}{F{.}{,}{3,2}}
+\newcolumntype{F}[4]{>{\b@fi{#1}{#2}{#3}{#4}}r<{\e@fi}}
+\newcolumntype{f}{F{.}{,}{3,2}{}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -374,21 +520,25 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \end{macrocode}
% Actually |\geldm@cro| is only a wrapper around |\g@ldm@cro|.
% \begin{macrocode}
-\def\geldm@cro#1#2{\withs@pfalse
+\def\geldm@cro#1#2{\withs@pfalse
\afterassignment\g@ldm@cro\count@#1\relax{#2}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\g@ldm@cro}
-% This macro starts by looking at the sign of |#2|: if it is negative, it prints
+% After setting the environment for formatting, this macro starts by looking
+% at the sign of |#2|: if it is negative, it prints
% the correct indicator (a parenthesis or a minus sign), assigns the absolute value
% of~|#2| to |\count2| and goes on. Note that |\geldm@cro| and therefore |\g@ldm@cro|
% are always used within |$|s, so it is really a minus sign that is printed, not a hyphen.
% All calculations are done with |\count0|, |\count1|, etc.\ i.e., without |F|-column-specific
% \meta{count}s because it is all done locally. Leaving the tabular environment will
-% restore their values.
+% restore their values. This is also true for the effect of |\FCform@t|, so that formatting
+% information is local to this column. The reason for inserting the opening brace between
+% |\FCform@t| and |\ifnum| (and the accompanying closing brace after |\fi|) is to facilitate
+% the possible use of |\mathbf| or any other font changing command as the last item in |\FCform@t|.
% \begin{macrocode}
-\def\g@ldm@cro#1\relax#2{\ifnum#2<0 \ifstrict@ccounting (\else -\fi
- \count2=-#2 \else\count2=#2
+\def\g@ldm@cro#1\relax#2{\FCform@t{\ifnum#2<0 \ifstrict@ccounting (\else
+ -\fi \count2=-#2 \else\count2=#2
\fi
% \end{macrocode}
% Calculate the entire currency units: this is the result of $x/a$ as integer
@@ -450,7 +600,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
\rlap{)~!}\else\rlap{~!}\fi\else\ifstrict@ccounting
\rlap{\phantom{)}~!}\else\rlap{~!}\fi\fi
\else \ifnum#2<0 \ifstrict@ccounting\rlap{)}\fi\fi
-\fi}
+\fi}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\g@ldens}
@@ -470,7 +620,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% about 100 times the current world economy~\cite{world_economy}. Yet
% another method is to used Heiko Oberdiek's package |bigintcalc|:
% then only memory restrictions apply. This, however, requires a major
-% rewrite of |fcolumn|. For now, version~1.2 sticks to the moderate amounts.
+% rewrite of |fcolumn|. For now, version~1.3 sticks to the moderate amounts.
%
% There is no straightforward interpretation of |#1| being zero or
% negative, therefore this is used as an indicator that no grouping
@@ -551,7 +701,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% First it checks whether there is a risk of overflow in this step. If
% $A$ and $B$ are two \TeX-registers and $B$ is to be added to $A$,
% overflow will not occur if one is (or both are) zero or if $A$ and~$B$
-% have different signs. Otherwise, be careful. Note that \TeX\ does not
+% have different signs. Otherwise, be careful. Note that \TeX\ does not
% check for overflow when performing an |\advance| (done in section~1238
% of Ref.~\cite{CandTB}), in contrast to |\multiply|, see section~105.
% \begin{macrocode}
@@ -568,13 +718,13 @@ indention=0pt,labelsep=colon,justification=raggedright}
\global\advance\csname FCtot@\romannumeral\FCsc@l\endcsname by \count0
\ifx\FCs@gn\m@ne
% \end{macrocode}
-% They had the same sign: risk of overflow. Record the sign
+% They had the same sign: risk of overflow. Record the sign
% of |\count0| (and of the original total of this column; they were
-% the same) in |\FCs@gn|. Table~\ref{tab:ex5}
+% the same) in |\FCs@gn|. Table~\ref{tab:ex9}
% \begin{table}[htb]
-% \def\PackageError#1#2#3{\PackageWarning{#1}{#2}}
+% \def\PackageError#1#2#3{\PackageWarning{#1}{#2: #3}}
% \caption{Examples on overflow.}
-% \label{tab:ex5}
+% \label{tab:ex9}
% \begin{tabular}{@{}lfff@{}}
% \multicolumn4c{\bfseries Projects}\\
% \toprule
@@ -605,7 +755,9 @@ indention=0pt,labelsep=colon,justification=raggedright}
\ifnum\count0<0
\let\FCs@gn=\m@ne
\PackageError{fcolumn}{Register overflow}{Overflow occurred
- in fcolumn \number\FCsc@l. Check your table.}%
+ in fcolumn \number\FCsc@l. You can press <enter> now and I'll
+ proceed,\MessageBreak but check your table. The offending entry is
+ indicated with an exclamation\MessageBreak mark in the output.}%
\else\let\FCs@gn=\@ne
\fi
\fi
@@ -618,29 +770,34 @@ indention=0pt,labelsep=colon,justification=raggedright}
\fi\unhbox0}
% \end{macrocode}
% \end{macro}
+%
+% The \meta{count}s |\FC@l| captures the part to the left of the decimal
+% mark, |\FC@r| that to the right.
+% \begin{macrocode}
+\newcount\FC@l \newcount\FC@r
+% \end{macrocode}
+% Some auxiliary definitions for capturing compacted information.
+% \begin{macrocode}
+\def\setucc@de#1#2\relax{\uccode`\~=`#1 }
+\def\assignform@t#1,#2,#3\end{\def\FCform@t{#1}\def\FCform@tt{#1#2}}
+% \end{macrocode}
% \def\<#1>{\leavevmode\hbox{$\langle$#1\/$\rangle$}}
% \begin{macro}{\b@fi}
% The macro |\b@fi| provides the beginning of the financial column. It
-% will be inserted in the column to capture the number entered by the user
+% will be inserted in the column to capture the number entered by the user.
% The separator and decimal mark are within a math environment, so you
% can indeed specify |\,| instead of |\thinspace|, but there is an extra
% brace around, so it doesn't affect the spacing between the digits
% (trick copied from |dcolumn|, Ref.~\cite{dcolumn}).
-%
-% The \meta{count}s |\FC@l| captures the part to the left of the decimal
-% marker, |\FC@r| that to the right.
% \begin{macrocode}
-\newcount\FC@l \newcount\FC@r
-\def\FC@chklist{}
-\def\setucc@de#1#2\relax{\uccode`\~=`#1 }
-\def\b@fi#1#2#3{%
+\def\b@fi#1#2#3#4{%
% \end{macrocode}
% An intermediate macro |\sep@xt| to extract the first character
% of |#1|, which in most cases will be the only character.
% \begin{macrocode}
\def\sep@xt##1##2\end{\def\sep@rator{{##1}}}%
\sep@xt#1\end\def\decim@lmark{{#2}}%
-\def\sp@l{#3}\global\advance\FCsc@l by \@ne
+\def\sp@l{#3}\assignform@t#4,,\end \global\advance\FCsc@l by \@ne
\global\FC@l=0 \global\FC@r=1
% \end{macrocode}
% The value specified by the user is then captured by |\FC@l| and
@@ -651,23 +808,23 @@ indention=0pt,labelsep=colon,justification=raggedright}
% There are four parts to an |F|-column entry, all parts optional,
% making 16 combinations. The sequence is
% (in the Backus--Naur notation of Ref.~\cite{CandTA}):
-% \<sign> \<integer constant> \<decimal marker>
+% \<sign> \<integer constant> \<decimal mark>
% \<integer constant>. Here \<sign> is a plus or minus character with
% category code~12, \<integer constant> is a sequence of zero
-% or more (decimal) \<digit>s, and \<decimal marker> is the middel
+% or more (decimal) \<digit>s, and \<decimal mark> is the middel
% part of |#3|, i.e., the comma in |3,2| or the period in |3.2|.
-% If the \<decimal marker> is absent with no space characters between
+% If the \<decimal mark> is absent with no space characters between
% the two \<integer constant> terms, these merge, making four redundant
-% entries. One of the
-% combinations is \<empty>, a sequence of exactly zero non-space tokens:
-% this is the only combination that doesn't put anything in an |F|-column.
+% entries. One of the combinations is \<empty>, a sequence of exactly
+% zero non-space tokens: this is the only combination that doesn't put
+% anything in an |F|-column---and was the most difficult part to handle.
%
% The minus sign must be captured separately, because in an entry like
% |-0,07| the 7~cents are negative, but this cannot be seen from the
-% integer part, since $-0$ is $0$ in \TeX\ (in fact in most computer
-% languages, but not in~MIX~\cite{TAOCP1}), so |\ifnum-0<0| yields false.
-% |\FCs@gn| is a general purpose flag. Its first use is to capture
-% the sign.
+% part to the left of the decimal mark, since $-0$ is~$0$ in \TeX\ (in
+% fact in most computer languages, but not in~MIX~\cite{TAOCP1}), so
+% |\ifnum-0<0| yields |false|. |\FCs@gn| is a general purpose flag. Its
+% first use is to capture the sign.
% \begin{macrocode}
\let\FCs@gn=\@ne\relax \setbox0\hbox\bgroup$%
% \end{macrocode}
@@ -726,7 +883,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
\ifnum\count@=\mathcode`- \expandafter\global\FC@l=\the\FC@l
\else \expandafter\global\FC@r=\the\FC@r\fi}%
% \end{macrocode}
-% The signs are relatively simply: record the sign, restore |\mathcode|s if
+% The signs are relatively simple: record the sign, restore |\mathcode|s if
% needed (it should be: a minus sign between digits screws up everything),
% and start scanning the number.
% \begin{macrocode}
@@ -744,7 +901,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
\mathcode`-="8000 \mathcode`+=\mathcode`- \mathcode`.=\mathcode`-
% \end{macrocode}
% These three remain active until the |$| in |\e@fi| is encountered.
-% The following ones will, in the general case, have their activeness
+% The following ones will, except in the \<empty> case, have their activeness
% turned off at some time.
% \begin{macrocode}
\def\actdecm@rk##1##2\relax{\ifx##1.\relax \mathcode`,=\mathcode`-
@@ -765,21 +922,24 @@ indention=0pt,labelsep=colon,justification=raggedright}
% globally to a negative value. This doesn't harm, because it didn't
% contain relevant information anyway. Outside the group, the sign
% of |\FC@r| can then be tested. This is a slight misuse of this
-% |\count|, but now it's documented.
-%
-% If there was no decimal sign or if there was a decimal sign but no
-% decimal part, |\FC@r| will still be~1, which doesn't parse well with
-% |\secd@xt|, so a zero is appended.
+% |\count|, but now it's documented. In effect, |\FC@r| can only be~|-1|,
+% |1|, or at least~|10|, so the comparison |\ifnum\FC@r>0| does not mis~0.
% \begin{macrocode}
\def\e@fi{\ifnum\mathcode`\0=\mathcode`- \global\FC@r=\m@ne\fi$\egroup
\ifnum\FC@r>0
- \ifnum\FC@r<10 \multiply\FC@r by 10 \fi
% \end{macrocode}
-% Next is a loop for bringing the decimal part in the correct way to the
+% If there was no decimal mark or if there was a decimal mark but no
+% decimal part, |\FC@r| will still be~1, which doesn't parse well with
+% |\secd@xt|, so a zero is appended, i.e., yielding~|10|.
+% \begin{macrocode}
+ \ifnum\FC@r<10 \FC@r=10 \fi
+% \end{macrocode}
+% Next is a loop for bringing the decimal part in the correct way to
% the integer part. The loop is performed the number of decimal
% digits to be printed (the~2 in |3,2| of the default setting). This also
-% means that if you specified more decimal digits than this, the excess
-% digit(s) will not be handled and a |\PackageWarning| will be given.
+% means that if you provided more decimal digits than this, the excess
+% digit(s) will not be handled and a |\PackageWarning| will be given,
+% showing these excess digits. This is truncation, not rounding!
% \begin{macrocode}
\def\i@ts##1##2{\count0=##2}
\afterassignment\i@ts\count@\sp@l
@@ -896,22 +1056,23 @@ indention=0pt,labelsep=colon,justification=raggedright}
\let\@@array=\@array
% \end{macrocode}
% \end{macro}
+% Much of the techniques here are repeated in |\LT@array|.
% \subsection{The sumline, close to a postamble}
% \begin{macro}{\@mksumline}
% The construction of the sumline is much easier than that of the preamble
% for several reasons. It may be safely assumed that the preamble specifier
% is grammatically correct because it has already been screened by |\@mkpream|.
-% Furthermore most entries will simply add nothing to |\s@ml@ne|, e.g., |@|, |!|,
+% Furthermore, most entries will simply add nothing to |\s@ml@ne|, e.g., |@|, |!|,
% and \verb+|+ can be fully ignored. Ampersands are only inserted by |c|, |l|, |r|,
% |p|, |m|, and |b|. So a specifier like |@{}lflf@{}| will yield the sumline
% |&\a&&\a\\|, (where |\a| is a macro that prints the desired result of the column,
-% see later). Had the specifier been \verb+l|f||@{ }l|f+, then the same sumline must
+% see below). Had the specifier been \verb+l|f||@{ }l|f+, then the same sumline must
% be constructed: all difficulties are already picked up and solved in the creation
% of the preamble.
%
% In reality the sumline must be constructed from the expanded form of the
% specifier, so |@{}lf@{}| will expand as
-% |@{}l>{\b@fi{.}{,}{3,2}}r<{\e@fi}@{}|. The rules for constructing the
+% |@{}l>{\b@fi{.}{,}{3,2}{}}r<{\e@fi}@{}|. The rules for constructing the
% sumline are now very simple:
% \begin{compactitem}[$\bullet$]
% \item add an ampersand when |c|, |l|, |r|, |p|, |m|, or |b| is found,
@@ -925,7 +1086,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% be written, but that is not necessary: |\@testpach| can do all the work,
% although much of it will be discarded. Here speed is sacrificed for space
% and this can be afforded because the creation of the sumline is done only
-% once per |\tabular|.
+% once per |\tabular| or |\longtable|.
%
% The start is copied from |\@mkpream|.
% \begin{macrocode}
@@ -939,12 +1100,9 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \end{macrocode}
% Then |\@mkpream| is picked up again.
% \begin{macrocode}
-\@temptokena{#1}
-\@tempswatrue
+\@temptokena{#1}\@tempswatrue
\@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
-\count0\m@ne
-\let\the@toks\relax
-\prepnext@tok
+\count0\m@ne\let\the@toks\relax\prepnext@tok
% \end{macrocode}
% Next is the loop over all tokens in the expanded form of the specifier. The change
% with respect to |\@mkpream| is that the body of the loop is now only dealing
@@ -955,10 +1113,8 @@ indention=0pt,labelsep=colon,justification=raggedright}
\expandafter \@tfor \expandafter \@nextchar
\expandafter :\expandafter =\the\@temptokena \do
{\@testpach
- \ifcase \@chclass \@classfz
- \or \or \@classfii \or
- \or \or \or \or \or \or \or \@classfx \fi
- \@lastchclass\@chclass}%
+ \ifcase \@chclass \@classfz \or \or \@classfii \or \or \or \or \or
+ \or \or \or \@classfx \fi\@lastchclass\@chclass}%
% \end{macrocode}
% And the macro is finished by applying the |\aut@check| and appending the
% |\\| to the sumline. Note that the |\aut@check| is performed {\itshape
@@ -1006,7 +1162,8 @@ indention=0pt,labelsep=colon,justification=raggedright}
\edef\t@stn{\string\e@fi}
\ifx\t@stm\t@stn
% \end{macrocode}
-% If both tests yield |true| then add the macro to typeset everything.
+% If both tests yield |true|, i.e., we encountered a |<{\e@fi}| where we expect one to
+% find, then add the macro to typeset everything.
% \begin{macrocode}
\@addtosumline{\prr@sult}
% \end{macrocode}
@@ -1074,12 +1231,14 @@ indention=0pt,labelsep=colon,justification=raggedright}
\def\sumline{\@ifnextchar[\s@mline{\s@mline[2pt]}}
\def\s@mline[#1]{\global\s@mlinesep=#1 \s@ml@ne}
% \end{macrocode}
+% In the introduction it was stated that |\sumline| has two options, but in
+% reality that second option is the option to |\\| that is issued by |\s@ml@ne|.
% \end{macro}
% \begin{macro}{\prr@sult}
% The macro |\prr@sult| actually puts the information together. It starts
% like |\leeg|.
% \begin{macrocode}
-\def\prr@sult{$\egroup \let\e@fi=\relax
+\def\prr@sult{$\egroup \let\e@fi=\relax \let\FCform@t=\FCform@tt
% \end{macrocode}
% Then the information for the last line is computed. It is not sufficient
% to calculate the width of the result (in points) to use that as the width
@@ -1126,7 +1285,7 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
% table but it doesn't increase the totals of that column by~3 (assuming
% |3,2| coding for the separations). But you won't cheat, won't you?
% It may affect the width, so be careful: don't insert the unabridged
-% version of Romeo and Julia here.
+% version of Romeo and Juliet~\cite{RJ} here.
% \end{macro}
% \begin{macro}{\res@tsumline}
% Since all changes to the totals and widths of the columns are global,
@@ -1168,6 +1327,7 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
% If the list |\FC@chklist| is empty, the list for the automatic check is
% generated (which will remain empty if |\FCsc@l| is odd).
% \begin{macrocode}
+\def\FC@chklist{}
\def\aut@check{\ifx\@empty\FC@chklist\relax
\ifodd\FCsc@l\else
\count0=\@ne \count1=\FCsc@l
@@ -1217,12 +1377,84 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
\def\checkfcolumns#1#2{\noalign{\xdef\FC@chklist{\FC@chklist #1,#2;}}}
% \end{macrocode}
% \end{macro}
+% \subsection{Support for package longtable}
+% Package |longtable| is used for tables that may span multiple pages. |fcolumn| and
+% |longtable| work together as long as |longtable| is loaded first, so that |fcolumn|
+% can adapt one definition of |longtable|. If |longtable| is not loaded, that definition
+% is just that: a definition. If |longtable| is loaded before |fcolumn|, it is a
+% redefinition, and it should be. For that reason the user is warned (not loading
+% |longtable| is not an error if you don't use it) if |fcolumn| is loaded without prior
+% loading of |longtable|.
+% \begin{macrocode}
+\ifx\longtable\@undefined
+ \PackageWarning{fcolumn}{fcolumn is loaded without longtable. That's
+ OK, but\MessageBreak if you want to load longtable as well, make sure
+ \MessageBreak it is done before loading fcolumn}
+\fi
+% \end{macrocode}
+% \begin{macro}{\LT@array}
+% And here is the only definition of |longtable| that needs to be adapted a bit, to make
+% |fcolumn| work with that package.
+% \begin{macrocode}
+\def\LT@array[#1]#2{%
+ \refstepcounter{table}\stepcounter{LT@tables}%
+ \if l#1 \LTleft\z@\LTright\fill
+ \else\if r#1 \LTleft\fill\LTright\z@
+ \else\if c#1 \LTleft\fill\LTright\fill
+ \fi\fi\fi
+ \let\LT@mcol\multicolumn\let\LT@@tabarray\@tabarray\let\LT@@hl\hline
+ \def\@tabarray{\let\hline\LT@@hl \LT@@tabarray}%
+ \let\\\LT@tabularcr\let\tabularnewline\\%
+ \def\newpage{\noalign{\break}}%
+ \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
+ \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
+ \let\hline\LT@hline\let\kill\LT@kill\let\caption\LT@caption
+ \@tempdima\ht\strutbox\let\@endpbox\LT@endpbox
+ \ifx\extrarowheight\@undefined
+ \let\@acol\@tabacol\let\@classz\@tabclassz\let\@classiv\@tabclassiv
+ \def\@startpbox{\vtop\LT@startpbox}\let\@@startpbox
+ \@startpbox\let\@@endpbox\@endpbox\let\LT@LL@FM@cr\@tabularcr
+ \else
+ \advance\@tempdima\extrarowheight \col@sep\tabcolsep
+ \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
+ \fi
+ \setbox\@arstrutbox\hbox{\vrule\@height\arraystretch\@tempdima
+ \@depth\arraystretch\dp\strutbox\@width\z@}%
+ \let\@sharp##\let\protect\relax
+ \begingroup
+ \@mkpream{#2}%
+ \xdef\LT@bchunk{%
+ \global\advance\c@LT@chunks\@ne\global\LT@rows\z@
+ \setbox\z@\vbox\bgroup\LT@setprevdepth\tabskip\LTleft
+ \noexpand\halign to\hsize\bgroup\tabskip\z@\@arstrut
+ \@preamble\tabskip\LTright\cr}%
+ \endgroup
+% \end{macrocode}
+% Until this line it was just the code for |\LT@array| from package |longtable|.
+% The five lines of the next chunk are new to |\LT@array|. Their
+% purpose is the same as in |\@array| above.
+% \begin{macrocode}
+ \begingroup
+ \@mksumline{#2}%
+ \endgroup
+ \res@tsumline
+ \everycr{\noalign{\global\FCsc@l=0 }}%
+% \end{macrocode}
+% From here on |\LT@array| is picked up again.
+% \begin{macrocode}
+ \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
+ \LT@make@row\m@th\let\par\@empty
+ \lineskip\z@\baselineskip\z@\LT@bchunk}
+% \end{macrocode}
+% \end{macro}
% That's it!
% \section*{Acknowledgement}
% Thanks to Karl Berry for valuable comments regarding the consistency of
% the installation procedure of this version. Frank Mittelbach gave
% various useful suggestions for improving the input parsing as well as
-% hints to make the package more \LaTeX-like.
+% hints to make the package more \LaTeX-like. He also challenged me to make |fcolumn|
+% compatible with |longtable|. Christian Hoff's request on column formatting triggered
+% many happy hours of coding.
% \bibliographystyle{plain}
% \begin{thebibliography}{9}
% \itemsep0pt
@@ -1232,10 +1464,12 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
% A new implementation of \LaTeX's |tabular| and |array| environment.
% \bibitem{booktabs} Simon Fear. Publication quality tables in \LaTeX.
% \bibitem{dcolumn} David Carlisle. The |dcolumn| package.
+% \bibitem{longtable} David Carlisle. The |longtable| package.
% \bibitem{world_economy} According to the IMF \url{www.imf.org}.
% \bibitem{CandTB} Donald Knuth, Computers \& Typesetting/B, \TeX: the program.
% \bibitem{CandTA} Donald Knuth, Computers \& Typesetting/A, The \TeX book.
% \bibitem{TAOCP1} Donald Knuth, The Art of Computers Programming, volume~1.
+% \bibitem{RJ} William Shakespeare, Romeo and Juliet, a tragedy (1597).
% \end{thebibliography}
% \Finale
\endinput
diff --git a/macros/latex/contrib/fcolumn/fcolumn.ins b/macros/latex/contrib/fcolumn/fcolumn.ins
index fcfed706ee..5c2e3e7d48 100644
--- a/macros/latex/contrib/fcolumn/fcolumn.ins
+++ b/macros/latex/contrib/fcolumn/fcolumn.ins
@@ -17,7 +17,7 @@
This is a generated file.
-Copyright (C) 2015--2019 by Edgar Olthof
+Copyright (C) 2015--2021 by Edgar Olthof
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -42,9 +42,9 @@ LaTeX version 1999/12/01 or later.
\Msg{* fcolumn.sty *}
\Msg{* *}
\Msg{* into a directory searched by TeX. *}
-\Msg{* To produce the documentation, run the file *}
-\Msg{* fcolumn.dtx through LaTeX. Make sure to update *}
-\Msg{* the glossary and index by makeindex: *}
+\Msg{* To produce the documentation, type ``make'' or *}
+\Msg{* run the file fcolumn.dtx through LaTeX. Make sure *}
+\Msg{* to update the glossary and index by makeindex: *}
\Msg{* *}
\Msg{* makeindex -s gglo.ist -o fcolumn.gls fcolumn.glo *}
\Msg{* makeindex -s gglo.ist -o fcolumn.ind fcolumn.idx *}
diff --git a/macros/latex/contrib/fcolumn/fcolumn.pdf b/macros/latex/contrib/fcolumn/fcolumn.pdf
index 79c96886b2..16ea57e5a7 100644
--- a/macros/latex/contrib/fcolumn/fcolumn.pdf
+++ b/macros/latex/contrib/fcolumn/fcolumn.pdf
Binary files differ
diff --git a/macros/latex/contrib/fcolumn/fcolumn.sty b/macros/latex/contrib/fcolumn/fcolumn.sty
deleted file mode 100644
index 479dff097a..0000000000
--- a/macros/latex/contrib/fcolumn/fcolumn.sty
+++ /dev/null
@@ -1,299 +0,0 @@
-%%
-%% This is file `fcolumn.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% fcolumn.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% Copyright (C) 2015--2019 by Edgar Olthof
-%%
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either
-%% version 1.3 of this license or (at your option) any later
-%% version. The latest version of this license is in
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3 or later is part of all distributions of
-%% LaTeX version 1999/12/01 or later.
-\ProvidesPackage{fcolumn}
- [2019/04/24 v1.2 Automatic Currency Package (EHTO)]
-\NeedsTeXFormat{LaTeX2e}
-\RequirePackage{array}[v2.4k]
-\newif\ifstrict@ccounting \strict@ccountingfalse
-\DeclareOption{strict}{\strict@ccountingtrue}
-\ProcessOptions
-\newcolumntype{F}[3]{>{\b@fi{#1}{#2}{#3}}r<{\e@fi}}
-\newcolumntype{f}{F{.}{,}{3,2}}
-\newcount\FCsc@l \FCsc@l=0 \newcount\FCtc@l \FCtc@l=0
-\newif\ifwiths@p
-\def\geldm@cro#1#2{\withs@pfalse
-\afterassignment\g@ldm@cro\count@#1\relax{#2}}
-\def\g@ldm@cro#1\relax#2{\ifnum#2<0 \ifstrict@ccounting (\else -\fi
- \count2=-#2 \else\count2=#2
-\fi
-\count4=\ifx\relax#1\relax 2 \else \@gobble#1\relax\fi
-\count3=0
-\loop\ifnum\count3<\count4
- \divide\count2 by 10 \advance\count3 by \@ne
-\repeat
-\g@ldens{\the\count@}%
-\ifnum\count3>0\decim@lmark
- \ifnum#2>0 \count2=-#2\else\count2=#2 \fi
- \loop\ifnum\count3>0
- \divide\count2 by 10 \advance\count3 by \m@ne
- \repeat
- \loop\ifnum\count3<\count4
- \multiply\count2 by 10 \advance\count3 by \@ne
- \repeat
- \ifnum#2>0 \advance\count2 by #2
- \else \advance\count2 by -#2
- \fi
- \zerop@d{\number\count3}{\number\count2}%
-\fi
-\ifx\FCs@gn\m@ne \ifnum#2<0 \ifstrict@ccounting
- \rlap{)~!}\else\rlap{~!}\fi\else\ifstrict@ccounting
- \rlap{\phantom{)}~!}\else\rlap{~!}\fi\fi
-\else \ifnum#2<0 \ifstrict@ccounting\rlap{)}\fi\fi
-\fi}
-\def\g@ldens#1{{\count3=\count2 \count0=#1
-\ifnum\count0<1 \count0=3 \fi
-\loop \ifnum\count0>0 \divide\count2 by 10 \advance\count0 by \m@ne
-\repeat
-\ifnum\count2>0 \g@ldens{#1}\fi
-\count0=#1
-\ifnum\count0<1 \count0=3 \fi
-\loop \ifnum\count0>0 \multiply\count2 by 10 \advance\count0 by \m@ne
-\repeat
-\count2=-\count2
-\advance\count2 by \count3 \du@zendprint{#1}}}
-\def\du@zendprint#1{\ifwiths@p\ifnum#1>0 \sep@rator\fi
- \zerop@d{#1}{\number\count2}%
-\else\zerop@d1{\number\count2}\fi\global\withs@ptrue}
-\def\zerop@d#1#2{{\count0=1 \count1=#2
-\loop \divide \count1 by 10 \ifnum\count1>0 \advance\count0 by \@ne
-\repeat
-\ifnum#1>0
- \loop \ifnum\count0<#1\relax 0\advance\count0 by \@ne
- \repeat
-\else
- \advance\count0 by -3
- \loop \ifnum\count0<0 0\advance\count0 by \@ne
- \repeat
-\fi\number#2}}
-\def\zetg@ld#1#2{\count0=#2\relax \let\FCs@gn=\@ne
-\ifnum\count0<0
- \ifnum\csname FCtot@\romannumeral\FCsc@l\endcsname<0
- \let\FCs@gn=\m@ne
- \fi
-\fi
-\ifnum\count0>0
- \ifnum\csname FCtot@\romannumeral\FCsc@l\endcsname>0
- \let\FCs@gn=\m@ne
- \fi
-\fi
-\global\advance\csname FCtot@\romannumeral\FCsc@l\endcsname by \count0
-\ifx\FCs@gn\m@ne
- \ifnum\count0>0 \let\FCs@gn\@ne \fi
- \count0=\csname FCtot@\romannumeral\FCsc@l\endcsname
- \multiply\count0 by \FCs@gn
- \ifnum\count0<0
- \let\FCs@gn=\m@ne
- \PackageError{fcolumn}{Register overflow}{Overflow occurred
- in fcolumn \number\FCsc@l. Check your table.}%
- \else\let\FCs@gn=\@ne
- \fi
-\fi
-\setbox0=\hbox{$\geldm@cro{#1}{#2}$}%
-\ifdim\wd0>\csname FCwd@\romannumeral\FCsc@l\endcsname
- \global\csname FCwd@\romannumeral\FCsc@l\endcsname=\wd0
-\fi\unhbox0}
-\newcount\FC@l \newcount\FC@r
-\def\FC@chklist{}
-\def\setucc@de#1#2\relax{\uccode`\~=`#1 }
-\def\b@fi#1#2#3{%
-\def\sep@xt##1##2\end{\def\sep@rator{{##1}}}%
-\sep@xt#1\end\def\decim@lmark{{#2}}%
-\def\sp@l{#3}\global\advance\FCsc@l by \@ne
-\global\FC@l=0 \global\FC@r=1
-\let\FCs@gn=\@ne\relax \setbox0\hbox\bgroup$%
-\uccode`\~=`0\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=0}
-\uccode`\~=`1\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=1}
-\uccode`\~=`2\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=2}
-\uccode`\~=`3\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=3}
-\uccode`\~=`4\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=4}
-\uccode`\~=`5\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=5}
-\uccode`\~=`6\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=6}
-\uccode`\~=`7\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=7}
-\uccode`\~=`8\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=8}
-\uccode`\~=`9\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=9}
-\def\deactdecm@rk##1##2\relax{\mathcode`##1=0 }%
-\afterassignment\setucc@de\count@#3\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem@thcodes\fi
-\afterassignment\deactdecm@rk\count@#3\relax \global\FC@r=1}%
-\def\d@cm##1##2{\count@=\mathcode`##1 }
-\ifnum\uccode`\~=`. \uccode`\~=`,\relax\else \uccode`\~=`.\relax\fi
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem@thcodes\fi
-\afterassignment\d@cm\count@#3\relax
-\ifnum\count@=\mathcode`- \expandafter\global\FC@l=\the\FC@l
-\else \expandafter\global\FC@r=\the\FC@r\fi}%
-\uccode`\~=`+\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem@thcodes\fi\global\FC@l=0}%
-\uccode`\~=`-\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem@thcodes\fi\global\let\FCs@gn\m@ne \global\FC@l=0}%
-\mathcode`-="8000 \mathcode`+=\mathcode`- \mathcode`.=\mathcode`-
-\def\actdecm@rk##1##2\relax{\ifx##1.\relax \mathcode`,=\mathcode`-
-\else \mathcode`##1=\mathcode`- \fi}%
-\afterassignment\actdecm@rk\count@#3\relax
-\mathcode`\0=\mathcode`- \mathcode`\1=\mathcode`-
-\mathcode`\2=\mathcode`- \mathcode`\3=\mathcode`-
-\mathcode`\4=\mathcode`- \mathcode`\5=\mathcode`-
-\mathcode`\6=\mathcode`- \mathcode`\7=\mathcode`-
-\mathcode`\8=\mathcode`- \mathcode`\9=\mathcode`- }
-\def\e@fi{\ifnum\mathcode`\0=\mathcode`- \global\FC@r=\m@ne\fi$\egroup
-\ifnum\FC@r>0
- \ifnum\FC@r<10 \multiply\FC@r by 10 \fi
- \def\i@ts##1##2{\count0=##2}
- \afterassignment\i@ts\count@\sp@l
- \loop\ifnum\count0>0 \multiply\FC@l by 10
- \expandafter\secd@xt\number\FC@r\end \advance\count0 by \m@ne
- \repeat
- \ifnum\FC@r>10
- \def\tw@l##1##2\relax{##2}
- \PackageWarning{fcolumn}{Excess digit\ifnum\FC@r>100 s\fi\space
- ``\expandafter\tw@l\number\FC@r\relax'' in decimal part
- \MessageBreak ignored}
- \fi
- \ifx\FCs@gn\m@ne\relax \FC@l=-\FC@l \fi
- \zetg@ld{\sp@l}{\FC@l}%
-\fi}
-\def\secd@xt#1#2#3\end{\advance\FC@l by #2
-\FC@r=#1#3 \ifnum\FC@r<10 \multiply\FC@r by 10 \fi}
-\def\restorem@thcodes{\mathcode`\0=0 \mathcode`\1=0
-\mathcode`\2=0 \mathcode`\3=0 \mathcode`\4=0 \mathcode`\5=0
-\mathcode`\6=0 \mathcode`\7=0 \mathcode`\8=0 \mathcode`\9=0 }
-\def\@array[#1]#2{%
-\@tempdima \ht \strutbox
-\advance \@tempdima by\extrarowheight
-\setbox \@arstrutbox \hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
-\def\ialign{\everycr{\noalign{\global\FCsc@l=0 }}%
- \tabskip\z@skip\halign}
-\begingroup
-\@mkpream{#2}%
-\xdef\@preamble{\noexpand \ialign \@halignto
-\bgroup\@arstrut\@preamble\tabskip\z@\cr}%
-\endgroup
-\begingroup
-\@mksumline{#2}%
-\endgroup
-\res@tsumline
-\@arrayleft
-\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
-\bgroup
-\let \@sharp ##\let \protect \relax
-\lineskip \z@
-\baselineskip \z@
-\m@th
-\let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
-\let\@@array=\@array
-\def\@mksumline#1{\gdef\s@ml@ne{}\@lastchclass 4 \@firstamptrue
-\global\FCsc@l=0
-\let\prr@sult=\relax
-\@temptokena{#1}
-\@tempswatrue
-\@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
-\count0\m@ne
-\let\the@toks\relax
-\prepnext@tok
-\expandafter \@tfor \expandafter \@nextchar
- \expandafter :\expandafter =\the\@temptokena \do
- {\@testpach
- \ifcase \@chclass \@classfz
- \or \or \@classfii \or
- \or \or \or \or \or \or \or \@classfx \fi
- \@lastchclass\@chclass}%
-\xdef\s@ml@ne{\s@ml@ne\noexpand\aut@check\noexpand\\}}
-\def\@addtosumline#1{\xdef\s@ml@ne{\s@ml@ne #1}}
-\def\@classfx{\if@firstamp \@firstampfalse \else \@addtosumline &\fi}
-\def\@classfz{\ifnum\@chnum<\thr@@ \@classfx\fi}
-\def\@classfii{\ifnum\@lastchclass=8
- \edef\t@stm{\expandafter\string\@nextchar}
- \edef\t@stn{\string\e@fi}
- \ifx\t@stm\t@stn
- \@addtosumline{\prr@sult}
- \global\advance\FCsc@l by \@ne
- \ifnum\FCsc@l>\FCtc@l
- \expandafter\ifx\csname FCtot@\romannumeral\FCsc@l\endcsname\relax
- \expandafter\newcount\csname FCtot@\romannumeral\FCsc@l\endcsname
- \else
- \PackageError{fcolumn}{Name clash for <count>}{\expandafter\csname
- FCtot@\romannumeral\FCsc@l\endcsname is already defined and it may
- not even be a <count>. If you're\MessageBreak sure it is a <count>,
- you can press <enter> now and I'll proceed, but things\MessageBreak
- will get overwritten.}%
- \fi
- \expandafter\ifx\csname FCwd@\romannumeral\FCsc@l\endcsname\relax
- \expandafter\newdimen\csname FCwd@\romannumeral\FCsc@l\endcsname
- \global\FCtc@l=\FCsc@l
- \else
- \PackageError{fcolumn}{Name clash for <dimen>}{\expandafter\csname
- FCwd@\romannumeral\FCsc@l\endcsname is already defined and it may
- not even be a <dimen>. If you're\MessageBreak sure it is a <dimen>,
- you can press <enter> now and I'll proceed, but things\MessageBreak
- will get overwritten.}%
- \fi
- \fi
- \fi
-\fi}
-\newdimen\s@mlinesep
-\def\sumline{\@ifnextchar[\s@mline{\s@mline[2pt]}}
-\def\s@mline[#1]{\global\s@mlinesep=#1 \s@ml@ne}
-\def\prr@sult{$\egroup \let\e@fi=\relax
-\setbox0=\hbox{$\geldm@cro{\sp@l}{\number\csname
-FCtot@\romannumeral\FCsc@l\endcsname}$}%
-\ifdim\wd0>\csname FCwd@\romannumeral\FCsc@l\endcsname
- \global\csname FCwd@\romannumeral\FCsc@l\endcsname=\wd0
-\fi
-\vbox{\hrule width \csname FCwd@\romannumeral\FCsc@l\endcsname
-\vskip\s@mlinesep
-\hbox to \csname FCwd@\romannumeral\FCsc@l\endcsname{\hfil\unhbox0}}}
-\def\leeg#1{$\egroup \let\e@fi=\relax #1}
-\def\res@tsumline{\FCsc@l=\FCtc@l\loop\ifnum\FCsc@l>0
- \global\csname FCtot@\romannumeral\FCsc@l\endcsname=0
- \global\csname FCwd@\romannumeral\FCsc@l\endcsname=\z@
- \advance\FCsc@l by \m@ne\repeat}
-\def\resetsumline{\noalign{\res@tsumline}}
-\def\aut@check{\ifx\@empty\FC@chklist\relax
- \ifodd\FCsc@l\else
- \count0=\@ne \count1=\FCsc@l
- \divide\count1 by \tw@
- \loop\ifnum\count1<\FCsc@l
- \advance\count1 by \@ne
- \xdef\FC@chklist{\FC@chklist\number\count0,\number\count1;}%
- \advance\count0 by\@ne
- \repeat
- \fi
-\fi
-\loop
- \ifx\FC@chklist\@empty\let\FCs@gn=\@ne\else\let\FCs@gn=\m@ne\fi
- \ifx\FCs@gn\m@ne
- \expandafter\fre@t\FC@chklist\end
- \ifnum\csname FCtot@\romannumeral\count0\endcsname=
- \csname FCtot@\romannumeral\count1\endcsname\else
- \PackageWarningNoLine{fcolumn}{F-columns \number\count0 \space
- and \number\count1 \space do not balance}%
- \fi
-\repeat}
-\def\fre@t#1,#2;#3\end{\count0=#1 \count1=#2 \xdef\FC@chklist{#3}}
-\def\checkfcolumns#1#2{\noalign{\xdef\FC@chklist{\FC@chklist #1,#2;}}}
-\endinput
-%%
-%% End of file `fcolumn.sty'.
diff --git a/macros/latex/contrib/fcolumn/makefile b/macros/latex/contrib/fcolumn/makefile
index 7a751b7c92..3af7c8a619 100644
--- a/macros/latex/contrib/fcolumn/makefile
+++ b/macros/latex/contrib/fcolumn/makefile
@@ -1,4 +1,5 @@
-.SUFFIXES: .pdf .glo .gls .ind .idx .dtx .sty .ins
+.SUFFIXES: .dtx .glo .gls .idx .ind .ins .pdf .sty
+DIST=fcolumn.dtx fcolumn.ins fcolumn.pdf fcolumn.sty makefile README
.ins.sty:
pdflatex $*.ins
@@ -18,23 +19,20 @@
.dtx.pdf:
pdflatex $*.dtx
-all: fcolumn.pdf
+all: fcolumn.sty fcolumn.pdf
install:
tex fcolumn.ins
-dist: fcolumn.dtx fcolumn.ins fcolumn.sty fcolumn.pdf README makefile
- mkdir fcolumn; cp fcolumn.dtx fcolumn; cp fcolumn.ins fcolumn; \
- cp fcolumn.sty fcolumn; cp fcolumn.pdf fcolumn; cp README fcolumn; \
- cp makefile fcolumn; tar -czf fcolumn.tgz fcolumn; rm -r fcolumn
+dist: $(DIST)
+ mkdir FCv1.3; cp $(DIST) FCv1.3; tar -czf fcolumn.tgz FCv1.3; rm -r FCv1.3
fcolumn.pdf: fcolumn.dtx fcolumn.gls fcolumn.ind fcolumn.sty
-fcolumn.idx: fcolumn.dtx
+fcolumn.glo fcolumn.idx: fcolumn.dtx
fcolumn.ind: fcolumn.idx
-fcolumn.glo: fcolumn.dtx
fcolumn.gls: fcolumn.glo
.PHONY: clean
clean:
- -rm fcolumn.pdf fcolumn.sty fcolumn.log fcolumn.glo fcolumn.gls \
- fcolumn.ind fcolumn.idx fcolumn.aux fcolumn.ilg
+ -rm fcolumn.pdf fcolumn.sty fcolumn.log fcolumn.glo fcolumn.gls fcolumn.ind \
+ fcolumn.idx fcolumn.aux fcolumn.ilg fcolumn.out fcolumn.tgz
diff --git a/macros/latex/contrib/readablecv/README.md b/macros/latex/contrib/readablecv/README.md
index ddd6fc54b6..cf54150fea 100644
--- a/macros/latex/contrib/readablecv/README.md
+++ b/macros/latex/contrib/readablecv/README.md
@@ -1,23 +1,5 @@
- %% ReadableCV
- %% Copyright 2020 Philip Stone
- %
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % of this license or (at your option) any later version.
- % The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
- % version 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is Philip Stone
- %
- % This work consists of the files ReadableCV.cls and ReadableCV.tex
+ReadableCV v3
+This class, ReadableCV, is a re - working of how I wrote my own CV using other software. The intention is that it is a highly readable CV which is easy for a company to find the information which shows you as the best person for the job.
-This class, ReadableCV, is a re - working of how I wrote my own CV using other software.
-The intention is that it is a highly readable CV which is easy for a company to examine.
-
-The class file has plenty of comments describing it and the accompanying .tex file,
-whilst serving as an example of how to use the class, also contains plenty comments. \ No newline at end of file
+The class file has plenty of comments describing it and the accompanying .tex file, whilst serving as an example of how to use the class, also contains plenty of comments.
diff --git a/macros/latex/contrib/readablecv/ReadableCV.cls b/macros/latex/contrib/readablecv/ReadableCV.cls
index db6197592d..a6fbe38354 100644
--- a/macros/latex/contrib/readablecv/ReadableCV.cls
+++ b/macros/latex/contrib/readablecv/ReadableCV.cls
@@ -1,5 +1,5 @@
%% ReadableCV
-%% Copyright 2020 Philip Stone
+%% Copyright 2021 Philip Stone
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,19 +15,27 @@
%
% This work consists of the files ReadableCV.cls and ReadableCV.tex
-\def\ClassDate{2020/05/14}
-\def\ClassVersion{2.0}
+\NeedsTeXFormat{LaTeX2e}
+\def\ClassDate{2021/01/09}
+\def\ClassVersion{3.0}
\ProvidesClass{ReadableCV}[\ClassDate ReadableCV \ClassVersion class written by Philip Stone]
-\LoadClass[10pt, a4paper, onecolumn, oneside, notitlepage]{article}
-\NeedsTeXFormat{LaTeX2e}
+\DeclareOption{twocolumn}{\OptionNotUsed}
+\DeclareOption{twoside}{\OptionNotUsed}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}
+\ExecuteOptions{a4paper}
+\ProcessOptions\relax
+\LoadClass[10pt, onecolumn, oneside]{memoir}
+
+\setlrmarginsandblock{1.5cm}{1.5cm}{*}
+\setulmarginsandblock{1.5cm}{*}{*}
+\checkandfixthelayout
+
%set up PDF metadata
\usepackage{hyperref}
-% Set up paper size and language
-\RequirePackage[a4paper, total={7in, 10in}]{geometry}
-\RequirePackage{titlesec}
+%Alter how date is printed
\RequirePackage[nodayofweek]{datetime}
% Allow use of multiple columns
@@ -37,11 +45,12 @@
\RequirePackage{marvosym}
\RequirePackage{graphicx}
\RequirePackage[x11names]{xcolor}
-\RequirePackage[sfdefault,thin]{roboto}
+\RequirePackage[thin]{roboto}
\RequirePackage[T1]{fontenc}
\pagestyle{empty}
-\setlength{\parindent}{0em}
+%\setlength{\parindent}{0em}
+\addtolength{\parskip}{6pt}
% Allow use of if statements
\RequirePackage{etoolbox}
@@ -61,12 +70,10 @@
% Displays section title or heading
\newcommand{\newHeading}[2]{
\begin{\SectionAlignment}
-% \vspace{\baselineskip}
- \bigskip
- \textcolor{\HeadingColour}{\textbf{\Large{#1}}}
+ \smallskip
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Large{#1}}}}
\smallskip
\hrule
-% \vspace{\baselineskip}
\end{\SectionAlignment}
}
@@ -106,11 +113,11 @@
\newcommand{\HeaderText}{
- \begin{minipage}{1.0\linewidth}
+ \noindent\begin{minipage}{1.0\linewidth}
\begin{\HeaderAlignment}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\smallskip
\ifdefempty{\rcvmobileno}%
@@ -122,7 +129,7 @@
}
{
%mobile number not defined, home number is
- \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
}
}
{
@@ -130,12 +137,12 @@
\ifdefempty{\rcvhomeno}%
{
%if mobile number defined, home number not defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
}
{
%if home number and mobile number defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
- }
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ }}
}
\ifdefempty{\rcvemailaddr}%
@@ -146,7 +153,7 @@
}
{
%email not defined, web is
- \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
}
}
{
@@ -154,12 +161,12 @@
\ifdefempty{\rcvwebaddr}%
{
%if email defined, web not defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
}
{
%if email and web defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
- }
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ }}
}
\end{\HeaderAlignment}
\end{minipage}
@@ -168,27 +175,27 @@
\newcommand{\HeaderRightContact}{
% Name and jobtitle on the left. Contact details on the right.
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\end{flushleft}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{flushright}
\ifdefempty{\rcvmobileno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}}
\ifdefempty{\rcvhomeno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
\ifdefempty{\rcvemailaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}}
\ifdefempty{\rcvwebaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
\end{flushright}
\end{minipage}
}
@@ -196,27 +203,27 @@
\newcommand{\HeaderLeftContact}{
% Name and jobtitle on the right. Contact details on the left.
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
\ifdefempty{\rcvmobileno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}}
\ifdefempty{\rcvhomeno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
\ifdefempty{\rcvemailaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}}
\ifdefempty{\rcvwebaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
\end{flushleft}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{flushright}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\end{flushright}
\end{minipage}
@@ -230,16 +237,16 @@
}
\newcommand{\HeaderLeftImage}{
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
\includegraphics[width=2.5cm,height=2.5cm,keepaspectratio]{\rcvimageloc}
\end{flushleft}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{flushright}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\smallskip
\ifdefempty{\rcvmobileno}%
@@ -251,7 +258,7 @@
}
{
%mobile number not defined, home number is
- \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}}\ \robotoThin{\rcvhomeno}\\}
}
}
{
@@ -259,11 +266,11 @@
\ifdefempty{\rcvhomeno}%
{
%if mobile number defined, home number not defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
}
{
%if home number and mobile number defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
}
}
@@ -275,7 +282,7 @@
}
{
%email not defined, web is
- \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
}
}
{
@@ -283,11 +290,11 @@
\ifdefempty{\rcvwebaddr}%
{
%if email defined, web not defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
}
{
%if email and web defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
}
}
\end{flushright}
@@ -295,11 +302,11 @@
}
\newcommand{\HeaderRightImage}{
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\smallskip
\ifdefempty{\rcvmobileno}%
@@ -311,7 +318,7 @@
}
{
%mobile number not defined, home number is
- \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
}
}
{
@@ -319,11 +326,11 @@
\ifdefempty{\rcvhomeno}%
{
%if mobile number defined, home number not defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
}
{
%if home number and mobile number defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
}
}
@@ -335,7 +342,7 @@
}
{
%email not defined, web is
- \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
}
}
{
@@ -343,11 +350,11 @@
\ifdefempty{\rcvwebaddr}%
{
%if email defined, web not defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
}
{
%if email and web defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
}
}
\end{flushleft}
@@ -419,7 +426,7 @@
}
}
- \vspace{\baselineskip}
+% \vspace{\baselineskip}
}
\newcommand{\addSkills}[9]{
@@ -464,34 +471,66 @@
% including dates [1], job title [2],
% company name [3] and role summary [4]
+\vspace{0.5em}
+\begin{samepage}
\iftoggle{jobfirst}{
% Display job before company
- \begin{tabular}{@{}p{3cm} l}
+ \noindent\begin{tabular}{@{}p{3cm} l}
\textbf{#1} & \textbf{#2}\\
& \textbf{#3}\\
\end{tabular}
}
{
% Display company before job
- \begin{tabular}{@{}p{3cm} l}
+ \noindent\begin{tabular}{@{}p{3cm} l}
\textbf{#1} & \textbf{#3}\\
& \textbf{#2}\\
\end{tabular}
}
- \vspace{\baselineskip}
- \textit{Role outline} \par \par \hspace{2em}#4 \bigskip
+ \vspace{-0.5em}
+ \noindent\sffamily{\textit{Role outline}} \rmfamily \par #4 \vspace{\baselineskip}
+\end{samepage}
}
-\newcommand{\roleAchievements}[5]{
- % Adds up to five achievements in an itemized list
- \textit{Key achievements} \par \par
-
+\newcommand{\roleResponsibilities}[5]{
+ % Adds up to five responsibilities in an itemized list
+ \vspace{\baselineskip}
+
+\noindent\textit{Responsibilities}
+\vspace{-1em}
+
+ \def\rone{#1}
+ \def\rtwo{#2}
+ \def\rthree{#3}
+ \def\rfour{#4}
+ \def\rfive{#5}
+
+ \begin{itemize}
+ \ifdefempty{\rone}{}{\item \rone}
+ \ifdefempty{\rtwo}{}{\item \rtwo}
+ \ifdefempty{\rthree}{}{\item \rthree}
+ \ifdefempty{\rfour}{}{\item \rfour}
+ \ifdefempty{\rfive}{}{\item \rfive}
+ \end{itemize}
+
+% \bigskip
+}
+
+\newcommand{\roleAchievements}[6]{
+ % Adds up to six achievements in an itemized list
+
\def\aone{#1}
\def\atwo{#2}
\def\athree{#3}
\def\afour{#4}
\def\afive{#5}
+ \def\asix{#6}
+
+% \begin{samepage}
+ \vspace{-0.5em}
+ \noindent\sffamily{\textit{Achievements}}\rmfamily
+ \vspace{-1em}
\begin{itemize}
\ifdefempty{\aone}{}{\item \aone}
@@ -499,9 +538,9 @@
\ifdefempty{\athree}{}{\item \athree}
\ifdefempty{\afour}{}{\item \afour}
\ifdefempty{\afive}{}{\item \afive}
+ \ifdefempty{\asix}{}{\item \asix}
\end{itemize}
-
- \bigskip
+%\end{samepage}
}
\newcommand{\newCourse}[4]{
@@ -540,13 +579,14 @@
\newcommand{\setRecpPostcode}[1]{\def\recppostcode{#1}}
\newcommand{\makeLetter}{
+ \setlength{\parindent}{0em}
\begin{flushright}
\today
\end{flushright}
\bigskip \bigskip
- \recpname \\
+ \noindent\recpname \\
\ifdefempty{\recpjobtitle}{}{\recpjobtitle \\}
\recproad \\ \recptown \\ \recpcity \\ \recppostcode
diff --git a/macros/latex/contrib/readablecv/ReadableCV.pdf b/macros/latex/contrib/readablecv/ReadableCV.pdf
index 509ceae98a..63c79940e7 100644
--- a/macros/latex/contrib/readablecv/ReadableCV.pdf
+++ b/macros/latex/contrib/readablecv/ReadableCV.pdf
Binary files differ
diff --git a/macros/latex/contrib/readablecv/ReadableCV.tex b/macros/latex/contrib/readablecv/ReadableCV.tex
index 3a148b61a3..eee0bf4459 100644
--- a/macros/latex/contrib/readablecv/ReadableCV.tex
+++ b/macros/latex/contrib/readablecv/ReadableCV.tex
@@ -1,12 +1,10 @@
-\documentclass{ReadableCV}
+% Change the size of the paper your CV will be printed on
+% by entering either a4paper or letterpaper here.
+\documentclass[a4paper]{ReadableCV}
% Set color of body text
\color{black}
-% Set indent and paragraph formatting
-\setlength{\parindent}{0pt}
-\addtolength{\parskip}{6pt}
-
\begin{document}
% Set page colour using X11names colour definitions
@@ -15,7 +13,7 @@
% Set header details being aligned to the right or left
% If an image is displayed it will be shown on the
% opposite side to what is set here.
-\setHeaderAlignment{right}
+\setHeaderAlignment{left}
% Set colour of all headings, header highlights
\setHeadingColours{SlateGray3}
@@ -33,12 +31,12 @@
% Set up information needed for header.
% If you do not want to include certain
% information use {} instead.
-\setYourName{Joe Bloggs}
-\setYourJobTitle{General Dogs - Body}
-\setYourMobileNo{0712 345 6789}
-\setYourHomeNo{0123 456 7890}
-\setYourEmailAddr{joebloggs@gmail.com}
-\setYourWebAddr{www.joebloggs.co.uk}
+\setYourName{Jobseeker}
+\setYourJobTitle{Job title}
+\setYourMobileNo{Mobile phone}
+\setYourHomeNo{Home phone}
+\setYourEmailAddr{Email address}
+\setYourWebAddr{Web address}
% Display header information
\showHeader
@@ -49,16 +47,22 @@
% Creates a new section title / heading
\newHeading{Personal Profile}
-Write some text here that explains a bit about what you can offer, things you have achieved etc.\ This should be around 4 - 6 lines but is entirely up to the user.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\newHeading{Core Skills}
% Add up to nine core skills. If they are
% all not needed use {} instead.
-\addSkills{one}{two}{three}
- {four}{five}{six}
- {seven}{eight}{nine}
-
+\addSkills{Skill one}
+ {Skill two}
+ {Skill three}
+ {Skill four}
+ {Skill five}
+ {Skill six}
+ {Skill seven}
+ {Skill eight}
+ {Skill nine}
+
\newHeading{Career Summary}
% Set up whether job title or company printed first
@@ -70,50 +74,72 @@ Write some text here that explains a bit about what you can offer, things you ha
% company name [3] and role summary [4]
% If a full history is required use \newrole and \roleAchievements
% If only a brief description needed then just use \newrole
-\newRole{2013 - present}
- {General Dogs - Body}
- {Bigcorp}
- {A short summary broadly detailing what the role involves.}
-
-\roleAchievements{one}
- {two}
- {three}
- {four}
- {five}
-
-\newRole{2000 - 2013}
- {Dishwasher}
- {Fleece them cafe}
- {A short summary broadly detailing what the role involves.}
-
-% This tends to be any training work send you on
-\newHeading{Professional Development}
-
-% Allows the display of a new course. Arguments are
-% [1] date, [2] course title, [3] awarding body and [4] grade
-% Leave grade blank if not required.
-% If JobFirst set then course title will be first
-% If CompanyFirst set then awarding body will be first
-\newCourse{2018}
- {Course Title}
- {Awarding body}
- {Grade}
+\newRole{2018 -- present}
+ {Job title}
+ {Company name}
+ {A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+
+\roleAchievements{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\newRole{2007 -- 2018}
+{Job title}
+{Company name}
+{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\roleAchievements{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\newRole{1999 -- 2006}
+{Job title}
+{Company name}
+{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\roleAchievements{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\newRole{2003 -- 2006}{Job title}{Company name}{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+\newRole{2002 -- 2003}{Job title}{Company name}{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+\newRole{2001 -- 2003}{Job title}{Company name}{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+% move, duplicate, delete or comment out the following line if necessary
+\newpage
% This is training you have done in your own time
\newHeading{Personal Development}
-\newCourse{2018}
- {Course Title}
- {Awarding body}
- {Grade}
+\newCourse{2019}
+{Course title}
+{Awarding body}{}
+
+\newCourse{2019}
+{Course title}
+{Awarding body}{}
+
+\newCourse{2019}
+{Course title}
+{Awarding body}{}
% School education
\newHeading{Education}
-
-\newCourse{2018}
- {Course Title}
- {Awarding body}
- {Grade}
+
+\newCourse{2000 - 2002}{Course title}{Awarding body}{}
+\newCourse{1996 - 1998}{Course title}{Awarding body}{}
+\newCourse{1994 - 1996}{Course title}{Awarding body}{}
+\newCourse{1989 - 1994}{Course title}{Awarding body}{}
\clearpage
@@ -122,6 +148,8 @@ Write some text here that explains a bit about what you can offer, things you ha
% Displays same header as on CV
\showHeader
+
+
% Name and address must be present but
% job title is optional
\setRecpName{Mr Deeds}
@@ -142,15 +170,16 @@ Dear \recpname,
Please find enclosed my CV in application for the post advertised in the [insert place advertised] on [date advert seen].
-The nature of my degree course has prepared me for this position. It involved a great deal of independent research, requiring initiative, self-motivation and a wide range of skills. For one course, [insert course], an understanding of the [insert sector] industry was essential. I found this subject very stimulating.
+The nature of my [qualification] has prepared me for this position. It involved a great deal of independent research, requiring initiative, self-motivation and a wide range of skills. One of my courses, [insert course], an understanding of the [insert sector] industry was essential. I found this subject very interesting.
-I am a fast and accurate writer, with a keen eye for detail and I should be very grateful for the opportunity to progress to market reporting. I am able to take on the responsibility of this position immediately, and have the enthusiasm and determination to ensure that I make a success of it.
+I am a fast and accurate writer, with a keen eye for detail and I should be very grateful for the opportunity to progress. I am able to take on the responsibility of this position immediately, and have the enthusiasm and determination to ensure that I make a success of it.
Thank you for taking the time to consider this application and I look forward to hearing from you in the near future.
% Do not remove the following line
\bigskip
+% comment, or uncomment, whichever you prefer to use
Yours sincerely, % if the opening is "Dear Mr(s) Doe,"
%Yours faithfully, % if the opening is "Dear Sir or Madam,"
diff --git a/macros/luatex/optex/README b/macros/luatex/optex/README
index 365ab41391..50d4f1d165 100644
--- a/macros/luatex/optex/README
+++ b/macros/luatex/optex/README
@@ -19,6 +19,14 @@ doc/ ... PDF version of the OpTeX documentation and sources.
History:
+<0.19> Jan. 2020
+ emoji support as pkg/emoji.opm.
+ non-braakable places generated by luavlna, suported as pkg/vlna.opm.
+ \begblock...\endblock introduced.
+ comment character allowed after \begtt.
+ more robust macros: \replstring, \table.
+ complete revision of documentation, spelling corrections.
+ Several bugs fixed.
<0.18> Dec. 2020
Font support for next 9 families added.
Font selection system improved.
diff --git a/macros/luatex/optex/base/alloc.opm b/macros/luatex/optex/base/alloc.opm
index 9526a5d934..56c1d3dd63 100644
--- a/macros/luatex/optex/base/alloc.opm
+++ b/macros/luatex/optex/base/alloc.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \newdimen {Allocators for registers <2020-05-12>} % loaded in format
@@ -31,11 +31,11 @@
\_countdef\_famalloc=18 \_famalloc=3
\_doc -----------------------------
- The common allocation macro
+ The common allocation macro
\`\_allocator` `\<sequence> {<type>} \<primitive declarator>`
- is defined. This idea was used in classical plain \TeX/ by
- Donald Knuth too but the macro from plain \TeX/ seems to be
- more complicated:).
+ is defined. This idea was used in classical plain \TeX/ by
+ Donald Knuth too but the macro from plain \TeX/ seems to be
+ more complicated:).
\_cod -----------------------------
\_def\_allocator #1#2#3{%
@@ -49,7 +49,7 @@
}
\_doc -----------------------------
- The allocation macros
+ The allocation macros
\`\newcount`, \`\newdimen`, \`\newskip`, \`\newmuskip`, \`\newbox`,
\`\newtoks`, \`\newread`, \`\newwrite` and \`\newfam`
are defined here.
@@ -72,7 +72,7 @@
\_cod -----------------------------
\_newcount\_insertalloc \_insertalloc=255
-\_chardef\_insertmin = 201
+\_chardef\_insertmin = 201
\_def\_newinsert #1{%
\_global\_advance\_insertalloc by-1
@@ -90,7 +90,7 @@
have their counter allocated by the `\newcount` macro.
\_cod -----------------------------
-\_newcount \_attributealloc \_attributealloc=0
+\_newcount \_attributealloc \_attributealloc=0
\_chardef\_maiattribute=\_maicount
\_def\_newattribute #1{\_allocator #1{attribute}\_attributedef}
@@ -112,7 +112,7 @@
A few registers are initialized like in plain\TeX/. We absolutely
don't support the `@`category dance, so `\z@skip`
`\z@`, `\p@` etc. are not defined in \OpTeX/. If you need such
- control sequences then you can initailaize them by `\load[plain-at]`.
+ control sequences then you can initialize them by `\load[plain-at]`.
Only the \`\_zo` and \`\_zoskip` (equivalents to `\z@` and `\z@skip`)
are declared here and used in some internal macros of \OpTeX/
@@ -130,22 +130,22 @@
\_endcode %---------------------------------------------------
-Like plain\TeX, the allocators `\newcount`, `\newwrite`, etc. are defined.
+Like plain\TeX, the allocators `\newcount`, `\newwrite`, etc. are defined.
The registers are allocated from 256 to the `\_mai<type>` which is 65535 in
\LuaTeX/.
Unlike in Plain\TeX/, the mentioned allocators are not `\outer`.
User can use `\dimen0` to `\dimen200` and similarly for `\skip`,
-`\muskip`, `\box` and `\toks` directly. User can use
+`\muskip`, `\box`, and `\toks` directly. User can use
`\count20` to `\count200` directly too. This is the same
-philosophy like in old plain\TeX/, but the range of directly used registers
+philosophy as in old plain\TeX/, but the range of directly used registers
is wider.
-Inserts are allocated form 254 to 201 using `\newinsert`.
+Inserts are allocated from 254 to 201 using `\newinsert`.
You can define your own allocation concept (for example for allocation of
-arrays) from top of registers array. The example shows a definition of
+arrays) from the top of the registers array. The example shows a definition of
the array-like declarator of counters.
\nobreak
diff --git a/macros/luatex/optex/base/basic-macros.opm b/macros/luatex/optex/base/basic-macros.opm
index ea9cced9c1..3f0f7a5c24 100644
--- a/macros/luatex/optex/base/basic-macros.opm
+++ b/macros/luatex/optex/base/basic-macros.opm
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \sdef {Basic macros for OpTeX <2020-02-14>} % loaded in format
+\_codedecl \sdef {Basic macros for OpTeX <2021-01-08>} % loaded in format
\_doc ------------------------------
- \`\bgroup`, \`\egroup`, \`\empty`, \`\space`, \`\null` and \`\wlog`
- are classical macros from plain \TeX/.
+ \`\bgroup`, \`\egroup`, \`\empty`, \`\space`, \`\null` and \`\wlog`
+ are classical macros from plain \TeX/.
\_cod ------------------------------
\_let\_bgroup={ \_let\_egroup=}
@@ -16,9 +16,21 @@
\_public \bgroup \egroup \empty \space \null \wlog ;
\_doc ------------------------------
- \`\bslash` is \"normal backslash" with category code 12.
- \`\nbb` and \`\pcent` are double backslash and normal~`%`,
- they should be used in lua codes, for example.
+ \`\ignoreit` ignores next token or `{<text>}`, \`\ignoresecond`
+ uses first, ignores second parameter and \`\usesecond`
+ ignores first, uses second parameter.
+ \_cod ------------------------------
+
+\_long\_def \_ignoreit #1{}
+\_long\_def \_ignoresecond #1#2{#1}
+\_long\_def \_usesecond #1#2{#2}
+
+\_public \ignoreit \ignoresecond \usesecond ;
+
+ \_doc ------------------------------
+ \`\bslash` is \"normal backslash" with category code 12.
+ \`\nbb` and \`\pcent` are double backslash and normal~`%`,
+ they should be used in Lua codes, for example.
\_cod ------------------------------
\_edef \_bslash {\_csstring\\}
@@ -45,7 +57,7 @@
\_doc ------------------------------
\`\adef` `{<char>}{<body>}` puts the <char> as active character and defines it
- as `{<body>}`. You can declare a macro with parameters too. For example
+ as `{<body>}`. You can declare a macro with parameters too. For example
`\adef @#1{...$1...}`.
\_cod ------------------------------
@@ -56,7 +68,7 @@
\`\cs` `{<text>}` is only a shortcut to `\csname <text>\endcsname`, but you need
one more `\_ea` if you need to get the real control sequence `\<text>`.
\nl
- \`\trycs` `{<csname>}{<text>}` expands to `\<csname>`
+ \`\trycs` `{<csname>}{<text>}` expands to `\<csname>`
if it is defined else to the `<text>`.
\_cod ------------------------------
@@ -75,33 +87,35 @@
\`\opwarning` `{<text>}` prints warning on the terminal and to the log file.
\_cod ------------------------------
-\_def \_opwarning #1{\_wterm{l.\_the\_inputlineno> WARNING: #1.}}
+\_def \_opwarning #1{\_wterm{WARNING l.\_the\_inputlineno: #1.}}
\_public \opwarning ;
\_doc ------------------------------
- \`\loggingall` and \`\tracingall` are defined similarly as in
+ \`\loggingall` and \`\tracingall` are defined similarly as in
plain \TeX/, but they print
- more logging information to the log file and to the terminal.
+ more logging information to the log file and the terminal.
\_cod ------------------------------
-\_def\_loggingall{\_tracingcommands=3 \_tracingstats=2 \_tracingpages=1
- \_tracingoutput=1 \_tracinglostchars=1 \_tracingmacros=2
- \_tracingparagraphs=1 \_tracingrestores=1 \_tracingscantokens=1
+\_def\_loggingall{\_tracingcommands=3 \_tracingstats=2 \_tracingpages=1
+ \_tracingoutput=1 \_tracinglostchars=1 \_tracingmacros=2
+ \_tracingparagraphs=1 \_tracingrestores=1 \_tracingscantokens=1
\_tracingifs=1 \_tracinggroups=1 \_tracingassigns=1 }
\_def\_tracingall{\_tracingonline=1 \_loggingall}
-\_public \loggingall \tracingall ;
+\_public \loggingall \tracingall ;
\_doc ------------------------------
- Write a warning if the user did not to load a Unicode Font {\em or}
+ Write a warning if the user did not load a Unicode Font {\em or}
if there were unresolved references. \`\_byehook` is used in the \^`\bye` macro.
\_cod ------------------------------
\_def\_byehook{%
\_ifx\_initunifonts\_relax \_relax\_else \_opwarning{Unicode font was not loaded}\_fi
- \_ifnum\_unresolvedrefs>0 \_opwarning{Rerun to get references right}\_fi
+ \_ifnum\_unresolvedrefs>0 \_opwarning{Try to rerun to get references right}\_fi
}
\_endcode % -------------------------------------
-
+2021-01-08: \opwarning format changed (secondly, hope that conclusively)
+2020-10-12: \opwarning: line numbers added
+2020-02-14: introduced
diff --git a/macros/luatex/optex/base/bib-iso690.opm b/macros/luatex/optex/base/bib-iso690.opm
index ccd373e3cc..c58709ce83 100644
--- a/macros/luatex/optex/base/bib-iso690.opm
+++ b/macros/luatex/optex/base/bib-iso690.opm
@@ -1,4 +1,4 @@
-% This is part of OpTeX project, see http://petr.olsak.net/optex
+% This is part of the OpTeX project, see http://petr.olsak.net/optex
% bibliography style (iso690), version <2020-03-10>, loaded on demand by \usebib
@@ -7,11 +7,11 @@
\_endinput \_fi
\_doc -----------------------------
- \`\_maybetod` (alias `\.` in the style file group) does not put second dot.
+ \`\_maybetod` (alias `\.` in the style file group) does not put the second dot.
\_cod -----------------------------
\_def\_maybedot{\_ifnum\_spacefactor=\_sfcode`\.\_relax\_else.\_fi}
-\_tmpnum=\_sfcode`\. \_advance\_tmpnum by-2 \_sfcode`\.=\_tmpnum
+\_tmpnum=\_sfcode`\. \_advance\_tmpnum by-2 \_sfcode`\.=\_tmpnum
\_sfcode`\?=\_tmpnum \_sfcode`\!=\_tmpnum
\_let\.=\_maybedot % prevents from double periods
@@ -22,7 +22,7 @@
\_CreateField {option}
\_def\_isbiboption#1#2{\_edef\_tmp{\_noexpand\_isbiboptionA{#1}}\_tmp}
\_def\_isbiboptionA#1{\_def\_tmp##1 #1 ##2\_relax{%
- \_if^##2^\_csname iffalse\_ea\_endcsname \_else\_csname iftrue\_ea\_endcsname \_fi}%
+ \_if^##2^\_csname iffalse\_ea\_endcsname \_else\_csname iftrue\_ea\_endcsname \_fi}%
\_ea\_tmp\_biboptionsi #1 \_relax}
\_def\_bibopt[#1]#2#3{\_isbiboption{#1}\_iftrue\_def\_tmp{#2}\_else\_def\_tmp{#3}\_fi\_tmp}
\_def\_biboptionvalue#1#2{\_def\_tmp##1 #1:##2 ##3\_relax{\_def#2{##2}}%
@@ -47,7 +47,7 @@
\_bprintc\_Firstname{* }\_bprintc\_Von{* }\_upper{\_Lastname}\_bprintc\_Junior{, *}%
}
\_def\_commonname{%
- \_ifnum\_NameCount=1
+ \_ifnum\_NameCount=1
\_firstauthorformat
\_ifx\_dobibmark\_undefined \_edef\_dobibmark{\_Lastname}\_fi
\_else
@@ -55,7 +55,7 @@
\_ifx\_maybeetal\_empty \_bibconjunctionand\_else , \_fi
\_else , \_fi
\_otherauthorformat
- \_fi
+ \_fi
}
\_def\_authorname{%
\_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi
@@ -65,25 +65,25 @@
\_def\_prepareauedoptions#1{%
\_def\_mabyetal{}\_csname lb@abbreviatefalse\_endcsname
- \_biboptionvalue{#1max}\_authormax
- \_biboptionvalue{#1min}\_authormin
- \_biboptionvalue{#1pre}\_authorpre
+ \_biboptionvalue{#1max}\_authormax
+ \_biboptionvalue{#1min}\_authormin
+ \_biboptionvalue{#1pre}\_authorpre
\_biboptionvalue{#1print}\_authorprint
\_isbiboption{#1etal}\_iftrue \_def\_maybeetal{\_Mtext{bib.etal}}\_fi
- \_biboptionvalue{#1trim}\_autrim
+ \_biboptionvalue{#1trim}\_autrim
\_let\_namecountraw=\_namecount
\_ifx\_authormax\_empty \_else
\_ifnum 0\_authormax<0\_namecount
\_edef\_namecount{\_ifx\_authormin\_empty\_authormax\_else\_authormin\_fi}%
\_def\_maybeetal{\_Mtext{bib.etal}}%
\_fi\_fi
- \_ifx\_autrim\_empty \_def\_autrim{10000}\_fi
- \_ifnum\_autrim=0 \_def\_autrim{10000}\_fi
+ \_ifx\_autrim\_empty \_def\_autrim{10000}\_fi
+ \_ifnum\_autrim=0 \_def\_autrim{10000}\_fi
\_ifnum 0\_namecount<\_autrim\_relax \_else \_AbbreviateFirstname \_fi
}
\_def\_maybeetal{}
-\_ifx\upper\_undefined
+\_ifx\upper\_undefined
\_ifx\caps \_undefined \_def\upper{\_uppercase\_ea}\_else
\_def\upper#1{{\caps\_rm #1}}\_fi
\_fi
@@ -93,7 +93,7 @@
Preparing bib-mark (used when `\nonumcitations` is set).
\_cod -----------------------------
-\_def\_setbibmark{%
+\_def\_setbibmark{%
\_ifx\_dobibmark\_undefined \_def\_dobibmark{}\_fi
\_RetrieveFieldIn{bibmark}\_tmp
\_ifx\_tmp\_empty \_RetrieveFieldIn{year}\_tmp \_edef\_tmp{\_dobibmark, \_tmp}\_fi
@@ -123,14 +123,14 @@
\_def\_Mtext#1{\_csname _mt:#1:\_csname _lan:\_the\_documentlanguage\_endcsname\_endcsname}
\_CreateField {lang}
-\_def\_setlang#1{\_ifx#1\_empty \_else
+\_def\_setlang#1{\_ifx#1\_empty \_else
\_ifcsname _mt:bib.and:#1\_endcsname \_language=\_csname _#1Patt\_endcsname \_relax
\_else \_opwarning{No phrases for "#1" used by [\EntryKey] in .bib}%
\_fi\_fi
}
\_doc -----------------------------
- Non-standard fieldnames.
+ Non-standard field names.
\_cod -----------------------------
\_CreateField {ednote}
@@ -203,7 +203,7 @@
\_isbiboption{unpublished}\_iftrue \_let\_bibwarninga=\_relax \_let\_bibwarningb=\_relax \_fi
\_isbiboption{nowarn}\_iftrue \_let\_bibwarning=\_relax \_fi
\_isbiboption{urlalso}\_iftrue \_def\_preurl{\_Mtext{bib.availablealso}}\_fi
- \_RetrieveFieldIn{lang}\_langentry \_setlang\_langentry
+ \_RetrieveFieldIn{lang}\_langentry \_setlang\_langentry
}
\_sdef{_print:END}{%
\_bprinta [note] {*.}{}%
@@ -237,7 +237,7 @@
\_bprintb [!author] {\_doauthor1{##1}\.\ }{\_bibwarning}%
\_bprinta [title] {*.\ \_bprintc\_titlepost{*.\ }}{\_bibwarning}%
\_bprintb [journal] {{\_em##1}\_bprintc\_journalpost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
- {\_bibwarninga}%
+ {\_bibwarninga}%
\_bprinta [howpublished] {[*].\ }{}%
\_bprinta [address] {*\_bprintb[publisher]{:}{,}\ }{}%
\_bprinta [publisher] {*, }{}%
@@ -327,15 +327,15 @@ There are entries of type `@FOO{...}` in the `.bib` file. Each entry consists of
fields in the form `name = "value"`, or `name = {value}`. No matter which form is
used. If the value is pure numeric then you can say simply `name = value`.
Warning: the comma after each field value is mandatory! If it is missing then the
-next field is ignored or bad interpreted.
+next field is ignored or badly interpreted.
-The entry names and field names are case insensitive. If there exist a data
+The entry names and field names are case insensitive. If there exists a data
field no mentioned here then it is simply ignored. You can use it to store
more information (abstract, for example).
There are \"standard fields" used in ancient bib\TeX/ (author, title, editor, edition,
etc., see \url{http://en.wikipedia.org/wiki/BibTeX}). The `iso690` style introduces
-several \"non-standard" fields: ednote, numbering, isbn, issn, doi, url,
+several \"non-standard" fields: ednote, numbering, isbn, issn, doi, url,
citedate, key, bibmark. They are documented here.
Moreover, there are two optional special fields:
@@ -343,18 +343,18 @@ Moreover, there are two optional special fields:
\begitems
* lang = language of the entry. The hyphenation plus autogenerated phrases and
abbreviations will be typeset by this language.
-* option = options by which you can control special printing of various fields.
-\enditems
+* option = options by which you can control a special printing of various fields.
+\enditems
-There can be only one option field per each entry with (may be) more options
+There can be only one option field per each entry with (maybe) more options
separated by spaces. You can declare the global option(s) in your document
applied for each entry by `\biboptions={...}`.
\seccc The author field
-All names in the author list have to be separated by \"\code{ and }".
-Each author can be written by various formats (the `von` part is typically missing):
+All names in the author list have to be separated by \"\code{ and }".
+Each author can be written in various formats (the `von` part is typically missing):
\begtt
Firstname(s) von Lastname
@@ -375,35 +375,35 @@ da Vinci, Leonardo Piero
or
da Vinci, painter, Leonardo Piero
\endtt
-The separator \"\code{ and }" between authors
+The separator \"\code{ and }" between authors
will be converted to comma during
-printing, but between semifinal and final author the word \"and" (or something
-different depending on current language) is printed.
+printing, but between the semifinal and final author the word \"and" (or something
+different depending on the current language) is printed.
The first author is printed in reverse order: \"LASTNAME, Firstname(s) von,
-After" and the others author are printed in normal order: \"Firstname(s)
+After" and the other authors are printed in normal order: \"Firstname(s)
von LASTNAME, After". This feature follows the ISO 690 norm. The Lastname
is capitalized using uppercase letters. But if the `\caps` font modifier is defined,
then it is used and printed `{\caps\_rm Lastname}`.
You can specify the option `aumax:<number>`. The `<number>` denotes the
-maximum authors to be printed. The rest of authors are ignored and the
+maximum authors to be printed. The rest of the authors are ignored and the
`et~al.` is appended to the list of printed authors. This text is
-printed only if the `aumax` value is less than the real number of authors.
+printed only if the `aumax` value is less than the real number of authors.
If you have the same number of authors in the .bib file as you need to print
but you want to append `et~al.` then you can use `auetal` option.
-There is an `aumin:<number>` option which denotes the definitive number of
+There is an `aumin:<number>` option which denotes the definitive number of
printed authors if the author list is not fully printed due to `aumax`.
-If `aumin` is unused then `aumax` authors is printed in such case.
+If `aumin` is unused then `aumax` authors are printed in this case.
-All authors are printed if `aumax:<number>` option isn't given.
-There is no internal limit. But you can set the global options in
+All authors are printed if `aumax:<number>` option isn't given.
+There is no internal limit. But you can set the global options in
your document by setting the `\biboptions` tokens list. For example:
\begtt
-\biboptions={aumax:7 aumin:1}
-% if there is 8 or more authors then only first author is printed.
+\biboptions={aumax:7 aumin:1}
+% if there are 8 or more authors then only the first author is printed.
\entdd
Examples:
@@ -433,10 +433,10 @@ output: GREEN, John, Bob BROWN, and Alice BLACK.
\begtt
author = "John Green and Bob Brown and Alice Black",
option = "auetal",
-\endtt
+\endtt
output: GREEN, John, Bob BROWN, Alice BLACK~et~al.
-If you need to add a text before or after authors list, you can use
+If you need to add a text before or after the author's list, you can use
the `auprint:{<value>}` option. The <value> will be printed instead of the
authors list. The <value> can include `\AU` macro which expands to the authors
list. Example:
@@ -448,9 +448,9 @@ option = "auprint:{\AU\space [pseudonym of J. K. Rowling]}",
output: CALBRAITH Robert [pseudonym of J. K. Rowling].
You can use the `autrim:<number>` option. All Firstnames of all authors
-are trimmed (i. e. reduced to initials) iff the number of authors in the
+are trimmed (i. e. reduced to initials) iff the number of authors in the
author field is greater than or equal to `<number>`. There is an exception:
-`autrim:0` means that no Firstnames are trimmed. This is default behavior.
+`autrim:0` means that no Firstnames are trimmed. This is the default behavior.
Another example: `autrim:1` means that all Firstnames are trimmed.
\begtt
@@ -459,12 +459,12 @@ option = "auetal autrim:1",
\endtt
output: GREEN, J., B. BROWN, A. BLACK~et~al.
-If you need to write a team name or institution instead authors, replace all
+If you need to write a team name or institution instead of authors, replace all
spaces by `\ ` in this name. Such text is interpreted as Lastname. You
-can add the secondary name (interpreted as Firstname) after comma. Example:
+can add the secondary name (interpreted as Firstname) after the comma. Example:
\begtt
- author = "Czech\ Technical\ University\ in\ Prague,
+ author = "Czech\ Technical\ University\ in\ Prague,
Faculty\ of\ Electrical\ Engeneering",
\endtt
output: CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engeneering.
@@ -472,10 +472,10 @@ output: CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engeneering
\seccc The editor field
-The editor field is used for list of the authors of the collection. The
+The editor field is used for the list of the authors of the collection. The
analogous rules as in author field are used here. It means that the
-authors are separated by \"\code{ and }", the Firstnames, Lastnames etc. are
-interpreted and you can use the options `edmax:<number>`, `edmin:<number>`,
+authors are separated by \"\code{ and }", the Firstnames, Lastnames, etc. are
+interpreted and you can use the options `edmax:<number>`, `edmin:<number>`,
`edetal`, `edtrim:<number>` and `edprint:{<value>}` (with `\ED` macro).
Example:
\begtt
@@ -485,7 +485,7 @@ option = "edprint:{\ED, editors.} edtrim:1",
Output: J. TOMEK and P. KARAS, editors.
If `edprint` option is not set then `{\ED, eds.}` or `{\ED, ed.}` is used
-depending on the entry language and on the singular or plural of
+depending on the entry language and on the singular or plural of
the editor(s).
@@ -499,15 +499,15 @@ ednote = "Illustrations by Robert \upper{Agarwal}, edited by Tom \upper{Nowak}",
\endtt
output: Illustrations by Robert AGARWAL, edited by Tom NOWAK.
-The `\upper` command have to be used for Lastnames in ednote field.
+The `\upper` command has to be used for Lastnames in the ednote field.
\seccc The title field
This is the title of the work. It will be printed (in common entry types) by
italics. The ISO 690 norm declares, that the title plus optional subtitle
-are in italics and they are separated by colon. Next, the optional secondary
-title have to be printed in upright font. This can be added by
+are in italics and they are separated by a colon. Next, the optional secondary
+title has to be printed in an upright font. This can be added by
`titlepost:{<value>}`. Example:
\begtt
@@ -526,7 +526,7 @@ The output of the last example:
This field is used only for second or more edition of cited work. Write
only the number without the word "edition". The shortcut "ed." (or something
-else depending on current language) is added automatically. Examples:
+else depending on the current language) is added automatically. Examples:
\begtt
edition = "Second",
@@ -543,7 +543,7 @@ lang = "cs",
Output: 2. vyd.
Note, that the example `edition = "Second"` may cause problems. If you are
-using language "cs" then the output is bad: Second vyd.
+using language "cs" then the output is bad: Second vyd.
But you can use `editionprint:{<value>}` option. The the <value> is printed
instead of edition field and shortcut. The edition field must be set. Example:
@@ -553,7 +553,7 @@ option = "editionprint:{Second full revised edition}",
\endtt
Output: Second full revised edition.
-You can use `\EDN` macro in `editionprint` value. This macro is expanded
+You can use `\EDN` macro in `editionprint` value. This macro is expanded
to the edition value. Example:
\begtt
@@ -568,7 +568,7 @@ option = "editionprint:{\EDN}",
\seccc The address, publisher, year fields
This is an anachronism from ancient Bib\TeX/ (unfortunately no exclusive) that
-the address field includes only the city of the publisher residence. No more
+the address field includes only the city of the publisher's residence. No more
data are here. The publisher field includes the name of the publisher.
\begtt
@@ -579,16 +579,16 @@ year = 2012,
Output: Berlin: Springer Verlag, 2012.
Note, that the year needn't to be inserted into quotes because it is pure
-numeric.
+numeric.
-The letter a, b etc. are appended to the year automatically, if two or more
+The letter a, b, etc. are appended to the year automatically if two or more
subsequent entries in the bibliography list are not distinct by the first
author and year fields. If you needn't this feature, you can use the
`noautoletters` option.
You can use "yearprint:{<value>}" option. If it is set then the <value>
is used for printing year instead the real field value. The reason: year is
-sort sensitive, may be you need to print something else than only sorting key.
+sort sensitive, maybe you need to print something else than only sorting key.
Example:
\begtt
@@ -603,7 +603,7 @@ option = "yearprint:{2012}",
\endtt
Output: 2012, sorted by: 2012a.
-The address, publisher and year are typically mandatory fields. If they are
+The address, publisher, and year are typically mandatory fields. If they are
missing then the warning occurs. But you can set `unpublished`
option. Then this warning is suppressed. There is no difference in the
printed output.
@@ -618,8 +618,8 @@ url = "http://petr.olsak.net/opmac.html",
\endtt
The ISO 690 norm recommends to add the text \"Available from" (or
-something else if different current language is used) before URL.
-It means, that the output of previous example is:
+something else if a different current language is used) before URL.
+It means, that the output of the previous example is:
Available from \url{http://petr.olsak.net/opmac.html}.
@@ -647,21 +647,21 @@ Output when `cs` is current: [vid. 21.~5.~2004].
\seccc The howpublished field
-This declares the available medium for cited document if it is not in printed
+This declares the available medium for the cited document if it is not in printed
form. Alternatives: online, CD, DVD, etc. Example:
\begtt
howpublished = "online",
\endtt
Output: [online].
-
+
\seccc The volume, number, pages and numbering fields
The volume is the \"big mark" of the journal issue and the number is the
-\"small mark" of the journal issue and pages includes the page range of
+\"small mark" of the journal issue and pages includes the page range of
the cited article in the journal. The volume is prefixed by Vol.~,
-the number by No.~ and the pages by pp.~. But these prefixes depends on the
+the number by No.~, and the pages by pp.~. But these prefixes depends on the
language of the entry.
Example:
@@ -675,14 +675,14 @@ Output: Vol.~31, No.~3, pp.~37--42.
\begtt
volume = 31,
-number = 3,
+number = 3,
pages = "37--42",
lang = "cs",
\endtt
Output: ročník~31, č.~3, s.~37--42.
If you disagree with the default prefixes, you can use the numbering field.
-When it is set then it is used instead of volume, number, pages fields
+When it is set then it is used instead of volume, number, pages fields
and instead of any mentioned prefixes. The numbering can include macros
`\VOL`, `\NO`, `\PP`, which are expanded to the respective values of fields. Example:
@@ -694,55 +694,55 @@ numbering = "Issue~\VOL/\NO, pages~\PP",
\endtt
Output: Issue~31/3, pages~37--42
-Note: The volume, numbers and pages fields are printed without numbering
+Note: The volume, numbers, and pages fields are printed without numbering
filed only in the `@ARTICLE` entry. It means, that if you need to visible them
-in the `@INBOOK`, `@INPROCEEDINGS` etc. entries, then you must to use numbering field.
+in the `@INBOOK`, `@INPROCEEDINGS` etc. entries, then you must use the numbering field.
\seccc Common notes about entries
The order of the fields in the entry is irrelevant. We use the printed order
in this manual. The exclamation mark (!) denotes the mandatory field. If
-such field is missing then the warning occurs during processing.
+the field is missing then a warning occurs during processing.
If the `unpublished` option is set then the fields address, publisher, year,
-isbn and pages are not mandatory. If the `nowarn` option is set then no
-warnings about missing mandatory fields occurs.
+isbn, and pages are not mandatory. If the `nowarn` option is set then no
+warnings about missing mandatory fields occur.
If the field is used but not mentioned in the entry documentation below then
it is silently ignored.
\secccc The `@BOOK` entry
-This is used for book-like entries.
+This is used for book-like entries.
-Fields: author(!), title(!), howpublished, edition, ednote, address(!),
-publisher(!), year(!), citedate, series, isbn(!), doi, url, note.
+Fields: author(!), title(!), howpublished, edition, ednote, address(!),
+publisher(!), year(!), citedate, series, isbn(!), doi, url, note.
The ednote field here means the secondary authors (illustrator, cover design
etc.).
\secccc The `@ARTICLE` entry
-This is used for articles published in a journal.
+This is used for articles published in a journal.
Fields: author(!), title(!), journal(!), howpublished, address, publisher,
month, year, [numbering or volume, number, pages(!)], citedate, issn,
-doi, url, note.
+doi, url, note.
If the numbering is used then it is used instead volume, number, pages.
\secccc The `@INBOOK` entry
-This is used for the part of a book.
+This is used for the part of a book.
Fields: author(!), title(!), booktitle(!), howpublished, edition, ednote,
address(!), publisher(!), year(!), numbering, citedate, series, isbn or
issn, doi, url, note.
The author field is used for author(s) of the part, the editor field
-includes author(s) or editor(s) of whole document. The pages field specifies
+includes author(s) or editor(s) of the whole document. The pages field specifies
the page range of the part. The series field can include more information
about the part (chapter numbers etc.).
@@ -750,47 +750,46 @@ The `@INPROCEEDINGS` and `@CONFERENCE` entries are equivalent to `@INBOOK` entry
\secccc The `@THESIS` entry
-This is used for student's thesis.
+This is used for the student's thesis.
-Fields: author(!), title(!), howpublished, address(!), school(!),
-month, year(!), citedate, type(!), ednote, doi, url, note.
+Fields: author(!), title(!), howpublished, address(!), school(!),
+month, year(!), citedate, type(!), ednote, doi, url, note.
-The type field must include the text \"Master's Thesis" or something
+The type field must include the text \"Master's Thesis" or something
similar (depending on the language of the outer document).
There are nearly equivalent entries: `@BACHELORSTHESIS`, `@MASTERSTHESIS` and
`@PHDTHESIS`. These entries set the type field to an appropriate value
-automatically. The type field is optional in such case. If it is used then
-it has a precedence before default setting.
+automatically. The type field is optional in this case. If it is used then
+it has precedence before the default setting.
\secccc The @MISC entry
-It is intended for various usage.
+It is intended for various usage.
-Fields: author, title, howpublished, ednote, citedate, doi, url, note.
+Fields: author, title, howpublished, ednote, citedate, doi, url, note.
You can use `\AU`, `\ED`, `\EDN`, `\VOL`, `\NO`, `\PP`, `\ADDR`, `\PUBL`,
`\YEAR` macros in ednote field. These macros print authors list, editors list,
-edition, volume, number, pages, address, publisher and year field values
+edition, volume, number, pages, address, publisher, and year field values
respectively.
-The reason of this entry is to give to you the possibility to set the format of
-entry by your own decision. The most of data are concentrated in ednote
-field.
+The reason for this entry is to give to you the possibility to set the format of
+entry by your own decision. The most of data are concentrated in the ednote field.
\secccc The `@BOOKLET`, `@INCOLLECION`, `@MANUAL`, `@PROCEEDINGS`, `@TECHREPORT`, `@UNPUBLISHED` entries
These entries are equivalent to `@MICS` entry because we need to save the
simplicity. They are implemented only for (almost) backward compatibility
with the ancient Bib\TeX/. But the ednote is mandatory field here, so you
-cannot use these entries from the old databases without warnings and without
+cannot use these entries from the old databases without warnings and without
some additional work with the `.bib` file.
\seccc The cite-marks (bibmark) used when \code{\\nonumcitations} is set
-When `\nonumcitations` is set then `\cite` prints text orientes
-bib-marks instead numbers. This style file autogenerates these marks in the
-form \"Lastname of the first author, comma, space, the year" if bibmark field
+When `\nonumcitations` is set then `\cite` prints text-oriented
+bib-marks instead of numbers. This style file auto-generates these marks in the
+form \"Lastname of the first author, comma, space, the year" if the bibmark field
isn't declared. If you need to set an exception from this common format,
then you can use bibmark field.
@@ -808,15 +807,15 @@ used (from older to newer). This feature follows the recommendation of the
ISO 690 norm.
If you have the same authors and the same year, you can control the sorting
-by setting years as 2013, 2013a, 2013b, etc. You can print something
+by setting years like 2013, 2013a, 2013b, etc. You can print something
different to the list using `yearprint{<value>}` option, see the section about
-address, publisher and year above. The real value of year field (ie. not
-yearprint value) is also used in the text oriented bib-marks when
+address, publisher, and year above. The real value of year field (i.e.\ not
+yearprint value) is also used in the text-oriented bib-marks when
`\nonumcitations` is set.
If you have some problems with name sorting, you can use the hidden field
`key`, which is used for sorting instead of the \"Lastname Firstname(s)"
-of authors. If the `key` field is unset then the \"Lastname Firstname(s)"
+of authors. If the `key` field is unset then the \"Lastname Firstname(s)"
is used for sorting normally. Example:
\begtt
@@ -824,9 +823,9 @@ author = "Světla Čmejrková",
key = "Czzmejrkova Svetla",
\endtt
-This entry is now sorted between C and D.
+This entry is now sorted between C and D.
-The norm recommends to place the autocitations to the top of the list of
+The norm recommends placing the auto-citations at the top of the list of
references. You can do this by setting `key = "@"`, to each entry with your
name because the `@` character is sorted before `A`.
@@ -835,20 +834,20 @@ name because the `@` character is sorted before `A`.
There is the language of the outer document and the languages of each entry.
The ISO 690 norm recommends that the technical notes (the prefix before URL,
-the media type, the \"and" conjunction between semifinal and final author)
-may be printed in the language of the outer document. The data of the entry
+the media type, the \"and" conjunction between the semifinal and final author)
+maybe printed in the language of the outer document. The data of the entry
have to be printed in the entry language (edition ed./vyd., Vol./ročník,
-No./č. etc.). Finally there are the phrases independent on the language
+No./č. etc.). Finally, there are the phrases independent of the language
(for example In:). Unfortunately, the bib\TeX/ supposes that the entry data
-are not fully included in the fields so the automaton have to add some
+are not fully included in the fields so the automaton has to add some
text during processing (\"ed.", \"Vol.", \"see also", etc.).
-But what language have to be chosen?
+But what language has to be chosen?
The current value of the `\language` register at the start of the `.bib`
-processing is descided as the language of the outer document. This language
+processing is described as the language of the outer document. This language
is used for technical notes regardless of the entry language. Moreover,
each entry can have the `lang` field (short name of the language). This
-language is used for ed./vyd., vol./ročník etc. and it is used for
+language is used for ed./vyd., vol./ročník, etc. and it is used for
hyphenation too. If the `lang` is not set then the outer document
language is used.
@@ -871,12 +870,12 @@ languages:
\seccc Summary of non-standard fields
-This style uses the following fields unkown by bib\TeX/:
+This style uses the following fields unknown by bib\TeX/:
\begtt
option ... options separated by spaces
lang ... the language two-letter code of one entry
-ednote ... editional info (secondary authors etc.) or
+ednote ... edition info (secondary authors etc.) or
global data in @MISC-like entries
citedate ... the date of the citation in year/month/day format
numbering ... format for volume, number, pages
@@ -889,19 +888,19 @@ url ... URL
\seccc Summary of options
-\begtt
+\begtt \catcode`\<=13
aumax:<number> ... maximum number of printed authors
-aumin:<number> ... number of printed authors if aumax exceedes
+aumin:<number> ... number of printed authors if aumax exceeds
autrim:<number> ... full Firstnames iff number of authors are less than this
-auprint:{<value>} ... text instead authors list (\AU macro may be used)
+auprint:{<value>} ... text instead authors list (\AU macro may be used)
edmax, edmin, edtrim ... similar as above for editors list
-edprint:{<value>} ... text instead editors list (\ED macro may be used)
-titlepost:{<value>} ... text after title
-yearprint:{<value>} ... text instead real year (\YEAR macro may be used)
-editionprint:{<value>} . text instead real edition (\EDN macro may be used)
+edprint:{<value>} ... text instead editors list (\ED macro may be used)
+titlepost:{<value>} ... text after title
+yearprint:{<value>} ... text instead real year (\YEAR macro may be used)
+editionprint:{<value>} .. text instead of real edition (\EDN macro may be used)
urlalso ... the ``available also from'' is used instead ``available from''
unpublished ... the publisher etc. fields are not mandatory
nowarn ... no mandatory fields
\endtt
-Another options in the option field are silently ignored.
+Other options in the option field are silently ignored.
diff --git a/macros/luatex/optex/base/bib-simple.opm b/macros/luatex/optex/base/bib-simple.opm
index b41d3d605e..dff747bd57 100644
--- a/macros/luatex/optex/base/bib-simple.opm
+++ b/macros/luatex/optex/base/bib-simple.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% bibliography style (simple), version <2020-03-10>, loaded on demand by \usebib
diff --git a/macros/luatex/optex/base/cite-bib.opm b/macros/luatex/optex/base/cite-bib.opm
index 4829b8b8f9..6327877fbe 100644
--- a/macros/luatex/optex/base/cite-bib.opm
+++ b/macros/luatex/optex/base/cite-bib.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \cite {Cite, Biblioraphy <2020-03-09>} % loaded in format
@@ -11,23 +11,23 @@
\_newcount\_bibnum % the bibitem counter
\_newtoks\_bibmark % the bibmark used if \nonumcitations
\_newcount\_lastcitenum \_lastcitenum=0 % for \shortcitations
-\_public \bibnum \bibmark ;
+\_public \bibnum \bibmark ;
\_doc -----------------------------
- \`\cite` `[<label>,<label>,...,<label>]` manages <labes> using `\_citeA`
+ \`\cite` `[<label>,<label>,...,<label>]` manages <labes> using `\_citeA`
and prints `[<bib-marks>]` using `\_printsavedcites`.
\nl
\`\nocite` `[<label>,<label>,...,<label>]` only manages <labels> but prints nothing.
\nl
\`\rcite` `[<label>,<label>,...,<label>]` behaves like `\cite` but prints
- <bib-marks> without brackets.
+ <bib-marks> without brackets.
\nl
\`\ecite` `[<label>]{<text>}` behaves like `\rcite [<label>]` but prints
<text> instead <bib-mark>. The <text> is hyperlinked like <bib-marks>
- when `\cite` or `\rcite` is used.
+ when `\cite` or `\rcite` is used.
The empty internal macro \`\_savedcites` will include the `<bib-marks>` list to
- be printed. This list is set by `\_citeA` inside group and it is used by
- `\_printsavedcites` in the same group. Each `\cite`/`\rcite`/`\ecite` macro
+ be printed. This list is set by `\_citeA` inside a group and it is used by
+ `\_printsavedcites` in the same group. Each `\cite`/`\rcite`/`\ecite` macro
starts from empty list of <bib-marks> because new group is opened.
\_cod -----------------------------
@@ -58,10 +58,10 @@
\_if^#3^\_else\_sdef{_bim:#2}{#3}\_fi\_def\_lastbibnum{#2}}
\_doc -----------------------------
- \`\_citeA` `<label>,` processes one label from list of labels given in the
+ \`\_citeA` `<label>,` processes one label from the list of labels given in the
parameter of `\cite`, `\nocite`, `\rcite` or `\ecite` macros. It adds the
<label> to global list `\_citelist` which will be used by `\usebib` (it
- must to know what <labels> are used in the document in order to pick-up
+ must know what <labels> are used in the document to pick-up
only relevant bib-entries from the database. Because we want to save
space and not to save the same <label> to `\_citelist` twice, we
distinguish four cases:
@@ -76,15 +76,15 @@
* `<label>` was declared by \^`\_Xbib` and it is first such <label> in the
document: Then `\_bin:<label>` includes `\_bibnn{<number>}&` and we
test this case by `\if &\_bibnn{<number>}&`. This is true when `\_bibnn{<number>}`
- expands to empty. The <label> is saved by `\_addcitelist` and
+ expands to empty. The <label> is saved by `\_addcitelist` and
`\_bib:<label>` is re-defined directly as <number>.
* `<label>` was declared by \^`\_Xbib` and it was used previously in the
document. Then we do nothing (only data to `\_savedcites` are saved.
\enditems
- The `\_citeA` macro runs repeatedly over whole list of <labels>.
+ The `\_citeA` macro runs repeatedly over the whole list of <labels>.
\_cod -----------------------------
-\_def\_citeA #1#2,{\_if#1,\_else
+\_def\_citeA #1#2,{\_if#1,\_else
\_if *#1\_addcitelist{*}\_ea\_skiptorelax \_fi
\_ifcsname _bib:#1#2\_endcsname \_else
\_addcitelist{#1#2}%
@@ -97,7 +97,7 @@
\_addto\_savedcites{?,}\_def\_sortcitesA{}\_lastcitenum=0
\_ea\_skiptorelax \_fi
\_def\_bibnn##1{}%
- \_if &\_csname _bib:#1#2\_endcsname
+ \_if &\_csname _bib:#1#2\_endcsname
\_def\_bibnn##1##2{##1}%
\_addcitelist{#1#2}%
\_sxdef{_bib:#1#2}{\_csname _bib:#1#2\_endcsname}%
@@ -107,23 +107,23 @@
\_ea\_citeA\_fi
}
\_def\_addcitelist#1{\_global\_addto\_citelist{\_citeI[#1]}}
-\_def\_citelist{}
+\_def\_citelist{}
\_doc -----------------------------
The `<bib-marks>` (in numeric or text form) are saved in \^`\_savedcites`
macro separated by commas.
The \`\_printsavedcites` prints them by normal order or sorted if
\`\sortcitations` is specified or condensed if \`\shordcitations` is
- specified.\nl
- The `\sortcitations` appends the dummy number 300000 and we suppose that normal
- numbers of bib-entries are less than this constant.
- This constant is removed after sorting algorithm.
+ specified.\nl
+ The `\sortcitations` appends the dummy number 300000 and we suppose that normal
+ numbers of bib-entries are less than this constant.
+ This constant is removed after the sorting algorithm.
The \`\shortcitations` sets simply `\_lastcitenum=1`.
The macros for <bib-marks> printing follows (sorry, without detail
documentation). They are documented in `opmac-d.pdf` (but only in Czech).
\_cod -----------------------------
-\_def\_printsavedcites{\_sortcitesA
+\_def\_printsavedcites{\_sortcitesA
\_chardef\_tmpb=0 \_ea\_citeB\_savedcites,%
\_ifnum\_tmpb>0 \_printdashcite{\_the\_tmpb}\_fi
}
@@ -136,10 +136,10 @@
\_else
\_mathchardef\_tmpa=#1
\_edef\_savedcites{\_ea}\_ea\_sortcitesC \_savedcites\_end
- \_ea\_sortcitesB
+ \_ea\_sortcitesB
\_fi
}
-\_def\_sortcitesC#1,{\_ifnum\_tmpa<#1\_edef\_tmpa{\_the\_tmpa,#1}\_ea\_sortcitesD
+\_def\_sortcitesC#1,{\_ifnum\_tmpa<#1\_edef\_tmpa{\_the\_tmpa,#1}\_ea\_sortcitesD
\_else\_edef\_savedcites{\_savedcites#1,}\_ea\_sortcitesC\_fi}
\_def\_sortcitesD#1\_end{\_edef\_savedcites{\_savedcites\_tmpa,#1}}
@@ -173,7 +173,7 @@
\_def\_nonumcitations{\_lastcitenum=0\_def\_sortcitesA{}\_def\_etalchar##1{$^{##1}$}%
\_def\_citelinkA##1{\_isdefined{_bim:##1}\_iftrue \_csname _bim:##1\_endcsname
- \_else ##1\_opwarning{\_noexpand\nonumcitations + empty bibmark. Maybe bad bib style}\_fi}
+ \_else ##1\_opwarning{\_noexpand\nonumcitations + empty bibmark. Maybe bad bib-style}\_fi}
}
\_def\_citelinkA{}
@@ -184,7 +184,7 @@
without reading any database. The bib-enty follows after this command.
This command counts the used `\bib`s from one by `\bibnum` counter and
saves \^`\_Xbib``{<label>}{\_the\_bibnum}{\_the\_bibmark}` into `.ref` file
- immediately using `\_wbib`. This is the core of creation of mapping from
+ immediately using `\_wbib`. This is the core of creation of mapping from
`<labels>` to `<bib-marks>`.
\_cod -----------------------------
@@ -204,14 +204,14 @@
\_doc -----------------------------
The \`\_printbib` prints the bib-entry itself. You can re-define it if you
- want different design. The `\_pritbib` starts in horizontal mode after
+ want a different design. The `\_pritbib` starts in horizontal mode after
`\noindent` and after the eventual hyperlink destination is inserted.
By default, the `\_printbib` sets the indentation
by `\hangindent` and prints numeric <bib-marks> by
`\llap{[\the\bibnum]}` If `\nonumcitations` then the `\_citelinkA` is not
- empty and <bib-marks> (`\the\bibnum` nor `\the\bibmark`) are not printed.
- The text of bib-entry follows. User can create this text manually
- using `\bib` command or it is generated automatically from a `.bib` database
+ empty and <bib-marks> (`\the\bibnum` nor `\the\bibmark`) are not printed.
+ The text of bib-entry follows. User can create this text manually
+ using `\bib` command or it is generated automatically from a `.bib` database
by `\usebib` command.
The vertical space between bib-entries is controlled by \`\_bibskip` macro.
@@ -224,7 +224,7 @@
\_doc -----------------------------
The \`\usebib` command is implemented in `usebib.opm` file which is loaded
- when the `\usebib` command is firstly used.
+ when the `\usebib` command is used first.
The `usebib.opm` file loads the `librarian.tex` for scanning the `.bib`
files. See the section~\ref[usebib], where the file `usebib.opm` is
documented.
@@ -237,7 +237,7 @@
\_forwardlink\`\nobibwarning` `[<list of bib-labels>]`
declares a list of bib labels
which are not fully declared in `.bib` file but we want to suppress the
- warning about it. List of bib labels are comma separated case sensitive
+ warning about it. List of bib labels are comma-separated case sensitive
list without spaces.
\_cod ------------------------------
@@ -267,5 +267,5 @@ See end of the `usebib.opm` file for documentation about creating style
files `bib-<style>.opm`.
See end of the `bib-iso690.opm` file for large documentation about `.bib` files
-structure and about usage of `iso690` bib-style.
+structure and about the usage of `iso690` bib-style.
diff --git a/macros/luatex/optex/base/colors.opm b/macros/luatex/optex/base/colors.opm
index eb57d0d9a8..bbda496761 100644
--- a/macros/luatex/optex/base/colors.opm
+++ b/macros/luatex/optex/base/colors.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \colordef {Colors <2020-03-18>} % loaded in format
@@ -7,14 +7,14 @@
\`\localcolor` as default.
\_cod -----------------------------
-\_newifi \_iflocalcolor \_localcolortrue
-\_protected\_def \_localcolor {\_localcolortrue}
+\_newifi \_iflocalcolor \_localcolortrue
+\_protected\_def \_localcolor {\_localcolortrue}
\_protected\_def \_nolocalcolor {\_localcolorfalse}
\_public \localcolor \nolocalcolor ;
\_doc -----------------------------
- The basic colors in CMYK
- \`\Blue` \`\Red` \`\Brown` \`\Green` \`\Yellow` \`\Cyan` \`\Magenta`
+ The basic colors in CMYK
+ \`\Blue` \`\Red` \`\Brown` \`\Green` \`\Yellow` \`\Cyan` \`\Magenta`
\`\Grey` \`\LightGrey` \`\White` and \`\Black`
are declared here.
\_cod -----------------------------
@@ -39,7 +39,7 @@
For example `\setrgbcolor{1 0 0}` expands to `\_setcolor{1 0 0 rg 1 0 0 RG}`.\nl
We set both types of colors (for lines (`K` or `RG` or `G`) and for fills
(`r` or `rg` or `g`) together in the <pdf-primitive> command.
- This is the reason why the \`\_fillstroke` uses both its parameters.
+ This is the reason why the \`\_fillstroke` uses both its parameters.
If only fills are needed you can do `\def\_fillstroke#1#2{#1}`.
If only strokes are needed you can do `\def\_fillstroke#1#2{#2}`.
\_cod -----------------------------
@@ -58,14 +58,14 @@
to its conversion to RGB <pdf-primitive>. This conversion is done by
the \^`\_cmyktorgb` macro. Moreover, `\onlyrgb` re-defines three basic RGB
colors for RGB color space and re-declares \^`\colordef` as \^`\rgbcolordef`.
- The \hbox{\`\onlycmyk`} macro does a similar work, it re-defines \^`\_formatrgb`
+ The \hbox{\`\onlycmyk`} macro does similar work, it re-defines \^`\_formatrgb`
macro. The Grey color space is unchanged and works in both main
settings (RGB or CMYK) without collisions.
\_cod -----------------------------
\_def\_onlyrgb{\_def\Red{\_setrgbcolor{1 0 0}}%
- \_def\Green{\_setrgbcolor{0 1 0}}\_def\Blue{\_setrgbcolor{0 0 1}}%
- \_let\_colordef=\_rgbcolordef
+ \_def\Green{\_setrgbcolor{0 1 0}}\_def\Blue{\_setrgbcolor{0 0 1}}%
+ \_let\_colordef=\_rgbcolordef
\_def\_formatrgb##1{\_fillstroke{##1 rg}{##1 RG}}%
\_def\_formatcmyk##1{\_fillstroke{\_cmyktorgb ##1 ; rg}{\_cmyktorgb ##1 ; RG}}}
\_def\_onlycmyk{\_def\_formatcmyk##1{\_fillstroke{##1 k}{##1 K}}%
@@ -76,18 +76,18 @@
The \`\_setcolor` macro redefines empty `\_ensureblack` macro (used in
output routine for headers and footers) to `\_ensureblackA` which sets
Black at the start of its parameter and returns to the current color at the
- end of its parameter.
-
+ end of its parameter.
+
The current color is saved into `\_currentcolor` macro and colorstack is pushed.
Finally, the `\_colorstackpop` is initialized by `\aftergroup` if
`\localcolor` is declared.
- You can save current color to your macro by `\let\yourmacro=\_currentcolor`
+ You can save the current color to your macro by `\let\yourmacro=\_currentcolor`
and you can return to this color by the command `\_setcolor\yourmacro`.
\_cod -----------------------------
\_protected\_def \_setcolor #1{\_global\_let\_ensureblack=\_ensureblackA
- \_iflocalcolor \_edef\_currentcolor{#1}\_colorstackpush\_currentcolor
+ \_iflocalcolor \_edef\_currentcolor{#1}\_colorstackpush\_currentcolor
\_aftergroup\_colorstackpop
\_else \_xdef\_currentcolor{#1}\_colorstackset\_currentcolor \_fi
}
@@ -97,7 +97,7 @@
\_colorstackpush\_pdfblackcolor #1\_colorstackpop}
\_doc -----------------------------
- The colorstack is initialized here and the basic macros
+ The colorstack is initialized here and the basic macros
\`\_colorstackpush`, \`\_colorstackpop` and \`\_colorstackset`
are defined here.
\_cod -----------------------------
@@ -108,8 +108,8 @@
\_def\_colorstackset#1{\_pdfcolorstack\_colorstackcnt set{#1}}
\_doc -----------------------------
- We need to open a special color stack for footnotes, because footnotes
- can follow on next pages and their colors are independent on colors
+ We need to open a special color stack for footnotes because footnotes
+ can follow on the next pages and their colors are independent of colors
used in the main page-body. The \`\_openfnotestack` is defined as
\`\_openfnotestackA` when the \^`\_setcolor` is used first.
The \`\_fnotestack` is initialized in in `\everyjob` because the
@@ -120,7 +120,7 @@
\_def \_openfnotestackA {\_pdfcolorstack\_fnotestack current}
\_doc -----------------------------
- We use lua codes for RGB to CMYK or CMYK to RGB conversions and for
+ We use Lua codes for RGB to CMYK or CMYK to RGB conversions and for
addition color components in the \^`\colordef` macro.
The \`\_rgbtocmyk` `<R> <G> <B> ;` expands to `<C> <M> <Y> <K>` and
the \`\_cmyktorgb` `<C> <M> <Y> <K> ;` expands to `<R> <G> <B>`.
@@ -170,13 +170,13 @@
\_doc -----------------------------
We have a problem with the `%.3f` directive in Lua code. It prints trailed
zeros: (0.300 instead desired 0.3) but we want to save PDF file space. The macro
- \`\_stripzeros` removes these trailing zeros at expand processor
+ \`\_stripzeros` removes these trailing zeros at the expand processor
level. So `\_stripzeros 0.300 0.400 0.560 ;` expands to `.3 .4 .56`.
\_cod -----------------------------
\_def\_stripzeros #1.#2 #3{\_ifx0#1\_else#1\_fi.\_stripzeroA #2 0 :%
\_ifx;#3\_else \_space \_ea\_stripzeros\_ea#3\_fi}
-\_def\_stripzeroA #10 #2:{\_ifx^#2^\_stripzeroC#1:\_else \_stripzeroB#1 0 :\_fi}
+\_def\_stripzeroA #10 #2:{\_ifx^#2^\_stripzeroC#1:\_else \_stripzeroB#1 0 :\_fi}
\_def\_stripzeroB #10 #2:{\_ifx^#2^\_stripzeroC#1:\_else #1\_fi}
\_def\_stripzeroC #1 #2:{#1}
@@ -184,15 +184,15 @@
The \`\rgbcolordef` and \`\cmykcolordef` use common macro
\`\_commoncolordef` with different first four parameters.
The `\_commoncolordef <selector><K><R><G><what-define>{<data>}` does the
- real work. It initializes the Lua variables for summation.
+ real work. It initializes the Lua variables for summation.
It expands <data> in the group where color selectors have
special meaning, then it adjusts the resulting string by \^`\replstring`
and runs it. Example shows how the <data> are processed:
- \begtt
- input <data>: ".3\Blue + .6^\KhakiC \useK -\Black"
+ \begtt \catcode`\<=13
+ input <data>: ".3\Blue + .6^\KhakiC \useK -\Black"
expanded to: ".3 !=K 1 1 0 0 +.6^!=R .804 .776 .45 \_useK -!=G 0"
adjusted to: "\_addcolor .3!=K 1 1 0 0 \_addcolor .6!^R .804 .776 .45
- \_useK \_addcolor -1!=G 0"
+ \_useK \_addcolor -1!=G 0"
and this is processed.
\endtt
\`\_addcolor` `<coef.>!<mod><type>` expands to `\_addcolor:<mod><type> <coef>`
@@ -203,9 +203,9 @@
processed and lowercase <type> informs that `\rgbcolordef` is processed.
All variants of commands `\_addcolor:<mod><type>` are defined. All of
them expand to `\_addcolorA <v1> <v2> <v3> <v4>` which adds the values of Lua
- variables. The `\rgbcolordef` uses `\_addcolorA <R> <G> <B> 0` and
+ variables. The `\rgbcolordef` uses `\_addcolorA <R> <G> <B> 0` and
`\cmkykcolordef` uses `\_addcolorA <C> <M> <Y> <K>`. So the Lua variable
- names are a little confusing when `\rgbcolordef` is processed.
+ names are a little confusing when `\rgbcolordef` is processed.
Next, `\_commoncolordef` saves resulting values from Lua to `\_tmpb`
using `\_colordefFin`. If `\rgbcolordef` is processed, then we must to
@@ -226,7 +226,7 @@
\_let\_useK=\_relax
\_edef\_tmpb{+#6}%
\_replstring\_tmpb{+ }{+}\_replstring\_tmpb{- }{-}%
- \_replstring\_tmpb{+}{\_addcolor}\_replstring\_tmpb{-}{\_addcolor-}%
+ \_replstring\_tmpb{+}{\_addcolor}\_replstring\_tmpb{-}{\_addcolor-}%
\_replstring\_tmpb{^!=}{!^}\_replstring\_tmpb{-!}{-1!}%
\_ifx K#2\_let\_useK=\_douseK \_fi
\_tmpb
@@ -238,7 +238,7 @@
\_def\_addcolor#1!#2#3{\_cs{addcolor:#2#3}#1}
\_def\_addcolorA #1 #2 #3 #4 #5 {%
\_def\_tmpa{#1}\_ifx\_tmpa\_empty \_else \_edef\_tmpa{\_tmpa*}\_fi
- \_directlua{color_C=math.max(color_C+\_tmpa#2,0)
+ \_directlua{color_C=math.max(color_C+\_tmpa#2,0)
color_M=math.max(color_M+\_tmpa#3,0)
color_Y=math.max(color_Y+\_tmpa#4,0)
color_K=math.max(color_K+\_tmpa#5,0)
@@ -264,7 +264,7 @@
\_let\_colordef=\_cmykcolordef % default \_colordef is \_cmykcolordef
\_doc -----------------------------
- Public versions of \`\colordef` and \`\useK` macros are declared using
+ Public versions of \`\colordef` and \`\useK` macros are declared using
`\_def`, because the internal versions `\_colordef` and `\_useK` are
changed during processing.
\_cod -----------------------------
@@ -281,21 +281,21 @@
\begtt
\def\vr{\vrule height10pt depth2pt width20pt}
\def\_showcolor{\hbox{\tt\_bslash\_tmpb: \csname\_tmpb\endcsname \vr}\space\space}
- \begmulti 4 \typosize[11/14]
+ \begmulti 4 \typosize[11/14]
\morecolors
\endmulti
- \endtt
+ \endtt
\_cod -----------------------------
\_def\_morecolors{%
- \_long\_def\_tmp##1\preparecolorset##2##3##4##5{\_tmpa ##5;,,,;}
- \_def\_tmpa##1,##2,##3,##4;{\_ifx,##1,\_else
- \_def\_tmpb{##1}\_replstring\_tmpb{1}{}\_replstring\_tmpb{2}{B}%
+ \_long\_def\_tmp##1\preparecolorset##2##3##4##5{\_tmpa ##5;,,,;}
+ \_def\_tmpa##1,##2,##3,##4;{\_ifx,##1,\_else
+ \_def\_tmpb{##1}\_replstring\_tmpb{1}{}\_replstring\_tmpb{2}{B}%
\_replstring\_tmpb{3}{C}\_replstring\_tmpb{4}{D}\_replstring\_tmpb{0}{O}%
- \_ifcsname \_tmpb\_endcsname \_else
- \_sdef{\_tmpb}{\_setrgbcolor{##2 ##3 ##4}}\_showcolor\_fi
+ \_ifcsname \_tmpb\_endcsname \_else
+ \_sdef{\_tmpb}{\_setrgbcolor{##2 ##3 ##4}}\_showcolor\_fi
\_ea\_tmpa\_fi
- }
+ }
\_ea\_tmp\_input x11nam.def
}
\_let\_showcolor=\_relax % re-define it if you want to print a color catalog
@@ -303,27 +303,27 @@
\_endcode % -------------------------------------
-The colors have different behavior than fonts. A marks (whatsits) with color
-information are stored into PDF output and \TeX/ doesn't interpret them.
-The PDF viewer (or PDF interpreter in a printer) reads these marks
+The colors have different behavior than fonts. Marks (whatsits) with color
+information are stored into PDF output and \TeX/ doesn't interpret them.
+The PDF viewer (or PDF interpreter in a printer) reads these marks
and switches colors according to them. This
-is totally independent on \TeX/ group mechanism. You can declare
+is independent of \TeX/ group mechanism. You can declare
`\nolocalcolor` at the beginning of the document, if you want this behavior.
-In this case, if you set a color then you must to return back to black color
+In this case, if you set a color then you must return to the black color
using `\Black` manually.
By default, \OpTeX/ sets `\localcolor`. It means that the typesetting
-returns back to a previous color at the end of current group, so you cannot
-write `\Black` explicitly. This is implemented using `\aftergroup` feature.
+returns to a previous color at the end of the current group, so you cannot
+write `\Black` explicitly. This is implemented using the `\aftergroup` feature.
There is a limitation of this feature: when a color selector is used in a
group of a box, which is saved by `\setbox`, then the activity or
-reconstruction of previous color are processed at `\setbox` time, no in the
-box itself. You must correct it by double group:
-\begtt
-\setbox0=\hbox{\Red text} % bad: \Black is done after \setbox
-\setbox0=\hbox{{\Red text}} % good: \Black is done after group inside the box
+reconstruction of the previous color is processed at `\setbox` time, no in the
+box itself. You must correct it by double group:
+\begtt
+\setbox0=\hbox{\Red text} % bad: \Black is done after \setbox
+\setbox0=\hbox{{\Red text}} % good: \Black is done after group inside the box
\endtt
-
+
The implementation of colors is based on colorstack, so the current color
can follow across more pages. It is not so obvious because PDF viewer (or PDF
interpreter) manipulates with colors locally at each PDF page and it
@@ -333,15 +333,15 @@ Macros \^`\setcmykcolor``{<C> <M> <Y> <K>}` or \^`\setrgbcolor``{<R> <G> <B>}`
or\nl \^`\setgreycolor``{<Grey>}` should be used in color selectors or user can
specify these macros explicitly.
-The color mixing processed by the \^`\colordef` is done in the substractive color
+The color mixing processed by the \^`\colordef` is done in the subtractive color
model CMYK. If the result has a component greater than 1 then all
-components are multiplied by a coefficient in order to maximal component is
+components are multiplied by a coefficient in order to the maximal component is
equal to 1.
You can move a shared amount of CMY components (i.e. their minimum) to the
$K$ component. This saves the color tonners and the result is more true.
This should be done by \^`\useK` command at the end of a linear combination
-used in `\colordef`. For example
+used in `\colordef`. For example
\begtt
\colordef \myColor {.3\Green + .4\Blue \useK}
\endtt
@@ -353,26 +353,26 @@ $$
}
$$
-You can use minus instead plus in the linear combination in `\colordef`. The
+You can use minus instead of plus in the linear combination in `\colordef`. The
given color is substracted in such case and the negative components are
rounded to zero immediately. For example
\begtt
-\colordef \Color {\Brown-\Black}
+\colordef \Color {\Brown-\Black}
\endtt
-can be used for removing black component from the color. You can use
-the `-\Black` trick after `\useK` command in order to remove grey components
-occured during color mixing.
+can be used for removing the black component from the color. You can use
+the `-\Black` trick after `\useK` command to remove grey components
+occurred during color mixing.
-Finally, you can use `^` immediately preceeded before macro name of the
+Finally, you can use `^` immediately preceded before the macro name of the
color. Then the complementary color is used here.
\begtt
-\colordef\mycolor{\Grey+.6^\Blue} % the same as \colordef\mycolor{\Grey+.6\Yellow}
+\colordef\mycolor{\Grey+.6^\Blue} % the same as \colordef\mycolor{\Grey+.6\Yellow}
\endtt
The \^`\rgbcolordef` can be used to mix colors in additive color model RGB.
If \^`\onlyrgb` is declared, then \^`\colordef` works as \^`\rgbcolordef`.
-If a CMYK to RGB or RGB to CMYK conversion is needed then
+If a CMYK to RGB or RGB to CMYK conversion is needed then
the following simple formulae are used
(ICC profiles are not supported):
$$
@@ -380,15 +380,15 @@ $$
\hbox{CMYK to RGB:}\cr
R = (1-C)(1-K), \ G = (1-M)(1-K), \ B = (1-Y)(1-K). \cr
\hbox{RGB to CMYK:}\cr
- K'=\max(R,G,B), \ C=(K'-R)/K', \ M=(K'-G)/K', \ Y=(K'-B)/K', \ K=1-K'.
+ K'=\max(R,G,B), \ C=(K'-R)/K', \ M=(K'-G)/K', \ Y=(K'-B)/K', \ K=1-K'.
}
$$
The RGB to CMYK conversion is invoked when a color is declared using `\setrgbcolor`
-and it is used in \^`\colordef` or if it is printed when \^`\onlycmyk` is declared.
+and it is used in \^`\colordef` or if it is printed when \^`\onlycmyk` is declared.
The CMYK to RGB conversion is invoked when a color is declared using \^`\setcmykcolor`
and it is used in \^`\rgbcolordef` or if it is printed when \^`\onlyrgb` is declared.
\_endinput
2020-04-22 \replstring\tmpb{+ }{+}, {- }{-} added in \colordef, bug fixed
-2020-03-18 introduced
+2020-03-18 introduced
diff --git a/macros/luatex/optex/base/doc.opm b/macros/luatex/optex/base/doc.opm
index d098cc6754..9c979e9849 100644
--- a/macros/luatex/optex/base/doc.opm
+++ b/macros/luatex/optex/base/doc.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \printdoc {Macros for documentation printing <2020-04-28>}
@@ -25,27 +25,27 @@
\_let\enddocument=\_bye
\_doc -----------------------------
- Full page of listing causes underfill `\vbox` in output routine.
+ A full page of listing causes underfull `\vbox` in output routine.
We need to add a small tolerance.
\_cod -----------------------------
\_pgbottomskip=0pt plus10pt minus2pt
\_doc -----------------------------
- The listing mode is implemented here. The \`\maxlines`
+ The listing mode is implemented here. The \`\maxlines`
is maximal lines of code printed in the listing mode.
\_cod -----------------------------
\_newcount \_maxlines \_maxlines=100000
\_public \maxlines ;
-\_eoldef\_cod#1{\_par \_wipeepar
+\_eoldef\_cod#1{\_par \_wipeepar
\_vskip\_parskip \_medskip \_ttskip
\_begingroup
- \_typosize[8/10]
+ \_typosize[8/10]
\_let\_printverbline=\_printcodeline
\_ttline=\_inputlineno
- \_setverb
+ \_setverb
\_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
\_adef{ }{\ }\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
\_relax \_ttfont
@@ -100,14 +100,14 @@
\_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi}
\_doc -----------------------------
- The lines in the listing mode have Yellow background.
- \_cod -----------------------------
+ The lines in the listing mode have a yellow background.
+ \_cod -----------------------------
\_def\Yellow{\_setcmykcolor{0.0 0.0 0.3 0.03}}
\_def\_printcodeline#1{\_advance \_maxlines by-1
\_ifnum \_maxlines<0 \_ea \_endverbprinting \_fi
- \_penalty \_ttpenalty \_kern-4pt
+ \_ifx\_printfilename\_relax \_penalty \_ttpenalty \_fi \_vskip-4pt
\_noindent\_rlap{\Yellow \_vrule height8pt depth5pt width\_hsize}%
\_printfilename
\_indent \_printverblinenum #1\par}
@@ -124,16 +124,16 @@
\_doc -----------------------------
`\docfile` is currently documented file.\nl
\`\printdoc` and \`\printdoctail` macros are defined here.
- \_cod -----------------------------
+ \_cod -----------------------------
\_def\docfile{}
\_def\_printdoc #1 {\_par \_def\docfile{#1}%
\_everytt={\_ttshift=-15pt \_let\_printverblinenum=\_relax}%
- \_ea\_cod \input #1
+ \_ea\_cod \input #1
\_everytt={\_let\_printverblinenum=\_relax}%
\_def\docfile{}%
}
-\_def\_printdoctail #1 {\_bgroup
+\_def\_printdoctail #1 {\_bgroup
\_everytt={}\_ttline=-1 \_ea\_printdoctailA \_input #1 \_egroup}
{\_long\_gdef\_printdoctailA#1\_endcode{}}
@@ -142,17 +142,17 @@
\_doc -----------------------------
You can do `\verbinuput \vitt{<filename>} (<from>-<to>) <filename>`
if you need analogical design like in listing mode.
- \_cod -----------------------------
+ \_cod -----------------------------
-\_def\_vitt#1{\_def\docfile{#1}\_ttline=-1
+\_def\_vitt#1{\_def\docfile{#1}\_ttline=-1
\_everytt={\_typosize[8/10]\_let\_printverbline=\_printcodeline \_medskip}}
\_public \vitt ;
\_doc -----------------------------
- The Index entries are without the trailing backslash. We must to add it
+ The Index entries are without the trailing backslash. We must add it
when printing Index.
- \_cod -----------------------------
+ \_cod -----------------------------
\_addto \_ignoredcharsen {_} % \foo, \_foo is the same in the fist pass of sorting
\_def\_printii #1#2&{%
@@ -160,15 +160,15 @@
\_gdef\_currii{#1#2}\_the\_everyii\_noindent
\_hskip-\_iindent \_ignorespaces\_printiiA\bslash#1#2//}
-\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0
+\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0
{\_rm\_printpages #1,:,\_par}}
-\_sdef{_tocl:1}#1#2#3{\_nofirst\_bigskip
+\_sdef{_tocl:1}#1#2#3{\_nofirst\_bigskip
\_bf\_llaptoclink{#1}{#2}\_hfill \_pgn{#3}\_tocpar\_medskip}
\_doc -----------------------------
The \code{<something>} will be print as <something>.
- \_cod -----------------------------
+ \_cod -----------------------------
\_let\lt=<
\_catcode`\<=13
@@ -184,21 +184,21 @@
\_def\_afterload{\_catcode`\<=13 \_catcode`\`=13 }
\_doc -----------------------------
- Main documentation point and hyperlinks to/from it.
+ Main documentation points and hyperlinks to/from it.
Main documentation point: \code{\\`\\foo`}.
User-level documentation point: \code{\\^`\\foo}, first occurence only.
- Next occurences are only links to main documentation point.
+ The next occurrences are only links to the main documentation point.
Link to user-level documentation point: \code{\\~`\\foo}.
If user-level documentation point follows the main documentation point
then use \code{\\_forwardlink\\`\\foo`}.
- \_cod -----------------------------
+ \_cod -----------------------------
\_activettchar`
\_def\`#1`{\_leavevmode\_edef\_tmp{\_csstring#1}\_iindex{\_tmp}%
\_ifcsname cs:\_tmp\_endcsname\_else \_dest[cs:\_tmp]\_fi
\_sxdef{cs:\_tmp}{}%
- \_hbox{\_ifcsname cs:^\_tmp\_endcsname
+ \_hbox{\_ifcsname cs:^\_tmp\_endcsname
\_link[cs:^\_tmp]{\Red}{\_tt\_csstring\\\_tmp}\_else
{\_tt\Red\_csstring\\\_tmp}\_fi}%
}
@@ -219,34 +219,34 @@
\_endcode %-------------------------------------------
\noindent
-The \^`\printdoc` `<filename><space>` and \^`\printdoctail` `<filename><space>`
-commands are defined after the file `doc.opm` is load by \^`\load`~`[doc]`.
+The \^`\printdoc` `<filename><space>` and \^`\printdoctail` `<filename><space>`
+commands are defined after the file `doc.opm` is load by \^`\load`~`[doc]`.
The `\printcoc` starts reading of given `<filename>` from the second line.
-The file is read in {\em the listing mode}.
+The file is read in {\em the listing mode}.
The `\prindoctail` starts reading given `<filename>` from the
-first occurrence of the `\_encode`. The file is read
+first occurrence of the `\_encode`. The file is read
in normal mode (like `\input <filename>`).
-The {\em listing mode} prints the lines as listing of a code. This mode is
+The {\em listing mode} prints the lines as a listing of a code. This mode is
finished when first {\visiblesp` \_doc`} occurs or first `\_endcode`
occurs. At least two spaces must precede before such `\_doc`. On the other
-hand, the `\_encode` must be at the left edge of the line without spaces.
+hand, the `\_encode` must be at the left edge of the line without spaces.
If this rule is not met then the listing mode continues.
If the first line or the last line of the listing mode is empty then such
lines are not printed. The maximal number of printed lines in the listing
-mode is \^`\maxlines`. Is is set to almost infinity (100000). You can set it
-to a more sensible value. Such setting is valid only for the first following
+mode is \^`\maxlines`. It is set to almost infinity (100000). You can set it
+to a more sensible value. Such a setting is valid only for the first following
listing mode.
-When the listing mode is finished by `\_doc` then next lines are read in the
-normal way, but the material between `\begtt` ... `\endtt` pair
-is shifted by three letters left. The reason is that the three spaces of
+When the listing mode is finished by `\_doc` then the next lines are read in the
+normal way, but the material between `\begtt` ... `\endtt` pair
+is shifted by three letters left. The reason is that the three spaces of
indentation is recommended in the `\_doc` ... `\_cod` pair and this shifting
-is a compensation of this indentation.
+is compensation for this indentation.
-The `\_cod` macro ignores the rest of current line and starts the listing
+The `\_cod` macro ignores the rest of the current line and starts the listing
mode again.
When the listing mode is finished by the `\_endcode` then the `\endinput` is
@@ -256,17 +256,17 @@ You cannot reach the end of the file (without `\_endcode`) in the listing
mode.
The listing mode creates all control sequences which are listed in the
-index as active link to the main documentation point of such control sequence
-and prints them in blue. Other text is printed in black.
+index as an active link to the main documentation point of such control sequence
+and prints them in blue. Another text is printed in black.
The main documentation point is denoted by \code{\\`\\}`<sequence>`\code{`}
in red, for example \code{\\`\\foo`}.
-The user documentation point is the first occurrence of
+The user documentation point is the first occurrence of
\code{\\^`\\}`<sequence>`\code{`}, for example \code{\\^`\\foo`}.
There can be more such markups, all of them are hyperlinks to the main
-documentation point.
-And main documentation point is hyperlink to the user documentation point,
-if such point exists. Finally, the
+documentation point.
+And main documentation point is a hyperlink to the user documentation point
+if this point exists. Finally, the
\code{\\~`\\}`<sequence>`\code{`} (for example \code{\\~`\\foo`}) are
hyperlinks to the user documentation point.
diff --git a/macros/luatex/optex/base/f-adventor.opm b/macros/luatex/optex/base/f-adventor.opm
index 8dac5cf324..df22be1130 100644
--- a/macros/luatex/optex/base/f-adventor.opm
+++ b/macros/luatex/optex/base/f-adventor.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Adventor] \Adventor {TeX Gyre Adventor based on Avantgarde Book}
{\caps} {\rm \bf \it \bi} {}
diff --git a/macros/luatex/optex/base/f-antt.opm b/macros/luatex/optex/base/f-antt.opm
index 644b5192c0..39d3d011ea 100644
--- a/macros/luatex/optex/base/f-antt.opm
+++ b/macros/luatex/optex/base/f-antt.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Antykwa Torunska] \Antt {Traditional Polish font family}
{\cond \medium \light \caps} {\rm \bf \it \bi} {Pagella}
diff --git a/macros/luatex/optex/base/f-baskerville.opm b/macros/luatex/optex/base/f-baskerville.opm
index 0d1b558285..4e6027d703 100644
--- a/macros/luatex/optex/base/f-baskerville.opm
+++ b/macros/luatex/optex/base/f-baskerville.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Baskerville] \Baskerville {Free vaiants of classical Baskerville}
{\caps} {\rm \bf \it \bi} {}
diff --git a/macros/luatex/optex/base/f-bonum.opm b/macros/luatex/optex/base/f-bonum.opm
index 900136e26f..a285021b2e 100644
--- a/macros/luatex/optex/base/f-bonum.opm
+++ b/macros/luatex/optex/base/f-bonum.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Bonum] \Bonum {TeX Gyre Bonum fonts based on Bookman}
{\caps} {\rm \bf \it \bi} {Bonum}
diff --git a/macros/luatex/optex/base/f-comicneue.opm b/macros/luatex/optex/base/f-comicneue.opm
index 267f021424..a7b9f8e002 100644
--- a/macros/luatex/optex/base/f-comicneue.opm
+++ b/macros/luatex/optex/base/f-comicneue.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [ComicNeue] \Comicneue {Comic Neue sans serif}
{\angular} {\lf \li \rm \it \bf \bi} {}
diff --git a/macros/luatex/optex/base/f-cursor.opm b/macros/luatex/optex/base/f-cursor.opm
index c7af7d6912..80b2a29457 100644
--- a/macros/luatex/optex/base/f-cursor.opm
+++ b/macros/luatex/optex/base/f-cursor.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Cursor] \Cursor {TeX Gyre Cursor fonts based on Courier}
{\caps} {\rm \bf \it \bi} {}
diff --git a/macros/luatex/optex/base/f-dejavu.opm b/macros/luatex/optex/base/f-dejavu.opm
index 14b65fbb51..76fd90c0db 100644
--- a/macros/luatex/optex/base/f-dejavu.opm
+++ b/macros/luatex/optex/base/f-dejavu.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [DejaVu] \Dejavu {Derived from the Vera fonts}
{\sans \mono \cond \light \caps} {\rm \bf \it \bi} {TG-DejavuMath}
diff --git a/macros/luatex/optex/base/f-ebgaramond.opm b/macros/luatex/optex/base/f-ebgaramond.opm
index ef73e2a51d..63502c9b08 100644
--- a/macros/luatex/optex/base/f-ebgaramond.opm
+++ b/macros/luatex/optex/base/f-ebgaramond.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [EB Garamond] \EBGaramond {Based on Garamond}
{\medium \semibold \caps \swash} {\rm \bf \it \bi \initials} {Garamond-Math}
diff --git a/macros/luatex/optex/base/f-garamondl.opm b/macros/luatex/optex/base/f-garamondl.opm
index 00150bf153..d642aac98c 100644
--- a/macros/luatex/optex/base/f-garamondl.opm
+++ b/macros/luatex/optex/base/f-garamondl.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Garamond Libre] \Garamondl {Free, derived from old style font family}
{\caps \swash} {\rm \bf \it \bi} {Garamond-Math}
diff --git a/macros/luatex/optex/base/f-gfsbodoni.opm b/macros/luatex/optex/base/f-gfsbodoni.opm
index 5b8e6d41f1..d7d3494a9d 100644
--- a/macros/luatex/optex/base/f-gfsbodoni.opm
+++ b/macros/luatex/optex/base/f-gfsbodoni.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [GFS Bodoni] \GFSBodoni {Based on Bodoni with greek letters}
{} {\rm \bf \it \bi} {}
diff --git a/macros/luatex/optex/base/f-heros.opm b/macros/luatex/optex/base/f-heros.opm
index 3a4518e1c3..ca62da93a5 100644
--- a/macros/luatex/optex/base/f-heros.opm
+++ b/macros/luatex/optex/base/f-heros.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Heros] \Heros {TeX Gyre Heros fonts based on Helvetica}
{\caps \cond} {\rm \bf \it \bi} {FiraMath}
@@ -23,13 +23,13 @@ Modifiers:^^J
\_endcode
-The font family file declares the font family for selecting fonts from such
-family at arbitrary size and with various shapes. Unicode fonts (OTF)
+The font family file declares the font family for selecting fonts from this
+family at the arbitrary size and with various shapes. Unicode fonts (OTF)
are preferred. The following example declares the Heros family:
\printdoc f-heros.opm
-If you want to write such font file, you need to keep following rules.
+If you want to write such a font family file, you need to keep the following rules.
\begitems
* Use the \^`\_famdecl` command first. It has the following syntax:
@@ -43,35 +43,34 @@ If you want to write such font file, you need to keep following rules.
terminal and prevents loading such file twice. Moreover, it probes
existence of `<font-for-testing>` in your system. If it doesn't exist, the
file loading is skipped with a warning on the terminal.
- The \^`\_ifexistfam` macro returns false in such case.
+ The \^`\_ifexistfam` macro returns false in this case.
The \^`\_fontnamegen` macro must be defined in the last parameter of the
\^`\_famdecl`. More about it is documented below.
-* You can use `\_wlog{\_detokenize{...` to write additional information into
- log file.
+* You can use `\_wlog{\_detokenize{...` to write additional information into a log file.
* You can declare optical sizes using \~`\_regoptsizes` if there are more font files
with different optical sizes (like in Latin Modern). See `f-lmfonts.opm`
file for more information about this special feature.
* Declare font modifiers using \~`\moddef` if they are present. The \`\resetmod`
must be declared in each font family.
-* Check if all your declared modifiers does not produce any space in
- horizontal mode. For example check: `X\caps Y`, the letters `XY` must
- be printed without any space.
+* Check if all your declared modifiers do not produce any space in
+ horizontal mode. For example check: `X\caps Y`, the letters `XY` must
+ be printed without any space.
* Optionally, declare new variants by the \^`\famvardef` macro.
-* Run `\_initfontfamily` in order to start the family (it is mandatory).
+* Run `\_initfontfamily` to start the family (it is mandatory).
* If math font should be loaded, use `\_loadmath{<math font>}`.
\enditems
-{\noindent \bf The \`\_fontnamegen` macro}
+{\noindent \bf The \`\_fontnamegen` macro}
(declared in the last parameter of the \^`\_famdecl`)
-must expand (at expand processor level only) to a file name of loaded font (or to its font
-name) and to optional font features appended. The Font Selection
-System uses this macro at primitive level in the following sense:
+must expand (at the expand processor level only) to a file name of the loaded font (or to its font
+name) and to optional font features appended. The Font Selection
+System uses this macro at the primitive level in the following sense:
-\begtt
+\begtt \catcode`\<=13
\font \<selector> {\_fontnamegen} \_sizespec
\endtt
%
-Note that the extended `\font` syntax
+Note that the extended `\font` syntax
`\font\<selector> {<font name>:<font features>} <size spec.>` or
`\font\<selector> {[<font file name>]:<font features>} <size spec.>`
is expected here.
@@ -119,7 +118,7 @@ can use it in font modifiers. You can use the \^`\_fsetV` macro in more
general form:
\begtt \catcode`\<=13
- \_fsetV <word-a>=<value-a>,<word-b>=<value-b> ...etc. terminated by a space
+ \_fsetV <word-a>=<value-a>,<word-b>=<value-b> ...etc. terminated by a space
\endtt
%
with obvious result `\def\_<word-a>V {<value-a>}\def\_<word-b>V {<value-b>}` etc.
@@ -128,7 +127,7 @@ with obvious result `\def\_<word-a>V {<value-a>}\def\_<word-b>V {<value-b>}` etc
If both font modifiers `\caps`, `\cond` were applied in Heros
family, then `\def\_capsV{+smcp;+onum}` and `\def\_condV{cn}` were processed
-by these font modifiers. If user needs the `\bf` variant at 11\,pt now then
+by these font modifiers. If a user needs the `\bf` variant at 11\,pt now then
the
\begtt
@@ -147,7 +146,7 @@ if `<word>` has `<value-a>` or `<value-b>` \dots or `<value-n>`. See
Recommendation: use the \^`\_fontfeatures` macro at the end of the `\_fontnamegen`
macro in order to the \^`\setff`, \^`\setfontcolor`, \^`\setletterspace`
-macros can work.
+macros can work.
\seccc The \code{\\moddef} macro
@@ -155,9 +154,9 @@ has the syntax \^`\moddef\<modifier>{<what to do>}`. It does more things than si
\begitems
* The modifier macros are defined as `\_protected`.
-* The modifier macros are defined as family-dependent.
-* If the declared control sequence is defined already (and it is not font
- modifier) then it is re-defined with warning.
+* The modifier macros are defined as family-dependent.
+* If the declared control sequence is defined already (and it is not a font
+ modifier) then it is re-defined with a warning.
\enditems
\noindent
The \^`\famvardef` macro has the same features.
@@ -169,34 +168,34 @@ is defined by the \^`\_famdecl` macro as:
\protected\def\<Familyselector> {%
\_def\_currfamily {<Familyselector>}%
\_def\_fontnamegen {...}% this is copied from 7-th parameter of \_famdecl
- \resetmod
+ \resetmod
<run all family-dependent font modifiers used before Familyselector without warnings>
\endtt
{\noindent\bf The \^`\_initfontfamily`}\nl
-must be run after modifers decaration.
+must be run after modifier's decaration.
It runs the `\<Familyselector>` and it runs `\_rm`,
-so first font from new family is loaded and it is ready to use it.
+so the first font from the new family is loaded and it is ready to use it.
\seccc Name conventions
-Create font modifiers, new variants and the `\<Familyselector>` only as public, i.e.
-in user name space without `_` prefix. We assume that if user re-defines them then he/she needs
-not them, so we have no problems. If user's definition done before loading
-font family file is re-defined then \OpTeX/ warns about it. See the end of
+Create font modifiers, new variants, and the `\<Familyselector>` only as public, i.e.
+in user namespace without `_` prefix. We assume that if a user re-defines them then he/she needs
+not them, so we have no problems. If the user's definition was done before loading
+the font family file then it is re-defined and \OpTeX/ warns about it. See the end of
section~\ref[fontcommands].
-The name of `\<Familyselector>` should begin with uppercase letter.
+The name of `\<Familyselector>` should begin with an uppercase letter.
Please, look at
\ulink[http://petr.olsak.net/ftp/olsak/optex/op-catalog.pdf]{\OpTeX/ font catalogue}
-before you will create your own font family file and use the same names for
-analogical font modifiers (like `\cond`, `\caps`, `\sans`, `\mono` etc.)\
+before you will create your font family file and use the same names for
+analogical font modifiers (like `\cond`, `\caps`, `\sans`, `\mono` etc.)\
and for extra variant selectors (like `\lf`, `\li`, `\kf`, `\ki` etc.\ used in
Roboto font family).
If you are using the same font modifier names to analogical font shapes then
-such modifiers are kept when family is changend. For example:
+such modifiers are kept when the family is changed. For example:
\begtt
\fontfam [Termes] \fontfam[Heros]
@@ -210,9 +209,9 @@ unavailable in the new family).
In this example, `\Termes` does `\resetmod` followed by `\caps\cond`.
The `\caps` is applied and `\cond` is silently ignored in Termes family.
-If you need to declare your private modifier (because it is used in another
+If you need to declare your private modifier (because it is used in other
modifiers or macros, for example), use the name `\_wordM`. You can be
-sure that such name does not influence the private name space used by \OpTeX/.
+sure that such a name does not influence the private namespace used by \OpTeX/.
\seccc Additional notes
@@ -220,12 +219,12 @@ See the font family file `f-libertine-s.opm` which is another example where no
font files but font names are used.
See the font family file `f-lmfonts.opm` or `f-poltawski.opm` where you can find the
-the example of the optical sizes declaration including a documentation about
+the example of the optical sizes declaration including documentation about
it.
-If you need to create font family file with non-Unicode font, you can do it.
-The `\_fontnamegen` must expand to the name of TFM file in such case. But we
+If you need to create a font family file with a non-Unicode font, you can do it.
+The `\_fontnamegen` must expand to the name of TFM file in this case. But we
don't prefer such font family files, because they are usable only with
-languages with alphabet subset to ISO-8859-1 (Unicodes are equal to letter
+languages with alphabet subset to ISO-8859-1 (Unicodes are equal to letter's
codes of such alphabets), but middle or east Europe use languages where
-such condition is not true.
+such a condition is not true.
diff --git a/macros/luatex/optex/base/f-kerkis.opm b/macros/luatex/optex/base/f-kerkis.opm
index 40b5e90f1c..4bc31ead65 100644
--- a/macros/luatex/optex/base/f-kerkis.opm
+++ b/macros/luatex/optex/base/f-kerkis.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Kerkis] \Kerkis {Free Bookman alternative with Greek letters}
{\semibold \sans \sanssemi \caps} {\rm \bf \it \bi \calli} {}
diff --git a/macros/luatex/optex/base/f-kpfonts.opm b/macros/luatex/optex/base/f-kpfonts.opm
index e8915ba9e4..c030bea8e8 100644
--- a/macros/luatex/optex/base/f-kpfonts.opm
+++ b/macros/luatex/optex/base/f-kpfonts.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [KP Fonts] \Kpfonts {KP fonts -- Johannes Kepler project}
{\sans \mono \light \caps \swash} {\rm \bf \it \bi} {KpMath}
diff --git a/macros/luatex/optex/base/f-libertine-s.opm b/macros/luatex/optex/base/f-libertine-s.opm
index f08126984e..3cdc089312 100644
--- a/macros/luatex/optex/base/f-libertine-s.opm
+++ b/macros/luatex/optex/base/f-libertine-s.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts}
{\sans \mono \caps} {\rm \bf \it \bi \initials \displ \keybr} {}
diff --git a/macros/luatex/optex/base/f-libertine.opm b/macros/luatex/optex/base/f-libertine.opm
index 06ce3d9b55..b25c2fc4f9 100644
--- a/macros/luatex/optex/base/f-libertine.opm
+++ b/macros/luatex/optex/base/f-libertine.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts}
{\sans \mono \caps \semibold} {\rm \bf \it \bi \initials \displ \keybr} {Libertinus}
diff --git a/macros/luatex/optex/base/f-libertinus.opm b/macros/luatex/optex/base/f-libertinus.opm
index fef53a6beb..5f1329d286 100644
--- a/macros/luatex/optex/base/f-libertinus.opm
+++ b/macros/luatex/optex/base/f-libertinus.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Libertinus] \Libertinus {Free fonts derived from Linux Libertine}
{\semibold \sans \caps} {\rm \bf \it \bi \mono \initials \displ \keybr} {Libertinus}
diff --git a/macros/luatex/optex/base/f-lido.opm b/macros/luatex/optex/base/f-lido.opm
index 80922ed17b..13b4cb7628 100644
--- a/macros/luatex/optex/base/f-lido.opm
+++ b/macros/luatex/optex/base/f-lido.opm
@@ -1,7 +1,7 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Lido] \Lido {by StormType Foundry designed for "lidove noviny"}
- {\caps \cond} {\rm \bf \mf \mi \it \bi} {Termes}
+ {\cond} {\rm \bf \mf \mi \it \bi} {Termes}
{[LidoSTF]}
{\_def\_fontnamegen {[LidoSTF\_condV\_currV]:script=latn;\_capsV\_fontfeatures}}
diff --git a/macros/luatex/optex/base/f-lmfonts.opm b/macros/luatex/optex/base/f-lmfonts.opm
index 4c9ce04760..13865890e2 100644
--- a/macros/luatex/optex/base/f-lmfonts.opm
+++ b/macros/luatex/optex/base/f-lmfonts.opm
@@ -1,7 +1,7 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Latin Modern] \LMfonts {TeX Gyre fonts based on Coputer Modern}
- {\roman \sans \quotset \ttset \ttprop \ttlight \ttcond \upital
+ {\roman \sans \quotset \ttset \ttprop \ttlight \ttcond \upital
\dunhill submods:\caps \slant \nbold \bolder} {\rm \bf \it \bi \tt} {LM}
{[lmroman10-regular]}
{\_def\_fontnamegen {[\_optname{lm\_subfamV.\_currV}]:\_fontfeatures}}
@@ -62,7 +62,7 @@ Sub-modifiers (selects special variants of given subfamily):^^J
\_LMregfont lmtt.i LMMono?-Italic \_regoptT % 10
\_LMregfont lmtt.bi LMMonoLt?-BoldOblique \_regoptT % 10
\_LMregfont lmtt.isl LMMonoSlant?-Regular \_regoptT % 10
-\_optfontalias {lmtt.bisl} {lmtt.bi}
+\_optfontalias {lmtt.bisl} {lmtt.bi}
\_LMregfont lmtp.r LMMonoPropLt?-Regular \_regoptT % 10
\_LMregfont lmtp.bx LMMonoPropLt?-Bold \_regoptT % 10
@@ -99,12 +99,12 @@ Sub-modifiers (selects special variants of given subfamily):^^J
% submodifiers (they select special vaiants in a subfamily)
\_moddef \nbold {\_onlyif subfam=rm,ss,tp: {\_fvars r b i bi }}
-\_moddef \bolder {\_onlyif subfam=rm,ss,tp: {\_fvars r bx i bxi }}
+\_moddef \bolder {\_onlyif subfam=rm,ss,tp: {\_fvars r bx i bxi }}
\_moddef \slant {\_onlyif subfam=rm: {\_fvars r bx isl bxisl }%
\_onlyif subfam=tt: {\_fvars r b isl bisl }}
\_moddef \caps {\_onlyif subfam=rm,tt: {\_fvars rc . ic . }}
-\_def \_tryloadtt {\_fontdef\_tentt{\_LMfonts \_addto\_fontfeatures{-tlig;}\_ttset \_rm}}
+\_def \_tryloadtt {\_fontdef\_tentt{\_LMfonts \_addto\_fontfeatures{-tlig;}\_ttset \_rm}}
\_private \LMfonts \ttset ; % used in \_tryloadtt
\_initfontfamily % new font family must be initialized
@@ -117,19 +117,19 @@ Sub-modifiers (selects special variants of given subfamily):^^J
You can use \^`\_optname` macro when `\_fontnamegen` in expanded. This macro is fully
expandable and its input is `<internal-template>` and its output is a
-part of the font file name `<size-dependent-template>` with respect to given
+part of the font file name `<size-dependent-template>` with respect to given
optical size.
You can declare a collection of `<size-dependent-template>`s for one
-given `<internal-template>` by the \^`\_regoptsizes` macro.
+given `<internal-template>` by the \^`\_regoptsizes` macro.
The syntax is shown for one real case:
-\begtt
+\begtt
\_regoptsizes lmr.r lmroman?-regular
- 5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*
+ 5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*
\endtt
-In general:
+In general:
\begtt \catcode`\<=13
\_regoptsizes <internal-template> <general-ouput-template> <resizing-data>
@@ -145,14 +145,14 @@ with zero \code{<0}, but it is not explicitly written. The right part of
<resizing-data> must be terminated by \code{<*} which means "less than infinity".
If `\_optname` gets an argument which is not registered <internal-template>
-then it expands to `\_failedoptname` which typically ends to error message
+then it expands to `\_failedoptname` which typically ends with an error message
about missing font. You can redefine `\_failedoptname` macro to some
existing font if you find it useful.
-We are using a special macro `\_LMregfont` in `f-lmfonts.opm`.
+We are using a special macro `\_LMregfont` in `f-lmfonts.opm`.
It sets the file names to
-lowercase and enables to use a shortcasts isntead real <resizing-data>.
-There are shortcats `\_regoptFS`, `\_regoptT`, etc. here. The collection of
+lowercase and enables us to use shortcuts instead of real <resizing-data>.
+There are shortcuts `\_regoptFS`, `\_regoptT`, etc. here. The collection of
`<internal-templates>` are declared, each of them covers a collection of real
file names.
@@ -179,7 +179,7 @@ artists are very creative people), so you need to declare more systematic
\fontalias crea-b-bolditalic {Creative Bold subfam Oblique}
\endtt
-Another example of font family with optical sizes is Antykwa Półtawskiego.
+Another example of a font family with optical sizes is Antykwa Półtawskiego.
The optical sizes feature is deactivated by default and it is switched on by
`\osize` font modifier:
diff --git a/macros/luatex/optex/base/f-merriweather.opm b/macros/luatex/optex/base/f-merriweather.opm
index c640138280..f2972aaafd 100644
--- a/macros/luatex/optex/base/f-merriweather.opm
+++ b/macros/luatex/optex/base/f-merriweather.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Merriweather] \Merriweather {Modern shapes, sharp serifs}
{\caps \sans \serif} {\lf \li \rm \bf \it \bi \kr \ki} {}
diff --git a/macros/luatex/optex/base/f-pagella.opm b/macros/luatex/optex/base/f-pagella.opm
index f40b102b1c..a0e4eb8e30 100644
--- a/macros/luatex/optex/base/f-pagella.opm
+++ b/macros/luatex/optex/base/f-pagella.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Pagella] \Pagella {TeX Gyre Pagella fonts based on Palatino}
{\caps} {\rm \bf \it \bi} {Pagella}
diff --git a/macros/luatex/optex/base/f-poltawski.opm b/macros/luatex/optex/base/f-poltawski.opm
index 40af438f64..ffc7e8474d 100644
--- a/macros/luatex/optex/base/f-poltawski.opm
+++ b/macros/luatex/optex/base/f-poltawski.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Poltawski] \Poltawski {Antykwa Poltawskiego, Polish traditional font family}
{\light \noexpd \expd \eexpd \cond \ccond \osize \caps} {\rm \bf \it \bi} {}
diff --git a/macros/luatex/optex/base/f-roboto.opm b/macros/luatex/optex/base/f-roboto.opm
index 1baaec0442..51dfffff25 100644
--- a/macros/luatex/optex/base/f-roboto.opm
+++ b/macros/luatex/optex/base/f-roboto.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Roboto] \Roboto {Geometric grotesk, thin variants included}
{\cond \mono \ttset \thin \light \normal \bolder \caps}
diff --git a/macros/luatex/optex/base/f-schola.opm b/macros/luatex/optex/base/f-schola.opm
index c891317265..067a6d0ce2 100644
--- a/macros/luatex/optex/base/f-schola.opm
+++ b/macros/luatex/optex/base/f-schola.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Schola] \Schola {TeX Gyre Schola fonts based on New Century}
{\caps} {\rm \bf \it \bi} {Schola}
diff --git a/macros/luatex/optex/base/f-sourcepro.opm b/macros/luatex/optex/base/f-sourcepro.opm
index 47e81da6b0..a8e847104e 100644
--- a/macros/luatex/optex/base/f-sourcepro.opm
+++ b/macros/luatex/optex/base/f-sourcepro.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Source Pro] \Sourcepro {SourceSerifPro,SourceSansPro,SourceCodePro}
{\serif \sans \mono \light \elight \bolder \medium \caps} {\rm \bf \it \bi} {Termes}
diff --git a/macros/luatex/optex/base/f-technika.opm b/macros/luatex/optex/base/f-technika.opm
index 4366a1366b..77b894e53b 100644
--- a/macros/luatex/optex/base/f-technika.opm
+++ b/macros/luatex/optex/base/f-technika.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Technika] \Technika {Fonts from visual style of CTU in Prague}
{\caps \light} {\rm \bf \it \bi \stencil} {}
diff --git a/macros/luatex/optex/base/f-termes.opm b/macros/luatex/optex/base/f-termes.opm
index b765245640..8cd6ee6d8a 100644
--- a/macros/luatex/optex/base/f-termes.opm
+++ b/macros/luatex/optex/base/f-termes.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [Termes] \Termes {TeX Gyre Termes fonts based on Times}
{\caps} {\rm \bf \it \bi} {Termes}
diff --git a/macros/luatex/optex/base/f-xcharter.opm b/macros/luatex/optex/base/f-xcharter.opm
index de61e7c67f..9ad886d47f 100644
--- a/macros/luatex/optex/base/f-xcharter.opm
+++ b/macros/luatex/optex/base/f-xcharter.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [XCharter] \XCharter {An extension of Bitstream Charter}
{\caps \slant} {\rm \bf \it \bi} {}
diff --git a/macros/luatex/optex/base/fams-ini.opm b/macros/luatex/optex/base/fams-ini.opm
index 0b7ea42d5c..4b12550553 100644
--- a/macros/luatex/optex/base/fams-ini.opm
+++ b/macros/luatex/optex/base/fams-ini.opm
@@ -1,8 +1,8 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% Version <2020-02-28>. Loaded in format and secondly on demand by \fontfam[catalog]
-\_famtext {Special name for printing a catalogue:}
+\_famtext {Special name for printing a catalog :}
\_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {}
\_famalias [Catalog]
@@ -72,7 +72,7 @@
\_famfrom {Zygfryd Gardzielewski, Janusz M. Nowacki}
\_faminfo [Antykwa Torunska] {Traditional Polish font family} {f-antt}
- { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi}
+ { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi}
\medium,\cond\medium, \light, \cond\light:{\rm\it} }
\_famalias [Antt]
@@ -147,24 +147,24 @@
\_endcode
-Once you have prepared a font family file with the name `f-<famname>.opm` and \TeX/ is
-able to see it in your filesystem then you can type \^`\fontfam``[<famname>]` and
+Once you have prepared a font family file with the name `f-<famname>.opm` and
+\TeX/can see it in your filesystem then you can type \^`\fontfam``[<famname>]` and
the file is read, so the information about the font family is loaded. The name
`<famname>` must be lowercase and without spaces in the file name
-`f-<famname>.opm`. On the other hand the `\fontfam` command is more tolerant:
-you can write uppercase letters and spaces here. The spaces are ignored and
+`f-<famname>.opm`. On the other hand, the `\fontfam` command is more tolerant:
+you can write uppercase letters and spaces here. The spaces are ignored and
uppercase letters are converted to lowercase.
For example `\fontfam [LM Fonts]` is equivalent to `\fontfam [LMfonts]` and both
commands load the file `f-lmfonts.opm`.
-You can use your font file in sense of previous paragraph without
+You can use your font file in sense of the previous paragraph without
registering it. But problem is that such families are not listed when
-`\fontfam[?]` is used and it is not included in font catalogue when
-`\fontfam[catalog]` is printed. The list of families taken in the catalogue and
+`\fontfam[?]` is used and it is not included in the font catalog when
+`\fontfam[catalog]` is printed. The list of families taken in the catalog and
listed on the terminal is declared in two files: `fams-ini.opm` and
-`fams-local.opm`. The second file is optional. User can create it and write to
+`fams-local.opm`. The second file is optional. Users can create it and write to
it the information about user-defined families using the same syntax as in
-existed file `fams-ini.opm`.
+existed file `fams-ini.opm`.
The information from the user's `fams-local.opm` file has precedence.
For example `fams-ini.opm` declares aliases Times$\to$Termes etc. If you
@@ -189,21 +189,21 @@ The \^`\_faminfo` commad has the syntax:
{ <mod-plus-vars> }
\endtt
%
-The `<mod-plus-vars>` data is used only when printing catalogue. It consists with
+The `<mod-plus-vars>` data is used only when printing the catalog. It consists of
one or more pairs `<mods>: {<vars>}`.
-For each pair: each modifiers (separated by comma) is applied to each
+For each pair: each modifier (separated by comma) is applied to each
variant selector in <vars>
and prepared samples are printed. The `-` character means no modifiers
should be applied.
The \^`\_famalias` declares an alias to the last
-declared family.
+declared family.
-The \^`\_famtext` writes a line to the terminal and to the log file when all
+The \^`\_famtext` writes a line to the terminal and the log file when all
families are listed.
The \^`\_famfrom` saves the information about font type foundry or
manufacturer or designer or license owner. You can use it before `\_faminfo`
-in order to print `\_famfrom` info into the catalogue.
+to print `\_famfrom` info into the catalog.
The `\_famfrom` data is applied to each following declared families until new
`\_famfrom` is given. Use `\_famfrom {}` if the information is not known.
diff --git a/macros/luatex/optex/base/fnotes.opm b/macros/luatex/optex/base/fnotes.opm
index 219b2cf293..612b32a17d 100644
--- a/macros/luatex/optex/base/fnotes.opm
+++ b/macros/luatex/optex/base/fnotes.opm
@@ -1,25 +1,24 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \fnote {Footnotes, marginal notes OpTeX <2020-05-26>} % loaded in format
\_doc -----------------------------
- \`\_gfnotenum` is conter which counts footnotes globally in the document.
- whole document, chapters, pages.\nl
- \`\_lfnotenum` is counter which counts footnotes at each chapter from one.
- It is used for local page footnote counters too.\nl
+ \`\_gfnotenum` is a counter which counts footnotes globally in the whole document.\nl
+ \`\_lfnotenum` is a counter which counts footnotes at each chapter from one.
+ It is used for local page footnote counters too.\nl
\`\_ifpgfnote` says that footnote numbers are counted on each page from
- one. We need to run `\openref` in such case.\nl
- \`\fnotenum` is a macro which expands to footnote number counted in declared part.\nl
+ one. We need to run `\openref` in this case.\nl
+ \`\fnotenum` is a macro that expands to footnote number counted in declared part.\nl
\`\fnotenumchapters` declares footnotes numbered in each chapter from one
(default), \`\fnotenumglobal` declares footnotes numbered in whole
- document from one and \`\fnotenumpages` declares footnotes numbered
- at each page from one.
+ document from one and \`\fnotenumpages` declares footnotes numbered
+ at each page from one.
\_cod -----------------------------
\_newcount\_gfnotenum \_gfnotenum=0
\_newcount\_lfnotenum
-\_newifi \_ifpgfnote
+\_newifi \_ifpgfnote
\_def \_fnotenumglobal {\_def\_fnotenum{\_the\_gfnotenum}\_pgfnotefalse}
\_def \_fnotenumchapters {\_def\_fnotenum{\_the\_lfnotenum}\_pgfnotefalse}
\_def \_fnotenumpages {\_def\_fnotenum{\_trycs{_fn:\_the\_gfnotenum}{?}}\_pgfnotetrue}
@@ -32,15 +31,15 @@
The \`\_printfnotemark` prints the footnote mark. You can re-define this
macro if you want another design of footnotes. For example
\begtt
- \fnotenumpages
- \def \_printfnotemark {\ifcase 0\fnotenum\or
+ \fnotenumpages
+ \def \_printfnotemark {\ifcase 0\fnotenum\or
*\or**\or***\or$^\mathbox{†}$\or$^\mathbox{‡}$\or$^\mathbox{††}$\fi}
\endtt
- This code gives footnotes* and ** and*** and$^\mathbox{†}$ etc.\
+ This code gives footnotes* and ** and*** and$^\mathbox{†}$ etc.\
and it supposes that there are no more than 6 footnotes at one page.
If you want to distinguish between footnote marks in the text and in the front of
- footnote itself, then you can define `\_printfnotemarkA` and `\_printfnotemarkB`.
+ the footnote itself, then you can define `\_printfnotemarkA` and `\_printfnotemarkB`.
The \`\fnotelinks``<colorA><colorB>` implements the hyperlinked footnotes
(from text to footnote and backward).
@@ -50,7 +49,7 @@
\_def \_printfnotemarkA {\_printfnotemark} % footnote marks used in text
\_def \_printfnotemarkB {\_printfnotemark} % footnote marks used in front of footnotes
-\_def \_fnotelinks#1#2{% <inText color> <inFootnote color>
+\_def \_fnotelinks#1#2{% <inText color> <inFootnote color>
\_def\_printfnotemarkA{\_link[fnt:\_the\_gfnotenum]{\_localcolor#1}{\_printfnotemark}%
\_dest[fnf:\_the\_gfnotenum]}%
\_def\_printfnotemarkB{\_link[fnf:\_the\_gfnotenum]{\_localcolor#2}{\_printfnotemark}%
@@ -59,7 +58,7 @@
\public \fnotelinks ;
\_doc ----------------------------
- Each footnote saves the \`\_Xfnote` (without parameter) to the `.ref`
+ Each footnote saves the \`\_Xfnote` (without parameter) to the `.ref`
file (if `\openref`). We can create the mapping from `<gfnotenum>` to`<pgfnotenum>`
in the macro `\_fn:<fnotenum>`. Each \^`\_Xpage` macro sets the
`\_lfnotenum` to zero.
@@ -70,7 +69,7 @@
\_doc ----------------------------
The \`\fnote` `{<text>}` macro is simple, \`\fnotemark` and \^`\fnotetext`
- does the real work.
+ does the real work.
\_cod ----------------------------
\_def\_fnote{\_fnotemark1\_fnotetext}
@@ -79,13 +78,13 @@
\_doc ----------------------------
The \`\fnotetext` calls \^`\_opfootnote` which is equivalent to plain \TeX/
\^`\vfootnote`. It creates new data to Insert \^`\footins`. The only
- difference is that we are able to propagate a macro parameter into Insert group
- before the text is printed (see section \ref[output]).
+ difference is that we can propagate a macro parameter into the Insert group
+ before the text is printed (see section \ref[output]).
This propagated macro is \`\_fnset` which sets smaller fonts.
- Note that \^`\vfootnote` and \^`\_opfootnote` does't read the text as a
- parameter but during normal horizontal mode. This is reason why catcode
- changes (for example in-line verbatim) can be used here.
+ Note that \^`\vfootnote` and \^`\_opfootnote` don't read the text as a
+ parameter but during the normal horizontal mode. This is the reason why catcode
+ changes (for example in-line verbatim) can be used here.
\_cod ----------------------------
\_def\_fnotetext{\_incr\_gfnotenum \_incr\_lfnotenum % global increment
@@ -106,9 +105,9 @@
margin at even pages. The `\mnote` macro saves its position to `.ref`
file as \`\_Xmnote` without parameter. We define `\_mn:<mnotenum>` as
`\right` or `\left` when the `.ref` file is read.
- The `\ifnum 0`$\le$`0#2` trick returns true if `<pageno>` has numeric type and false
- if it is non-numeric type (Roman numeral, for example). We prefer to use
- `<pageno>`, but only if it has numeric type. We use `<gpageno>` in other cases.
+ The `\ifnum 0`$\le$`0#2` trick returns true if `<pageno>` has a numeric type and false
+ if it is a non-numeric type (Roman numeral, for example). We prefer to use
+ `<pageno>`, but only if it has the numeric type. We use `<gpageno>` in other cases.
\_cod -----------------------------
\_newcount\_mnotenum \_mnotenum=0 % global counter of mnotes
@@ -119,18 +118,18 @@
\_doc -----------------------------
User can declare \`\fixmnotes``\left` or \^`\fixmnotes``\right`. It defines
- \`\_mnotesfixed` as `\_left` or `\_right` which declares the placement
- of all marginal notes and such declaration has a precedence.
+ \`\_mnotesfixed` as `\_left` or `\_right` which declares the placement
+ of all marginal notes and such declaration has a precedence.
\_cod -----------------------------
\_def \_fixmnotes #1{\_edef\_mnotesfixed{\_cs{_\_csstring #1}}}
\_public \fixmnotes ;
\_doc -----------------------------
- The \`\_mnoteD``{<text>}` macro sets the position the marginal note.
+ The \`\_mnoteD``{<text>}` macro sets the position of the marginal note.
The outer box of marginal note has zero width and zero depth and it is appended
after current line using `\vadjust` primitive or it is inverted to vertical mode
- as a box with `\vskip-\baselineskip` followed.
+ as a box with `\vskip-\baselineskip` followed.
\_cod -----------------------------
\_def\_mnote #1#{\_ifx^#1^\_else \_mnoteC#1\_end \_fi \_mnoteD}
@@ -142,10 +141,10 @@
\_public \mnote ;
\_doc -----------------------------
- The \`\mnoteskip` is a dimen which denotes the vertical shift of marginal
- note from its normal position. Positive value means shift up, negative
+ The \`\mnoteskip` is a dimen value that denotes the vertical shift of marginal
+ note from its normal position. A positive value means shift up, negative
down. The `\mnoteskip` register is set to zero
- after the marginal note is printed. The new sytax `\mnote up<dimen>{<text>}`
+ after the marginal note is printed. The new syntax `\mnote up<dimen>{<text>}`
is possible too, but public `\mnoteskip` is kept for backward compatibility.
\_cod -----------------------------
@@ -160,7 +159,7 @@
\_long\_def\_mnoteA #1{\_incr\_mnotenum
\_ifx\_mnotesfixed\_undefined
- \_ifcsname _mn:\_the\_mnotenum \_endcsname
+ \_ifcsname _mn:\_the\_mnotenum \_endcsname
\_edef\_mnotesfixed{\_cs{_mn:\_the\_mnotenum}}%
\_else
\_opwarning{unknown \_noexpand\mnote side. TeX me again}\_openref
@@ -175,7 +174,7 @@
{\_the\_everymnote\_noindent#1\_endgraf}}%
\_dp0=0pt \_box0 \_kern\_mnoteskip \_global\_mnoteskip=0pt}\_hss}%
}
-\_def \_lrmnote#1#2{\_ea\_ifx\_mnotesfixed\_left #1\_else #2\_fi}
+\_def \_lrmnote#1#2{\_ea\_ifx\_mnotesfixed\_left #1\_else #2\_fi}
\_doc -----------------------------
We don't want to process `\fnote`, `\fnotemark`, `\mnote` in TOC, headlines
diff --git a/macros/luatex/optex/base/fonts-catalog.opm b/macros/luatex/optex/base/fonts-catalog.opm
index b71132f4d4..3cd02e7b27 100644
--- a/macros/luatex/optex/base/fonts-catalog.opm
+++ b/macros/luatex/optex/base/fonts-catalog.opm
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \_undefined {Font catalogue <2020-02-26>} % loaded on demand by \fontfam[catalog]
\_tracinglostchars=1 % only to log file
-\_initunifonts
+\_initunifonts
\_begingroup
\_istoksempty\_catalogmathsample \_iftrue \_noloadmath \_fi
@@ -24,7 +24,7 @@
\_fi
\_def\_faminfo [#1]#2#3#4{%
- \_bgroup
+ \_bgroup
\_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
\_edef\_act{\_noexpand\_isinlist{,\_cataloglist,}{,\_famname,}}\_act
\_iftrue \def\_cataloglist{}\_fi
@@ -32,11 +32,11 @@
\_iftrue \def\_cataloglist{.}\_fi
\_ifx\_cataloglist\_empty
\_ifx^#4^\_else
- \_bigskip {\_ttfixed\_string\fontfam [#1] -- (#2)\_par}
+ \_bigskip {\_ttfixed\_string\fontfam [#1] -- (#2)\_par}
\_input #3.opm
\_ifexistfam \_nobreak\_medskip \_dosamples #4:{}
- \_ifx\_mathfaminfo\_empty
- \_else \_istoksempty\_catalogmathsample
+ \_ifx\_mathfaminfo\_empty
+ \_else \_istoksempty\_catalogmathsample
\_iftrue {\_ttfixed \$Default math font\$: \_mathfaminfo \_par}
\_else Default math font (\_mathfaminfo): \_the\_catalogmathsample \_par
\_fi\_fi
@@ -50,7 +50,7 @@
\_ea\_dosamples\_fi
}
\_def\_dosamplesA#1,{%
- \_ifx^#1^\_else
+ \_ifx^#1^\_else
\_ifx-#1\_def\_usemodifiers{}\_else \_def\_usemodifiers{#1}\_fi
\_ea \_dosamplesB \_printvars \_relax
\_ea \_dosamplesA \_fi
@@ -58,8 +58,8 @@
\_def\_dosamplesB#1{%
\_ifx\_relax#1 \_else
{\_ttfixed \_detokenize\_ea{\_usemodifiers}\_detokenize{#1}\_unskip:}
- {\_usemodifiers #1\_ea\_ifx\_the\_font \_nullfont
- \_ttfixed ... This font isn't available in your system.%
+ {\_usemodifiers #1\_ea\_ifx\_the\_font \_nullfont
+ \_ttfixed ... This font isn't available in your system.%
\_else \_the\_catalogsample \_fi }\_par
\_ea \_dosamplesB \_fi
}
@@ -87,7 +87,7 @@
\parindent=0pt
-\nonum\sec Customization of the catalogue
+\nonum\sec Customization of the catalog
You can redeclare the printed sample of each font by:
@@ -110,7 +110,7 @@ The \code{\\catalogmathsample} is empty by default, so math fonts are not loaded
only the family of default math font is listed.
\bigskip
-You can restrict the families to be printed in catalogue by:
+You can restrict the families to be printed in the catalog by:
\begtt
\catalogonly={Termes, Latin Modern, Heros}
@@ -128,10 +128,9 @@ The \code{\\cataogexclude} is empty by default.
\bigskip The font families printed in the catalogue must be declared by the
\code{\\_faminfo} command in the file \code{fams-ini.opm} (declarations used
as default for \OpTeX/) or in the file \code{fams-local.opm}. The second file
-does not exist by default but user can create it. The syntax rules are
+does not exist by default but users can create it. The syntax rules are
described in the \code{fams-ini.opm} file.
\_endcode % -------------------------------------
- \ No newline at end of file
diff --git a/macros/luatex/optex/base/fonts-opmac.opm b/macros/luatex/optex/base/fonts-opmac.opm
index 7145d00b2a..a5dda559f1 100644
--- a/macros/luatex/optex/base/fonts-opmac.opm
+++ b/macros/luatex/optex/base/fonts-opmac.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \typosize {Font managing macros from OPmac <2020-12-12>} % loaded in format
@@ -9,7 +9,7 @@
\^`\_sizemsscript`. It uses common concept font thes sizes: 100\,\%,
70\,\% and 50\,\%.
The \^`\_setmainvalues` sets the parameters as main values when
- the `\_typosize` is called first.
+ the `\_typosize` is called first.
\_cod -----------------------------
\_protected\_def \_typosize [#1/#2]{%
@@ -30,7 +30,7 @@
\_public \typosize ;
\_doc -----------------------------
- \`\typoscale` `[<font-factor>/<baseline-factor>]` scales
+ \`\typoscale` `[<font-factor>/<baseline-factor>]` scales
font size and baselineskip by given factors in respect to current values.
It calculates the \^`\typosize` parameters and runs the \^`\typosize`.
\_cod -----------------------------
@@ -42,7 +42,7 @@
\_ifx$#2$\_edef\_tmp{\_tmp]}\_else
\_settmpdim{#2}\_baselineskip
\_edef\_tmp{\_tmp \_ea\_ignorept\_the\_tmpdim]}\_fi
- \_ea\_typosize\_tmp
+ \_ea\_typosize\_tmp
}
\_def\_settmpdim#1#2{%
\_tmpdim=#1pt \_divide\_tmpdim by1000
@@ -51,14 +51,14 @@
\_public \typoscale ;
\_doc -----------------------------
- \`\_setbaselineskip` `{<baselineskip>}` sets new `\baselineskip` and
+ \`\_setbaselineskip` `{<baselineskip>}` sets new `\baselineskip` and
more values of registers which are dependent on the `<baselineskip>`
including the \^`\strutbox`.
\_cod -----------------------------
\_def \_setbaselineskip #1{\_if$#1$\_else
\_tmpdim=#1\_ptunit
- \_baselineskip=\_tmpdim \_relax
+ \_baselineskip=\_tmpdim \_relax
\_bigskipamount=\_tmpdim plus.33333\_tmpdim minus.33333\_tmpdim
\_medskipamount=.5\_tmpdim plus.16666\_tmpdim minus.16666\_tmpdim
\_smallskipamount=.25\_tmpdim plus.08333\_tmpdim minus.08333\_tmpdim
@@ -70,12 +70,12 @@
}
\_doc -----------------------------
- \`\_setmainvalues` sets the current font size and `\baselineskip`
+ \`\_setmainvalues` sets the current font size and `\baselineskip`
values to the \`\mainfosize` and \hbox{\`\mainbaselineskip`} registers.
- It redefines itself in order to set the main values only first.
+ It redefines itself to set the main values only first.
\nl
\`\scalemain` returns to these values if they were set. Else they are set
- to 10/12\,pt.
+ to 10/12\,pt.
\_cod -----------------------------
\_newskip \_mainbaselineskip \_mainbaselineskip=0pt \_relax
@@ -94,19 +94,19 @@
\_def\_scalemain {%
\_ifdim \_mainfosize=\_zo
\_mainfosize=10pt \_mainbaselineskip=12pt
- \_let \_setmainvalues=\_setmainvaluesL
+ \_let \_setmainvalues=\_setmainvaluesL
\_fi
\_optsize=\_mainfosize \_baselineskip=\_mainbaselineskip
}
\_public \scalemain \mainfosize \mainbaselineskip ;
\_doc -----------------------------
- \`\thefontsize` `[<size>]` and \`\thefontscale` `[<factor>]`
+ \`\thefontsize` `[<size>]` and \`\thefontscale` `[<factor>]`
do modification of the size of the current font. They are implemented by the
\^`\newcurrfontsize` macro.
\_cod -----------------------------
-\_protected\_def\_thefontsize[#1]{\_if$#1$\_else
+\_protected\_def\_thefontsize[#1]{\_if$#1$\_else
\_tmpdim=#1\_ptunit
\_newcurrfontsize{at\_tmpdim}%
\_fi
@@ -122,10 +122,10 @@
\_public \thefontsize \thefontscale ;
\_doc -----------------------------
- \`\em` keeps the weight of the current vaiant and switches
+ \`\em` keeps the weight of the current variant and switches
roman $\leftrightarrow$ italic. It adds the italic correction by
the \`\_additcorr` and \`\_afteritcorr` macros. The second does not
- add italic correction if the next character is dot or comma.
+ add italic correction if the next character is dot or comma.
\_cod -----------------------------
\_protected\_def\_em {%
@@ -145,7 +145,7 @@
\_cod -----------------------------
\_protected\_def \_boldify {%
- \_let \_setmainvalues=\_setmainvaluesL
+ \_let \_setmainvalues=\_setmainvaluesL
\_let\it =\_bi \_let\rm =\_bf \_let\_normalmath=\_boldmath \_bf
}
\_public \em \boldify ;
@@ -153,16 +153,16 @@
\_doc -----------------------------
We need to use a font selector for default pagination. Because we don't
know what default font size will be selected by the user, we use this
- \`\_rmfixed` macro. It sets the `\rm` font from default font size
+ \`\_rmfixed` macro. It sets the `\rm` font from the default font size
(declared by first \^`\typosize` command and redefines itself be only
- the font switch for next pages.
+ the font switch for the next pages.
\_cod -----------------------------
\_def \_rmfixed {% used in default \footline
{\_ifdim\_mainfosize=0pt \_mainfosize=10pt \_fi
\_fontdef\_tenrm{\_setfontsize{at\mainfosize}\_resetmod\_rm}%
\_global\_let\_rmfixed=\_tenrm}% next use will be font switch only
- \_rmfixed
+ \_rmfixed
}
\_let \rmfixed = \_tenrm % user can redefine it
diff --git a/macros/luatex/optex/base/fonts-preload.opm b/macros/luatex/optex/base/fonts-preload.opm
index 2ab3790f8f..712730436c 100644
--- a/macros/luatex/optex/base/fonts-preload.opm
+++ b/macros/luatex/optex/base/fonts-preload.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \tenrm {Latin Modern fonts (EC) preloaded <2020-01-23>} % loaded in format
@@ -11,22 +11,23 @@
\_font\_tentt=ec-lmtt10 % typewriter
\_tenrm
-\_public \tenrm \tenbf \tenit \tenbi \tentt ;
+\_public \tenrm \tenbf \tenit \tenbi \tentt ;
\_endcode %---------------------------------------------------
-Format in lua\TeX/ can download only non-Unicode fonts. Latin Modern EC is
+The format in lua\TeX/ can download only non-Unicode fonts. Latin Modern EC is
loaded here. These fonts are totally unusable in LuaTeX when languages with out
of ASCII or ISO-8859-1 alphabets are used (for example Czech). We load only
-few 8bit fonts here especially for simple testing the format.
-But, if the user needs to do a more serious work, he/she can
-use `\fontfam` macro in order to load a selected font family of Unicode fonts.
+a few 8bit fonts here especially for simple testing the format.
+But, if the user needs to do more serious work, he/she can
+use `\fontfam` macro to load a selected font family of Unicode fonts.
-We have a dilemma: when the Unicode fonts cannot be preloaded in format then basic
-font set can be loaded by `\everyjob`. But why to load a set of fonts ta the
-beginning of every job when there is highly likely that the user will
+We have a dilemma: when the Unicode fonts cannot be preloaded in the format then the basic
+font set can be loaded by `\everyjob`. But why to load a set of fonts at the
+beginning of every job when it is highly likely that the user will
load something completely different. Our decision is: there is a basic 8bit
-font set and user will load the font at beginning of the document.
+font set in the format (for testing purposes only) and the user should load
+a Unicode font family at beginning of the document.
The fonts selectors \`\tenrm`, \`\tenbf`, \`\tenit`, \`\tenbi`, \`\tentt`
are declared as `\public` here but only for backward compatibility. We don't
diff --git a/macros/luatex/optex/base/fonts-resize.opm b/macros/luatex/optex/base/fonts-resize.opm
index 9dcd6a03e8..ac0064df10 100644
--- a/macros/luatex/optex/base/fonts-resize.opm
+++ b/macros/luatex/optex/base/fonts-resize.opm
@@ -1,13 +1,13 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \setfontsize {Font resizing macros <2020-04-17>} % preloaded in format
+\_codedecl \setfontsize {Font resizing macros <2020-04-17>} % preloaded in format
\_doc -----------------------------
The \`\setfontsize` `{<sizespec>}` saves the `<sizespec>` to the \`\_sizespec` macro.
- The \`\_optsize` value is calculated from the `<sizespec>`.
+ The \`\_optsize` value is calculated from the `<sizespec>`.
If the `<sizepec>` is in the `mag<number>` format then the contents of
- the `\_sizespec` macro is re-calculated to the `at<dimen>` format using
- previous `\_optsize` value.
+ the `\_sizespec` macro is re-calculated to the `at<dimen>` format using
+ previous `\_optsize` value.
\par \goodbreak
\_cod -----------------------------
@@ -26,17 +26,17 @@
\_def\_setoptsizeB scaled#1\_relax{\_optsize=\_defaultoptsize\_relax} % scaled<scalenum>
\_def\_setoptsizeC mag#1\_relax{%
\_ifdim\_lastmagsize>\_zo \_optsize=\_lastmagsize \_else \_optsize=\_pdffontsize\_font \_fi
- \_optsize=#1\_optsize
+ \_optsize=#1\_optsize
\_lastmagsize=\_optsize
\_edef\_sizespec{at\_the\_optsize}%
}
\_public \setfontsize \defaultoptsize ;
\_doc -----------------------------
- \`\_resizefont` `{<variant-name>}\<font switch>`,
+ \`\_resizefont` `{<variant-name>}\<font switch>`,
for example `\resizefont{bf}\_tenbf` resizes the font given by the
variant. The variant `XX` have its font switch `\_tenXX`.
- The \`\_doresizefont``\fontswitch` is used. It works in
+ The \`\_doresizefont``\fontswitch` is used. It works in
TFM mode (\`\_doresizetfmfont`) or OTF mode (\^`\_doresizeunifont`).
In both modes, it does
\begtt \catcode`\<=13
@@ -44,9 +44,9 @@
\endtt
The `<fontname>` is generated by the `\fontname` \TeX/ primitive where
\`\_rfontskipat` removes the `at<dimen>` part of the `\_fontname` output.
- The `<fontname>` is generated differently in OTF mode, see
+ The `<fontname>` is generated differently in OTF mode, see
\^`\_doresizeunifont` macro.\nl
- The \`\_whatresize` is defined as `<variant-name>`.
+ The \`\_whatresize` is defined as `<variant-name>`.
\_cod -----------------------------
\_def\_resizefont#1#2{%
@@ -57,14 +57,14 @@
\_slet{_tryload#1}{_relax}%
}
\_def\_doresizetfmfont#1{\_logfont{#1}%
- \_ea\_font\_ea#1\_ea\_rfontskipat
+ \_ea\_font\_ea#1\_ea\_rfontskipat
\_fontname \_cs{_ten\_whatresize} \_relax\_space \_sizespec \_relax
}
\_let\_doresizefont=\_doresizetfmfont
-\_def\_logfont#1{} % default is no logging of used fonts
+\_def\_logfont#1{} % default is no logging of used fonts
\_def\_rfontskipat#1{\_ifx#1"\_ea\_rfskipatX \_else\_ea\_rfskipatN\_ea#1\_fi}
-\_def\_rfskipatX #1" #2\_relax{"\_whichtfm{#1}"}
+\_def\_rfskipatX #1" #2\_relax{"\_whichtfm{#1}"}
\_def\_rfskipatN #1 #2\_relax{\_whichtfm{#1}}
\_doc -----------------------------
@@ -73,13 +73,13 @@
The font switch `#1` saved in the \`\_fontselector` macro is re-declared
because the variant selector runs the \^`\_resizefont`. Now, we need to
keep the current meaning of the font switch `#1` but we must leave the
- opened group. This is done by the \`\_keepmeaning` macro.
+ opened group. This is done by the \`\_keepmeaning` macro.
\nl
\`\fontlet` `<font switch A> <font switch B> <size spec>` does
\begtt \catcode`\<=13
- \font <font switch A> = <fontname> <sizespec>
+ \font <font switch A> = <fontname> <sizespec>
\endtt
- The `<fontname>` is extracted using the primitive command `\_fontname <font switch B>`.
+ The `<fontname>` is extracted using the primitive command `\_fontname <font switch B>`.
\_cod -----------------------------
\_def \_fontdef #1#2{\_begingroup
@@ -114,7 +114,7 @@
}
\_protected\_def \_resizethefont{\_newcurrfontsize\_sizespec}
- \_public \newcurrfontsize \resizethefont ;
+ \_public \newcurrfontsize \resizethefont ;
\_doc -----------------------------
The variant selector is defined by `\protected\def\XX{\_tryloadXX \_tenXX}`
@@ -138,8 +138,8 @@
The font selection system allows to use \`\currvar`
instead explicitly specified variant selector. The current variant
is extracted from `\the\font` output which could be `\_tenXX` control
- sequence. Then `\currvar` expands to `\_rm` or `\_it` etc.
- \_cod ----------------------------
+ sequence. Then `\currvar` expands to `\_rm` or `\_it` etc.
+ \_cod ----------------------------
\_protected \_def \_currvar{\_cs{_currvar:\_ea \_csstring \_the\_font}}
\_sdef{_currvar:_tenrm}{\_rm}
@@ -150,32 +150,32 @@
\_public \currvar ;
\_doc -----------------------------
- The \`\_regtfm` `<font id> <optical size data>`
+ The \`\_regtfm` `<font id> <optical size data>`
saves the <optical size data> concerned to `<font id>`.
The `<optical size data>` is in the form as shown below in the code where
`\_regtfm` is used.
\nl
The \`\_wichtfm` `<fontname>` expands to the `<fontname>` or to the corrected
`<fontname>` read from the `<optical size data>`. It is used in the
- \^`\_rfontskipat` macro and it is used in \^`\fontlet` macro.
- It means that each `<fontname>` generated by the `\fontname` primitive in the
+ \^`\_rfontskipat` macro and it is used in \^`\fontlet` macro.
+ It means that each `<fontname>` generated by the `\fontname` primitive in the
`\fontlet` macro is processed by the `\_whichtfm`. The real `<fontname>` or
- corrected `<fontname>` (depending on the optical data does not exist or exist)
+ corrected `<fontname>` (depending on the optical data does not exist or exist)
is the output of the expansion before `\font` primitive takes this output
as its parameter.
The implementation detail: The `\_<font id>:reg` is defined as the
`<optical size data>` and all control sequences `\_<fontname>:reg`
- from this data line has the same meaning because of the
+ from this data line have the same meaning because of the
\`\_reversetfm` macro. The `\_whichtfm` expands this data line and apply
- \`\_dowhichtfm`. This macro select the right result from the data line
+ \`\_dowhichtfm`. This macro selects the right result from the data line
by testing with the current `\_optsize` value.
\_cod -----------------------------
\_def\_regtfm #1 0 #2 *{\_ea\_def \_csname _#1:reg\_endcsname{#2 16380 \_relax}%
\_def\_tmpa{#1}\_reversetfm #2 * %
}
-\_def\_reversetfm #1 #2 {% we need this data for \_setmathfamily
+\_def\_reversetfm #1 #2 {% we need this data for \_setmathfamily
\_ea\_let\_csname _#1:reg\_ea\_endcsname
\_csname _\_tmpa:reg\_endcsname
\_if*#2\_else \_ea\_reversetfm \_fi
@@ -200,7 +200,7 @@
\_regtfm lmr 0 ec-lmr5 5.5 ec-lmr6 6.5 ec-lmr7 7.5 ec-lmr8 8.5 ec-lmr9 9.5
ec-lmr10 11.1 ec-lmr12 15 ec-lmr17 *
-\_regtfm lmbx 0 ec-lmbx5 5.5 ec-lmbx6 6.5 ec-lmbx7 7.5 ec-lmbx8 8.5 ec-lmbx9 9.5
+\_regtfm lmbx 0 ec-lmbx5 5.5 ec-lmbx6 6.5 ec-lmbx7 7.5 ec-lmbx8 8.5 ec-lmbx9 9.5
ec-lmbx10 11.1 ec-lmbx12 *
\_regtfm lmri 0 ec-lmri7 7.5 ec-lmri8 8.5 ec-lmri9 9.5 ec-lmri10 11.1 ec-lmri12 *
\_regtfm lmtt 0 ec-lmtt8 8.5 ec-lmtt9 9.5 ec-lmtt10 11.1 ec-lmtt12 *
@@ -215,7 +215,7 @@
\secc The `\setfontsize` macro
-The \^`\setfontsize` `{<size spec>}`
+The \^`\setfontsize` `{<size spec>}`
saves the information about `<size spec>`. This information is taken into
account when a variant selector (for example `\rm`, `\bf`, `\it`, `\bi`)
or `\resizethefont` is used. The `<size spec>` can be:
@@ -226,7 +226,7 @@ or `\resizethefont` is used. The `<size spec>` can be:
behaves like `\font\... scaled<number>`.
* `mag<decimal number>`, for example `\setfontsize{mag1.2}`. The font is
scaled in respect to the current size of the fonts given by the previous
- \^`\setfontsize` command.
+ \^`\setfontsize` command.
\enditems
The initialization value in \OpTeX/ is given by `\setfontsize{at10pt}`.
@@ -234,9 +234,9 @@ The \^`\resizethefont` resizes the currently selected font to the size given by
\^`\setfontsize`. For example
\begtt
- Here is 10 pt text,
-\setfontsize{at12pt} 10 pt text here unchanged...
-\resizethefont and 12 pt text is here.
+ The 10 pt text is here,
+\setfontsize{at12pt} the 10 pt text is here unchanged...
+\resizethefont and the 12 pt text is here.
\endtt
%
The \^`\setfontsize` command acts like {\em font modifier}. It means that it
@@ -262,15 +262,15 @@ create a size-dependent selector for such font then you can use
\font\tencomfortaa=Comfortaa-Regular-T1 at10pt
\def\comfortaa{\tencomfortaa\resizethefont}
-\comfortaa Here is 10 pt text
+\comfortaa The 10 pt text is here
\setfontsize{at12pt}
-\comfortaa Here is 12 pt text
+\comfortaa The 12 pt text is here
\endtt
%
The example above uses the 8\,bit `tfm` font. You can use Unicode font too, of
course. The \^`\fontfam` macro initializes the extended `\font` primitive
features for \LuaTeX/ (see section \ref[exfont]).
-If you didn't use this command, you must to initialize
+If you didn't use this command, you must initialize
these features by the \^`\initunifonts` command explicitly, for example:
\begtt
@@ -278,9 +278,9 @@ these features by the \^`\initunifonts` command explicitly, for example:
\font\tencyklop=[cyklop-regular] at10pt % the font cyklop-regular.otf is loaded
\def\cyklop{\tencyklop\resizethefont}
-\cyklop Here is 10 pt text
+\cyklop The 10 pt text is here
\setfontsize{at12pt}
-\cyklop Here is 12 pt text
+\cyklop The 12 pt text is here
\endtt
\secc[fontdef] The \code{\\fontdef} declarator
@@ -297,8 +297,8 @@ This command runs `<font modifiers> \<variant-selector>` in an internal group an
resulting selected font as `\<newfont>`.
The resulting `\<newfont>` declared by \~`\fontdef` is \"fixed font switch"
-independent of \^`\setfontsize` and other font modifiers. More exactly, it is
-fixed font switch when it is used but it can depend on the current font
+independent of \^`\setfontsize` and other font modifiers. More exactly, it is
+a fixed font switch when it is used but it can depend on the current font
modifiers and font family and given font modifiers when it is declared.
The parameter of the \~`\fontdef` macro must be exactly finished by the
@@ -307,9 +307,9 @@ and variant selectors are in the section~\ref[fontsystem].
\secc[fontlet] The \code{\\fontlet} declarator
-We have another command for scaling: \^`\fontlet` which is able to resize
+We have another command for scaling: \^`\fontlet` which can resize
arbitrary font given by its font switch.
-This font switch was declared it by the
+This font switch was declared by the
`\font` primitive or the \~`\fontdef` macro.
\begtt \catcode`\<=13
@@ -318,7 +318,7 @@ This font switch was declared it by the
\fontlet \bigfont = \_tenbf at15pt
\endtt
-The resulted `\bigfont` is the same as in previous example where \~`\fontdef`
+The resulted `\bigfont` is the same as in the previous example where \~`\fontdef`
was used. The advantage of \~`\fontdef` macro will be more clear when you load
font families by `\fontfam` and you are using more font modifiers declared
in such families.
@@ -343,7 +343,7 @@ of the `\defaultoptsize` register and such font is scaled by the specified
Font collections with optical sizes must be registered by the
\^`\_regtfm` for `tfm` files or \^`\_regoptsizes` for Unicode fonts.
-\OpTeX/ registers 8bit Latin Moder fonts in the format (`fonts-resize.opm` file)
+\OpTeX/ registers 8bit Latin Moder fonts in the format (`fonts-resize.opm` file)
and OTF Latin Modern fonts in the `f-lmfonts.opm` file.
\secc Implementation notes
diff --git a/macros/luatex/optex/base/fonts-select.opm b/macros/luatex/optex/base/fonts-select.opm
index 20a8ead2b5..69cf8909bc 100644
--- a/macros/luatex/optex/base/fonts-select.opm
+++ b/macros/luatex/optex/base/fonts-select.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \fontfam {Fonts selection system <2020-12-12>} % preloaded in format
@@ -24,9 +24,9 @@
luaotfload.main()
print = print_bak % "print hack" until luaotfload will be corrected
}%
- \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}%
+ \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}%
\_global\_let \_doresizefont=\_doresizeunifont
- \_gdef\_tryloadtt {\_fontdef\_tentt{\_def\_fontnamegen{[lmmono10-regular]}\_rm}}%
+ \_gdef\_tryloadtt {\_fontdef\_tentt{\_def\_fontnamegen{[lmmono10-regular]}\_rm}}%
\_global\_let \_initunifonts=\_relax % we need not to do this work twice
\_global\_let \initunifonts=\_relax
}
@@ -35,12 +35,12 @@
\_font#1={\_fontnamegen} \_sizespec \_relax \_setwsp#1\_relax
\_fi
}
-\_public \initunifonts ;
+\_public \initunifonts ;
\_doc -----------------------------
The \`\_famdecl` `[<Family Name>] \<Famselector> {<comment>} {<modifiers>} {<variants>} {<math>}`\nl
`{<font for testing>} {\def`\^`\_fontnamegen``{<data>}}` runs \^`\initunifonts`, then
- checks if `\<Famselector>` is defined. If it is true, then closes the file by
+ checks if `\<Famselector>` is defined. If it is true, then closes the file by
`\endinput`. Else it defines `\<Famselector>` and saves it to the
internal `\_f:<currfamily>:main.fam` command.
The macro \`\_initfontfamily` needs it. The \`\_currfamily` is set
@@ -49,7 +49,7 @@
`<Famselector>` by the `\<Famselector>` too, because `\<Famselector>`
must set the right font family context. The font family context is given by the current
`\_currfamily` value and by the actual meaning of the \^`\_fontnamegen` macro.
- The \`\_mathfaminfo` is saved for usage in the catalogue.
+ The \`\_mathfaminfo` is saved for usage in the catalog.
\_cod -----------------------------
\_def\_famdecl [#1]#2#3#4#5#6#7#8{%
@@ -63,7 +63,7 @@
\_opwarning{\_string#2 is redefined by \_string\_famdecl\_space[#1]}\_fi
\_protected\_edef#2{\_def\_noexpand\_currfamily{\_csstring #2}\_unexpanded{#8\_resetfam}}%
\_ea \_let \_csname _f:\_currfamily:main.fam\_endcsname =#2%
- \_fi
+ \_fi
\_else \_csname _f:\_csstring#2:main.fam\_endcsname \_reloading \_rm \_ea \_endinput \_fi
}
\_def\_initfontfamily{%
@@ -74,11 +74,11 @@
\`\_regoptsizes` `<internal-template> <left-output>?<right-output> <resizing-data>`
prepares data for using by the \`\_optname` `<internal-template>` macro.
The data are saved to the `\_oz:<internal-template>` macro.
- When the `\_optname` is expanded then the data are scanned by the macro
- \`\_optnameA` `<left-output>?<right-output> <mid-output> `\code{<}`<size>`
+ When the `\_optname` is expanded then the data are scanned by the macro
+ \`\_optnameA` `<left-output>?<right-output> <mid-output> `\code{<}`<size>`
in the loop.\nl
- \`\_optfontalias` `{<template A>}{<template B>}` is defined as
- `\let\_oz:<templateA>=\_oz:<templateB>`.
+ \`\_optfontalias` `{<template A>}{<template B>}` is defined as
+ `\let\_oz:<templateA>=\_oz:<templateB>`.
\_cod -----------------------------
\_def\_regoptsizes #1 #2?#3 #4*{\_sdef{_oz:#1}{#2?#3 #4* }}
@@ -108,7 +108,7 @@
\`\_fsetV` `<key>=<value>,...,<key>=<value>` expands to
`\def\_<key>V{<value>}` in the loop.
\nl
- \`\_onlyif` `<key>=<value-a>,<value-b>...,<value-z>: {<what>}`
+ \`\_onlyif` `<key>=<value-a>,<value-b>...,<value-z>: {<what>}`
runs <what> only if the `\_<key>V` is defined as `<value-a>` or
`<value-b>` or ... or `<value-z>`.
\nl
@@ -144,13 +144,13 @@
performed and the `\<modifier>` is defined as
\`\_famdepend``\<modifier>{_f:\_currfamily:<modifier>}`. It expands to
`\_f:\_currfamily:<modifier>` value if it is defined or it prints
- warning. When the `\_currfamily` value is
- changed then we can declare the same `\<modifier>` with different meaning.
+ the warning. When the `\_currfamily` value is
+ changed then we can declare the same `\<modifier>` with a different meaning.
- When user declare a prefixed variant of the `\<modifier>` then unprefixed
- modifier name is used in internal macros, this is reason why we are using
+ When a user declares a prefixed variant of the `\<modifier>` then unprefixed
+ modifier name is used in internal macros, this is the reason why we are using
the \`\_remifirstunderscore``\_tmp` (where `\_tmp` expands to
- `_<something>` or to `<something>`. The `\_remifirstunderscore`
+ `_<something>` or to `<something>`. The `\_remifirstunderscore`
redefines `\_tmp` in the way that it
expands only to `<something>` without the first `_`.
@@ -159,10 +159,10 @@
selector or font modifier.
\`\_addtomodlist` `<font modifier>` adds given modifier to \`\_modlist`
- macro. This list is used after `\resetmod` when new family is selected by
+ macro. This list is used after `\resetmod` when a new family is selected by
a family selector, see \`\_resetfam` macro.
- This allows to reinitialize the same current modifiers in the font context
- after family is changed.
+ This allows reinitializing the same current modifiers in the font context
+ after the family is changed.
\_cod -----------------------------
\_def \_moddef #1#2{\_edef\_tmp{\_csstring#1}%
@@ -194,9 +194,9 @@
\_public \moddef ;
\_doc -----------------------------
- The \`\famvardef` `\<XX> {<data>}`
+ The \`\famvardef` `\<XX> {<data>}`
uses analogical trick like \^`\moddef` with
- the \^`\_famdepend` macro. The auxiliary
+ the \^`\_famdepend` macro. The auxiliary
\`\_famvardefA` `\<XX> \_ten<XX> \_tryload<XX> {<data>}` is used.
It does:
\begitems
@@ -216,7 +216,7 @@
}
\_def\_famvardefA #1#2#3#4{% #1=\XX #2=\_tenXX #3=\_tryload:currfam:XX #4=data
\_isinlist{.\_rm\_bf\_it\_bi\currvar\_currvar}#1\_iftrue
- \_opwarning{\_string\famvardef:
+ \_opwarning{\_string\famvardef:
You cannot re-declare standard variant selector \_string#1}%
\_else
\_def#3{\_fontdef#2{#4}}%
@@ -239,7 +239,7 @@
* Print the list of declared families.
\enditems
The `fams-local.opm` is read by the \`\_tryloadfamslocal` macro. It sets
- itself to `\_relax` because we need not to load this file twice.
+ itself to `\_relax` because we need not load this file twice.
The \`\_listfamnames` macro prints registered font families to the
terminal and to the log file.
\_cod -----------------------------
@@ -281,8 +281,8 @@
When the `fams-ini.opm` or `fams-local.opm` files are read then we need
to save only a mapping from family names or alias names to the font family file
names. All other information is ignored in this case. But if these files
- are read by the `\_listfamnames` macro or when printing a catalog then
- more infrormation is used and printed.\nl
+ are read by the `\_listfamnames` macro or when printing a catalog then more
+ information is used and printed.\nl
\`\_famtext` does nothing or prints the text on the terminal.
\nl
\`\_faminfo` `[<Family Name>] {<comments>} {<file-name>} {<mod-plus-vars>}`
@@ -305,9 +305,9 @@
\_def\_famfile{#3}%
}
\_def\_famalias [#1]{%
- \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
- \_sdef{_famf:\_famname\_ea}\_ea{\_famfile}%
-}
+ \_lowercase{\_edef\_tmpa{\_ea\_removespaces #1 {} }}%
+ \_sdef{_famf:\_tmpa\_ea}\_ea{\_famfile}%
+}
\_newtoks\_famfrom
\_input fams-ini.opm
\_let\_famfile=\_undefined
@@ -315,27 +315,27 @@
\_doc -----------------------------
When the \^`\fontfam``[catalog]` is used then the file
- `fonts-tatalog.opm` is read. The macro \^`\_faminfo` is redefined here
+ `fonts-catalog.opm` is read. The macro \^`\_faminfo` is redefined here
in order to print catalog samples of all declared modifiers/variant
pairs. The user can declare different samples and different behavior of
the catalog, see the end of catalog listing for more information.
- The default parameters
+ The default parameters
\`\catalogsample`, \`\catalogmathsample`, \`\catalogonly` and
\`\catalogexclude` of the catalog are declared here.
\_cod -----------------------------
\_newtoks \_catalogsample
-\_newtoks \_catalogmathsample
-\_newtoks \_catalogonly
+\_newtoks \_catalogmathsample
+\_newtoks \_catalogonly
\_newtoks \_catalogexclude
\_catalogsample={ABCDabcd Qsty fi fl áéíóúüů řžč ÁÉÍÓÚ ŘŽČ 0123456789}
\_public \catalogonly \catalogexclude \catalogsample \catalogmathsample ;
\_doc -----------------------------
- The font features are managed in the \`\_fontfeatures` macro.
+ The font features are managed in the \`\_fontfeatures` macro.
They have their implicit values saved in the \`\_defaultfontfeatures`
- and the \`\setff` `{<features>}`
+ and the \`\setff` `{<features>}`
can add next font features. If there is the same font feature as the newly
added one then the old value is removed from the `\_fontfeatures` list.
\_cod -----------------------------
@@ -350,7 +350,7 @@
\_def\_removefeature #1{%
\_isinlist\_fontfeatures{#1}\_iftrue
\_def\_tmp ##1#1##2;##3\_relax{\_def\_fontfeatures{##1##3}}%
- \_ea \_tmp \_fontfeatures \_relax
+ \_ea \_tmp \_fontfeatures \_relax
\_fi
}
\_public \setff ;
@@ -362,7 +362,7 @@
of the font using the \`\setwsp` macro which is used by the
\^`\_doresizeunifont` macro. It activates a dummy font feature `+Ws` too in
order the font is reloded by the `\font` primitive (with independent
- `\fontdimen` registers).
+ `\fontdimen` registers).
\_cod -----------------------------
\_def\_savedfontcolor{}
@@ -379,7 +379,7 @@
\_reloading
}
\_def \_setwordspace #1{%
- \_if^#1^\_def\_setwsp##1{}\_removefeature{+Ws}%
+ \_if^#1^\_def\_setwsp##1{}\_removefeature{+Ws}%
\_else \_def\_setwsp{\_setwspA{#1}}\_setff{+Ws}\_fi
\_reloading
}
@@ -401,19 +401,19 @@
\sec[fontsystem] The Font Selection System
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-The basic principles of the Font Selection System used in \OpTeX/
+The basic principles of the Font Selection System used in \OpTeX/
was documented in the section~\ref[fontfam].
\secc Terminology
We distinguish between
\begitems
-* {\em font switchers}, they are declared by the `\font` primitive or by
+* {\em font switchers}, they are declared by the `\font` primitive or by
\^`\fontlet` or \~`\fontdef` macros, they select given font.
* {\em variant selectors}, there are four basic variant selectors
\^`\rm`, \^`\bf`, \^`\it`, \^`\bi`, there is a special selector \^`\currvar`.
More variant selectors can be declared by the \~`\famvardef` macro.
- They select the font depending on given variant and on the {\em font context}
+ They select the font depending on the given variant and on the {\em font context}
(i.e.\ on current family and on more features given by font modifiers).
In addition, \OpTeX/ defines \~`\tt` as variant selector
independent of chosen font family. It selects typewriter-like font.
@@ -421,20 +421,20 @@ We distinguish between
\"build in" (\^`\setfontsize``{<size spec>}`, \~`\setff{<features>}`).
They do appropriate change in the {\em font context} but do not select
the font.
-* {\em family selectors} (for example `\Termes`, `\LMfonts`),
+* {\em family selectors} (for example `\Termes`, `\LMfonts`),
they are declared typically in the {\em font family files}.
- They enable to swithch between font families, they do appropriate
+ They enable to switch between font families, they do appropriate
change in the {\em font context} but do not select
the font.
\enditems
These commands set their values locally. When the \TeX/ group is
-leaved then selected font and the {\em font context} are returned back to the values
+left then the selected font and the {\em font context} are returned back to the values
used when the group was opened. They have the following features:
-The {\em font context} is a set of macro values which will affect the
-selection of real font when variant selector is processed. It includes the
-value of {\em current family}, current font size and
+The {\em font context} is a set of macro values that will affect the
+selection of real font when the variant selector is processed. It includes the
+value of {\em current family}, current font size, and
more values stored by font modifiers.
The {\em family context} is the current family value stored in the font
@@ -442,28 +442,28 @@ context. The variant selectors declared by \~`\famvardef` and
font modifiers declared by \~`\moddef` are dependent on the {\em family context}.
They can have the same names but different behavior in different families.
-The fonts registered in \OpTeX/ have their macros in the {\em font family files},
-each family is declared in one font family file with the name `f-famname.opm`.
-All families are collected in `fams-ini.opm` and user can give more
+The fonts registered in \OpTeX/ have their macros in the {\em font family files},
+each family is declared in one font family file with the name `f-famname.opm`.
+All families are collected in `fams-ini.opm` and users can give more
declarations in the file `fams-local.opm`.
\secc Font families, selecting fonts
-The \^`\fontfam` `[<Font Family>]` opens the relevant font family file where
+The \^`\fontfam` `[<Font Family>]` opens the relevant font family file where
the `<Font Family>` is declared. The family selector is defined here by rules
described in the section~\ref[fontfamfiles]. Font modifiers and variant
selectors may be declared here.
The loaded family is set as current and `\rm` variant selector is processed.
The available declared font modifiers and declared variant selectors are
-listed in the log file when font family is load. Or you can print
+listed in the log file when the font family is load. Or you can print
`\fontfam[catalog]` to show available font modifiers and variant selectors.
The font modifiers can be independent, like `\cond` and `\light`. They can
-be arbitrary combined (in arbitrary order) and if the font family disposes
-with all such sub-variants then the desired font is selected (after variant
-selector is used). On the other hand there are font modifiers which negates
-the previous font modifier, for example `\cond`, `\extend`. You can reset
+be arbitrarily combined (in arbitrary order) and if the font family disposes
+of all such sub-variants then the desired font is selected (after variant
+selector is used). On the other hand, there are font modifiers that negates
+the previous font modifier, for example: `\cond`, `\extend`. You can reset
all modifiers to their initial value by the \^`\resetmod` command.
You can open more font families by more \^`\fontfam` commands. Then the
@@ -480,25 +480,25 @@ For example:
The Termes roman is here.
\endtt
-There is one special command \^`\currvar` which acts as variant selector.
-It keeps the current variant and the font of such variant is
-reloaded with respect to the current font context by previously given family
-selector and font modifiers.
+There is one special command \^`\currvar` which acts as a variant selector.
+It keeps the current variant and the font of such variant is
+reloaded with respect to the current font context by the previously given family
+selector and font modifiers.
You can use the \^`\setfontsize` `{<sizespec>}` command in the same sense as
other font modifiers. It saves information about font size to the font
context. See section~\ref[setfontsize]. Example:
\begtt
-\rm default size \setfontsize{at14pt}\rm here is 14pt size \it italic is
+\rm default size \setfontsize{at14pt}\rm here is 14pt size \it italic is
in 14pt size too \bf bold too.
\endtt
-Much more comfortable way to resize fonts is using OPmac-like commands
+A much more comfortable way to resize fonts is using OPmac-like commands
\~`\typosize` and \~`\typoscale`.
These commands prepare the right sizes for math
fonts too and they re-calculate many internal parameters like `\baselineskip`.
-See section~\ref[opmac-fonts] for more information.
+See section~\ref[opmac-fonts] for more information.
\secc Math Fonts
@@ -508,7 +508,7 @@ Most font families are connected with a preferred Unicode-math font. This
Unicode-math is activated when the font family is loaded. If you don't prefer
this and you are satisfied with 8bit math CM+AMS fonts preloaded in the
\OpTeX/ format then you can use command \^`\noloadmath` before you load a first
-font family.
+font family.
If you want to use your specially selected Unicode-math font then use
\^`\loadmath` `{[<font_file>]}` or \^`\loadmath` `{<font_name>}` before first
@@ -526,10 +526,10 @@ family selectors and defined font macros doing something with fonts.
section~\ref[fontprimitive]) or by \^`\fontlet` command (see
section~\ref[fontlet]) or by \~`\fontdef` command (see
sections~\ref[fontdef2] and~\ref[fontdef]).
- When the font switches are used then they select given font independently
- of current font context. They can be used
- in `\output` routine (for example) becuase we need to set fixed fonts
- in hedares and footers.
+ When the font switches are used then they select the given font independently
+ of the current font context. They can be used
+ in `\output` routine (for example) because we need to set fixed fonts
+ in headers and footers.
* Variant selectors are \^`\rm`, \^`\bf`, \^`\it`, \^`\bi`, \~`\tt` and \^`\currvar`. More
variant selectors can be declared by \~`\famvardef` command. They select a
font dependent on the current font context, see section~\ref[famvardef].
@@ -542,15 +542,15 @@ family selectors and defined font macros doing something with fonts.
\~`\setfontcolor`, \~`\setletterspace` and \~`\setwordspace`
(see section~\ref[specff]). They are independent of font family.
* Font modifiers declared by \~`\moddef` depend on the font family and they
- are typicaly declared in font family files, see
+ are typically declared in font family files, see
section~\ref[fontfamfiles].
\enditems
* Family selectors set the given
- font family as current and re-set data used by family-dependent font
+ font family as current and re-set data used by the family-dependent font
modifiers to initial values and to the currently used modifiers.
They are declared in font family files
by \~`\_famdecl` macro, see section~\ref[fontfamfiles].
-* Font macros can be defined arbitrary by `\def` primitive by user.
+* Font macros can be defined arbitrarily by `\def` primitive by users.
See an example in section~\ref[fontmacros].
\enditems
@@ -567,10 +567,10 @@ The general format for \^`\fontdef` usage is
where `\<family selector>` and `<font modifiers>` are optional and
`\<variant selector>` is mandatory.
-The \^`\fontdef` does following steps.
-It pushes current font context to a stack, it do modifications of the font
+The \^`\fontdef` does the following steps.
+It pushes the current font context to a stack, it does modifications of the font
context by given `\<family selector>` and/or `<font modifiers>` and it
-find the real font by `\<variant selector>`. This font is not selected but
+finds the real font by `\<variant selector>`. This font is not selected but
it is assigned to the declared `\<font switch>` (like `\font` primitive does
it). Finally, `\fontdef` pops the font context stack, so the current
font context is the same as it was before `\fontdef` is used.
@@ -592,8 +592,8 @@ where `\<family selector>` and `<font modifiers>` are optional and
The `\<new variant selector>` should be used in the same sense as `\rm`,
`\bf` etc. It can be used as the final command in next
\^`\fontdef` or \^`\famvardef` declarators
-too. When the `\<new variant selector>` is used in normal text then it does
-following steps: pushes current font context to a stack, modifies font
+too. When the `\<new variant selector>` is used in the normal text then it does
+the following steps: pushes current font context to a stack, modifies font
context by declared `\<family selector>` and/or `<font modifiers>`,
runs following `\<variant selector>`.
This last one selects a real font. Then pops the font context stack.
@@ -601,10 +601,10 @@ The new font is selected but the font context has its original values.
This is main difference between `\famvardef\foo{...}` and `\def\foo{...}`.
Moreover, the \^`\famvardef` creates the `\<new variant selector>` family dependent.
-When the selector is used in another family context than it is defined then warning is
-printed on the terminal \"<var selector> is undeclared in current family"
+When the selector is used in another family context than it is defined then a warning is
+printed on the terminal \"<var selector> is undeclared in the current family"
and nothing happens. But you can declare the same variant selector by
-\^`\famvardef` macro in the context of new family. Then the same command
+\^`\famvardef` macro in the context of a new family. Then the same command
may do different work depending on the current font family.
Suppose that the selected font family provides the font modifier `\medium` for
@@ -622,8 +622,8 @@ the current family but it can use fonts from another family represented by
the `\<family selector>`.
When you are mixing fonts from more families then you probably run
-into problem with incompatible ex-heights. This problem can be solved using
-\^`\setfontsize` and \^`\famvardef` macros:
+into a problem with incompatible ex-heights. This problem can be solved using
+\^`\setfontsize` and \^`\famvardef` macros:
\begtt
\fontfam[Heros] \fontfam[Termes]
@@ -638,7 +638,7 @@ The variant selectors (declared by \~`\famvardef`) or font
modifiers (declared by \~`\moddef`) are (typically) control sequences in user name
space (`\mf`, `\caps`). They are most often declared in font family files and
they are loaded by \^`\fontfam`. A conflict with such names in
-user name space can be here. For example: if `\mf` is defined by user and then
+user namespace can be here. For example: if `\mf` is defined by a user and then
`\fontfam[Roboto]` is used then `\famvardef\mf` is performed for Roboto
family and the original meaning of `\mf` is lost. But \OpTeX/ prints warning
about it. There are two cases:
@@ -654,8 +654,8 @@ about it. There are two cases:
\secc[tt] The `\tt` variant selector
-\^`\tt` is additional special variant selector which is defined as \"select typewriter
-font independently of current font family". By default, the typewriter font-face
+\^`\tt` is an additional special variant selector which is defined as \"select typewriter
+font independently of the current font family". By default, the typewriter font-face
from LatinModern font family is used.
The \^`\tt` variant selector is used in \OpTeX/ internal macros
@@ -673,10 +673,10 @@ Test in Termes: {\tt text}. {\Heros\rm Test in Heros: {\tt text}}.
Test in URL \url{http://something.org}.
\endtt
%
-You can see that `\tt` stay family independent. This is special feature only
+You can see that `\tt` stay family independent. This is a special feature only
for `\tt` selector. New definition is used in \^`\_ttfont` and \^`\_urlfont` too.
-It is recommended to use `\setff{-liga;-tlig}` in order to supress the
-liguatures in typewriter fonts.
+It is recommended to use `\setff{-liga;-tlig}` to suppress the
+ligatures in typewriter fonts.
If Unicode math font is loaded then the `\tt` macro selects typewriter
font-face in math mode too. This face
@@ -687,10 +687,10 @@ is selected from used Unicode math font and it is independent of
\secc[fontmacros] Font commands defined by `\def`
Such font commands can be used as fonts selectors for titles, footnotes,
-ctitations etc. User can define them.
+citations, etc. Users can define them.
The following example shows how to define a \"title-font selector".
-Titles are not only bigger but they are typically in bold variant. When the user puts
+Titles are not only bigger but they are typically in the bold variant. When a user puts
`{\it...}` into the title text then he/she expects bold italic here, no normal
italic. You can remember the great song by John Lennon \"Let It Be" and
define:
@@ -711,7 +711,7 @@ are defined in section~\ref[opmac-fonts].
%----------------------------
Each OTF font provides \"font features". You can list these font features
-by `otfinfo -f font.otf`. For example LinLibertine fonts provide `frac` font
+by `otfinfo -f font.otf`. For example, LinLibertine fonts provide `frac` font
feature. If it is active then fractions like 1/2 are printed in a special
form.
@@ -728,18 +728,18 @@ selector too:
Compare 1/2 or 1/10 \fraclig to 1/2 or 1/10.
\endtt
-If the used font does not supports given font feature then font is realoaded
+If the used font does not support the given font feature then the font is reloaded
without warning nor error, silently. The font feature is not activated.
-The `onum` font feature (old style digits) is connected to `\caps` macro for
-Caps+SmallCaps variant in \OpTeX/ font family files. So you need not to
+The `onum` font feature (old-style digits) is connected to `\caps` macro for
+Caps+SmallCaps variant in \OpTeX/ font family files. So you need not
create a new modifier, just use `{\caps`\^`\currvar`` 012345}`.
\secc[specff] Special font modifiers
%---------------------------
-Despite the font modifiers declared in the font family file (and dependent on
+Despite the font modifiers declared in the font family file (and dependent on
the font family), we have following font modifiers (independent of font
family):
@@ -755,26 +755,26 @@ The \^`\setfontsize` command is described in the section \ref[setfontsize].
The \^`\setff` command was described in previous subsection.
\^`\setfontcolor` `{<color>}` specifies the color and the opacity of the text.
-The <color> parameter should be in hexadecimal format of four bytes
+The <color> parameter should be in the hexadecimal format of four bytes
`<red><green><blue><opacity>`, for example `FF0080FF` means full red, zero
green, half blue and full opacity. You can use names `red`, `green`, `blue`,
-`yellow`, `cyan`, `magenta`, `white`, `grey`, `lgrey` (without backslash)
-instead of the hexadecimal specification.
+`yellow`, `cyan`, `magenta`, `white`, `grey`, `lgrey` (without the backslash)
+instead of the hexadecimal specification.
The empty parameter `<color>` means default black color.
-That colors of fonts are implemented using \LuaTeX/ internal font feature. This
+These colors of fonts are implemented using \LuaTeX/ internal font feature. This
is different approach than using colors in section \ref[colors].
-\^`\setletterspace` `{<number>}` specifies letter spacing of the font. The
-`<number>` is decimal number without unit. The unit is supposed as 1/100 of
+\^`\setletterspace` `{<number>}` specifies the letter spacing of the font. The
+`<number>` is a decimal number without unit. The unit is supposed as 1/100 of
the font size. I.e. `2.5` means 0.25 pt when the font is at 10 pt size. The
-empty parameter `<number>` means no letter spacing which is default.
+empty parameter `<number>` means no letter spacing which is the default.
-\^`\setwordspace` `{<scaling>}` scales the default inter word space (defined in the
+\^`\setwordspace` `{<scaling>}` scales the default interword space (defined in the
font) and its stretching and shrinking parameters by given `<scaling>`
-factor. For example `\setwordspace{2.5}` multiplies inter word space by 2.5.
+factor. For example `\setwordspace{2.5}` multiplies interword space by 2.5.
-If you need another font transformations, you can use `\setff`
+If you need another font transformations, you can use `\setff`
with following font features provided by Lua\TeX/:
\begtt
@@ -782,16 +782,17 @@ with following font features provided by Lua\TeX/:
\setff{slant=0.2}\rm % font is slanted by a linear transformation
\setff{extend=1.2}\rm % font is extended by a linear transformation.
\setff{colr=yes}\rm % if the font includes colored characters, use colors
+\setff{upper}\rm % to uppercase (lower=lowecase) conversion at font level
\endtt
Use font transformations mentioned above and \^`\setletterspace`,
-\^`\setwordspace` with care. The best setting of these values is default
-setting in every font, of course. If you really needs to set a different
-letter spacing then it is strongly recommended to add `\setff{-liga}` in
-order to disable ligatures. And setting a positive letter spacing probably
-needs to scale inter word spacing too.
+\^`\setwordspace` with care. The best setting of these values is the default
+setting in every font, of course. If you really need to set a different
+letter spacing then it is strongly recommended to add `\setff{-liga}`
+to disable ligatures. And setting a positive letter spacing probably
+needs to scale interword spacing too.
-All mentioned font modifiers (with the exception of `\setfontsize`) work only
+All mentioned font modifiers (except for `\setfontsize`) work only
with Unicode fonts loaded by \^`\fontfam`.
\secc[fontfamfiles] How to create the font family file
@@ -809,29 +810,29 @@ with Unicode fonts loaded by \^`\fontfam`.
\secc[exfont] Notices about extension of `\font` primitive
%---------------------------------------------------------
-Unicode fonts are dealed by extended `\font` primitive. This extension is
+Unicode fonts are loaded by extended `\font` primitive. This extension is
not activated in \OpTeX/ by default, \^`\initunifonts` macro activates it.
-You need not to use \^`\initunifonts` explicitly if \^`\fontfam` macro is
+You need not use \^`\initunifonts` explicitly if \^`\fontfam` macro is
used because \^`\fontfam` runs it internally.
-The \^`\initunifonts` loads the lua code from Luaotfload package which
-actually implements the `\font` primitive extension. See its
+The \^`\initunifonts` loads the Lua code from the Luaotfload package which
+implements the `\font` primitive extension. See its
documentation `luaotfload-latex.pdf` for information about
all possibilities of extended `\font` primitive.
The \OpTeX/ format is initialized by `luatex` engine by default but
you can initialize it by `luahbtex` engine too. Then the harfbuzz library is
-ready to use for font rendering as an alternative of build-in font renderer
+ready to use for font rendering as an alternative to build-in font renderer
from Luaotfload. The harfbuzz library gives more features for rendering
-indic and arabic scripts. But it is not used as default, you need to specify
-`mode=harf` in fontfeatures field when `\font` is used. Moreover, when
+Indic and Arabic scripts. But it is not used as default, you need to specify
+`mode=harf` in the fontfeatures field when `\font` is used. Moreover, when
`mode=harf` is used, then you must specify `script` too. For example
\begtt
\font\devafont=[NotoSansDevanagari-Regular]:mode=harf;script=dev2
\endtt
%
-If `luahbtex` engine is not used then `mode=harf` is ignored. See
+If the `luahbtex` engine is not used then `mode=harf` is ignored. See
Luaotfload documentation for more information.
\endinput
diff --git a/macros/luatex/optex/base/graphics.opm b/macros/luatex/optex/base/graphics.opm
index 901dc4d352..afff1c1284 100644
--- a/macros/luatex/optex/base/graphics.opm
+++ b/macros/luatex/optex/base/graphics.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \inspic {Graphics <2020-04-12>} % preloaded in format
@@ -27,13 +27,13 @@
\_public \inspic ;
\_doc -----------------------------
- Inkscape is able to save a picture to `*.pdf` file and labels for the picture
- to `*.pdf_tex` file. The second file is in \LaTeX/ format (unfortunately)
- and it is intended to read immediately it after `*.pdf` in included
- in order to place labels of this picture in the same font as document is printed.
- We need to read this \LaTeX/ file by plain \TeX/ macros when \`\inkinspic` is used.
+ Inkscape can save a picture to `*.pdf` file and labels for the picture
+ to `*.pdf_tex` file. The second file is in \LaTeX/ format (unfortunately)
+ and it is intended to read immediately after `*.pdf` is included
+ in order to place labels of this picture in the same font as the document is printed.
+ We need to read this \LaTeX/ file by plain \TeX/ macros when \`\inkinspic` is used.
These macros are stored in the \`\_inkdefs` tokens list and it is used
- locally in the group. The solution is borrowed from OPmac trick 0032.
+ locally in the group. The solution is borrowed from OPmac trick 0032.
\_cod -----------------------------
\_def\_inkinspic{\_hbox\_bgroup\_isnextchar\_bgroup\_inkinspicB\_inkinspicA}
@@ -44,10 +44,10 @@
\_opinput {\_the\_picdir #1_tex}% file with labels
\_egroup}
-\_newtoks\_inkdefs \_inkdefs={%
- \_def\makeatletter#1\makeatother{}%
- \_def\includegraphics[#1]#2{\_inkscanpage#1,page=,\_end \_inspic{#2}\_hss}%
- \_def\_inkscanpage#1page=#2,#3\_end{\_ifx,#2,\_else\_def\_picparams{page#2}\_fi}%
+\_newtoks\_inkdefs \_inkdefs={%
+ \_def\makeatletter#1\makeatother{}%
+ \_def\includegraphics[#1]#2{\_inkscanpage#1,page=,\_end \_inspic{#2}\_hss}%
+ \_def\_inkscanpage#1page=#2,#3\_end{\_ifx,#2,\_else\_def\_picparams{page#2}\_fi}%
\_def\put(#1,#2)#3{\_nointerlineskip\_vbox to\_zo{\_vss\_hbox to\_zo{\_kern#1\_picwidth
\_pdfsave\_hbox to\_zo{#3}\_pdfrestore\_hss}\_kern#2\_picwidth}}%
\_def\begin#1{\_csname _begin#1\_endcsname}%
@@ -55,11 +55,11 @@
\_hbox to\_picwidth{}\_kern#2\_picwidth \_def\end##1{\_egroup}}%
\_def\_begintabular[#1]#2#3\end#4{%
\_vtop{\_def\\{\_cr}\_tabiteml{}\_tabitemr{}\_table{#2}{#3}}}%
- \_def\color[#1]#2{\_scancolor #2,}%
- \_def\_scancolor#1,#2,#3,{\_pdfliteral{#1 #2 #3 rg}}%
+ \_def\color[#1]#2{\_scancolor #2,}%
+ \_def\_scancolor#1,#2,#3,{\_pdfliteral{#1 #2 #3 rg}}%
\_def\makebox(#1)[#2]#3{\_hbox to\_zo{\_csname _mbx:#2\_endcsname{#3}}}%
- \_sdef{_mbx:lb}#1{#1\_hss}\_sdef{_mbx:rb}#1{\_hss#1}\_sdef{_mbx:b}#1{\_hss#1\_hss}%
- \_sdef{_mbx:lt}#1{#1\_hss}\_sdef{_mbx:rt}#1{\_hss#1}\_sdef{_mbx:t}#1{\_hss#1\_hss}%
+ \_sdef{_mbx:lb}#1{#1\_hss}\_sdef{_mbx:rb}#1{\_hss#1}\_sdef{_mbx:b}#1{\_hss#1\_hss}%
+ \_sdef{_mbx:lt}#1{#1\_hss}\_sdef{_mbx:rt}#1{\_hss#1}\_sdef{_mbx:t}#1{\_hss#1\_hss}%
\_def\rotatebox#1#2{\_pdfrotate{#1}#2}%
\_def\lineheight#1{}%
\_def\setlength#1#2{}%
@@ -67,9 +67,9 @@
\_public \inkinspic ;
\_doc ----------------------------
- \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}`
+ \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}`
macros are implemented by `\pdfsetmatrix`
- primitive. We need to know values of sin, cos function in
+ primitive. We need to know the values of sin, cos function in
the `\pdfrotate`. We use Lua code for this.
\_cod ----------------------------
@@ -86,51 +86,51 @@
\_public \pdfscale \pdfrotate ;
\_doc -----------------------------
- The \`\transformbox``{<transformation>}{<text>}`
+ The \`\transformbox``{<transformation>}{<text>}`
is copied from OPmac trick 0046.\nl
- The \`\rotbox``{<degrees>}{<text>}` is a combination of
+ The \`\rotbox``{<degrees>}{<text>}` is a combination of
`\rotsimple` from OPmac trick 0101 and the `\transformbox`.
- Note, that `\rotbox{-90}` puts the rotated text to the height of the outer
- box (depth is zero) because code from `\rotsimple` is processed.
+ Note, that `\rotbox{-90}` puts the rotated text to the height of the outer
+ box (depth is zero) because code from `\rotsimple` is processed.
But `\rotbox{-90.0}` puts the rotated text to
the depth of the outer box (height is zero) because `\transformbox` is
- processed.
+ processed.
\_cod -----------------------------
-\_def\_multiplyMxV #1 #2 #3 #4 {% matrix * (vvalX, vvalY)
- \_tmpdim = #1\_vvalX \_advance\_tmpdim by #3\_vvalY
- \_vvalY = #4\_vvalY \_advance\_vvalY by #2\_vvalX
- \_vvalX = \_tmpdim
-}
-\_def\_multiplyMxM #1 #2 #3 #4 {% currmatrix := currmatrix * matrix
- \_vvalX=#1pt \_vvalY=#2pt \_ea\_multiplyMxV \_currmatrix
- \_edef\_tmpb{\_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY}%
- \_vvalX=#3pt \_vvalY=#4pt \_ea\_multiplyMxV \_currmatrix
- \_edef\_currmatrix{\_tmpb\_space
- \_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY\_space}%
-}
+\_def\_multiplyMxV #1 #2 #3 #4 {% matrix * (vvalX, vvalY)
+ \_tmpdim = #1\_vvalX \_advance\_tmpdim by #3\_vvalY
+ \_vvalY = #4\_vvalY \_advance\_vvalY by #2\_vvalX
+ \_vvalX = \_tmpdim
+}
+\_def\_multiplyMxM #1 #2 #3 #4 {% currmatrix := currmatrix * matrix
+ \_vvalX=#1pt \_vvalY=#2pt \_ea\_multiplyMxV \_currmatrix
+ \_edef\_tmpb{\_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY}%
+ \_vvalX=#3pt \_vvalY=#4pt \_ea\_multiplyMxV \_currmatrix
+ \_edef\_currmatrix{\_tmpb\_space
+ \_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY\_space}%
+}
\_def\_transformbox#1#2{\_hbox{\_setbox0=\_hbox{{#2}}%
\_dimendef\_vvalX 11 \_dimendef\_vvalY 12 % we use these variables
\_dimendef\_newHt 13 \_dimendef\_newDp 14 % only in this group
- \_dimendef\_newLt 15 \_dimendef\_newRt 16
- \_preptransform{#1}%
+ \_dimendef\_newLt 15 \_dimendef\_newRt 16
+ \_preptransform{#1}%
\_kern-\_newLt \_vrule height\_newHt depth\_newDp width\_zo
\_setbox0=\_hbox{\_box0}\_ht0=\_zo \_dp0=\_zo
- \_pdfsave#1\_rlap{\_box0}\_pdfrestore \_kern\_newRt}%
-}
-\_def\_preptransform #1{\_def\_currmatrix{1 0 0 1 }%
+ \_pdfsave#1\_rlap{\_box0}\_pdfrestore \_kern\_newRt}%
+}
+\_def\_preptransform #1{\_def\_currmatrix{1 0 0 1 }%
\_def\_pdfsetmatrix##1{\_edef\_tmpb{##1 }\_ea\_multiplyMxM \_tmpb\_unskip}%
- \_let\pdfsetmatrix=\_pdfsetmatrix #1%
- \_setnewHtDp 0pt \_ht0 \_setnewHtDp 0pt -\_dp0
- \_setnewHtDp \_wd0 \_ht0 \_setnewHtDp \_wd0 -\_dp0
+ \_let\pdfsetmatrix=\_pdfsetmatrix #1%
+ \_setnewHtDp 0pt \_ht0 \_setnewHtDp 0pt -\_dp0
+ \_setnewHtDp \_wd0 \_ht0 \_setnewHtDp \_wd0 -\_dp0
\_protected\_def \_pdfsetmatrix {\_pdfextension setmatrix}%
\_let\pdfsetmatrix=\_pdfsetmatrix
-}
-\_def\_setnewHtDp #1 #2 {%
- \_vvalX=#1\_relax \_vvalY=#2\_relax \_ea\_multiplyMxV \_currmatrix
- \_ifdim\_vvalX<\_newLt \_newLt=\_vvalX \_fi \_ifdim\_vvalX>\_newRt \_newRt=\_vvalX \_fi
- \_ifdim\_vvalY>\_newHt \_newHt=\_vvalY \_fi \_ifdim-\_vvalY>\_newDp \_newDp=-\_vvalY \_fi
-}
+}
+\_def\_setnewHtDp #1 #2 {%
+ \_vvalX=#1\_relax \_vvalY=#2\_relax \_ea\_multiplyMxV \_currmatrix
+ \_ifdim\_vvalX<\_newLt \_newLt=\_vvalX \_fi \_ifdim\_vvalX>\_newRt \_newRt=\_vvalX \_fi
+ \_ifdim\_vvalY>\_newHt \_newHt=\_vvalY \_fi \_ifdim-\_vvalY>\_newDp \_newDp=-\_vvalY \_fi
+}
\_def\_rotbox#1#2{%
\_isequal{90}{#1}\_iftrue \_rotboxA{#1}{\_kern\_ht0 \_tmpdim=\_dp0}{\_vfill}{#2}%
@@ -156,10 +156,10 @@
\`\putpic` `<right> <up> <width> <height> {<image-file>}`
does `\puttext` with the image scaled to desired <width> and <height>.
If <with> or <height> is zero, natural dimension is used.
- The \`\nospec` is a shortcut to such natural dimension.
+ The \`\nospec` is a shortcut to such a natural dimension.
\nl
- \`\backgroundpic``{<image-file>}` puts the image to
- the background of each page. It it used in the slides style, for example.
+ \`\backgroundpic``{<image-file>}` puts the image to
+ the background of each page. It is used in the \~`\slides` style, for example.
\_cod ---------------------------
\_def\_scantwodimens{%
@@ -172,7 +172,7 @@
\_def\_puttextB{%
\_ifvmode
\_ifdim\_prevdepth>\_zo \_vskip-\_prevdepth \_relax \_fi
- \_nointerlineskip
+ \_nointerlineskip
\_fi
\_wd0=\_zo \_ht0=\_zo \_dp0=\_zo
\_vbox to\_zo{\_kern-\_dimen2 \_hbox to\_zo{\_kern\_dimen1 \_box0\_hss}\_vss}}
@@ -190,33 +190,33 @@
\_public \puttext \putpic \backgroundpic ;
\_doc -----------------------------
- \`\_circle``{<x>}{<y>}` creates an ellipse with `<x>` axis and `<y>` axix.
+ \`\_circle``{<x>}{<y>}` creates an ellipse with `<x>` axis and `<y>` axis.
The origin is in the center.
\nl
\`\_oval``{<x>}{<y>}{<roundness>}` creates an oval with `<x>`, `<y>` size and with
- given `<roundness>`. The real size is bigger by 2`<roundness>`. The
+ the given `<roundness>`. The real size is bigger by 2`<roundness>`. The
origin is at the left bottom corner.
\nl
\`\_mv``{<x>}{<y>}{<curve>}` moves current point to `<x>`, `<y>`, creates the
- `<curve>` and returns back the current point.
+ `<curve>` and returns the current point back.
All these macros are fully expandable and they can be used in the
`\pdfliteral` argument.
\_cod -----------------------------
-\def\_circle#1#2{\_expr{.5*(#1)} 0 m
+\def\_circle#1#2{\_expr{.5*(#1)} 0 m
\_expr{.5*(#1)} \_expr{.276*(#2)} \_expr{.276*(#1)} \_expr{.5*(#2)} 0 \_expr{.5*(#2)} c
\_expr{-.276*(#1)} \_expr{.5*(#2)} \_expr{-.5*(#1)} \_expr{.276*(#2)} \_expr{-.5*(#1)} 0 c
\_expr{-.5*(#1)} \_expr{-.276*(#2)} \_expr{-.276*(#1)} \_expr{-.5*(#2)} 0 \_expr{-.5*(#2)} c
\_expr{.276*(#1)} \_expr{-.5*(#2)} \_expr{.5*(#1)} \_expr{-.276*(#2)} \_expr{.5*(#1)} 0 c h}
-\def\_oval#1#2#3{0 \_expr{-(#3)} m \_expr{#1} \_expr{-(#3)} l
- \_expr{(#1)+.552*(#3)} \_expr{-(#3)} \_expr{(#1)+(#3)} \_expr{-.552*(#3)}
- \_expr{(#1)+(#3)} 0 c
+\def\_oval#1#2#3{0 \_expr{-(#3)} m \_expr{#1} \_expr{-(#3)} l
+ \_expr{(#1)+.552*(#3)} \_expr{-(#3)} \_expr{(#1)+(#3)} \_expr{-.552*(#3)}
+ \_expr{(#1)+(#3)} 0 c
\_expr{(#1)+(#3)} \_expr{#2} l
\_expr{(#1)+(#3)} \_expr{(#2)+.552*(#3)} \_expr{(#1)+.552*(#3)} \_expr{(#2)+(#3)}
\_expr{#1} \_expr{(#2)+(#3)} c
0 \_expr{(#2)+(#3)} l
- \_expr{-.552*(#3)} \_expr{(#2)+(#3)} \_expr{-(#3)} \_expr{(#2)+.552*(#3)}
+ \_expr{-.552*(#3)} \_expr{(#2)+(#3)} \_expr{-(#3)} \_expr{(#2)+.552*(#3)}
\_expr{-(#3)} \_expr{#2} c
\_expr{-(#3)} 0 l
\_expr{-(#3)} \_expr{-.552*(#3)} \_expr{-.552*(#3)} \_expr{-(#3)} 0 \_expr{-(#3)} c h}
@@ -234,7 +234,7 @@
color and drawing color.
\_cod -----------------------------
-\_newdimen \_lwidth
+\_newdimen \_lwidth
\_def\_fcolor{\_let\_fcolorvalue}
\_def\_lcolor{\_let\_lcolorvalue}
\_def\_shadow{\_let\_shadowvalue}
@@ -251,7 +251,7 @@
\_edef#1{#1\_space\_lcolorvalue\_space}%
}
\_optdef\_inoval[]{\_vbox\_bgroup
- \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+ \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
\_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt
\_the\_ovalparams \_relax \_the\_opt \_relax
\_touppervalue\_overlapmarginsvalue \_touppervalue\_shadowvalue
@@ -266,23 +266,23 @@
\_dp0=\_dimexpr\_dp0+\_vvkern \_relax \_fi
\_ifdim\_hhkern=\_zo \_else \_wd0=\_dimexpr\_wd0+\_hhkern \_relax \_fi
\_ifx\_overlapmarginsvalue N\_dimen0=\_roundness \_dimen1=\_roundness
- \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi
+ \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi
\_setflcolors\_tmp
- \_hbox{\_kern\_dimen0
+ \_hbox{\_kern\_dimen0
\_vbox to\_zo{\_kern\_dp0
- \_ifx\_shadowvalue N\_else
+ \_ifx\_shadowvalue N\_else
\_edef\_tmpb{{\_bp{\_wd0+\_lwidth}}{\_bp{\_ht0+\_dp0+\_lwidth}}{\_bp{\_roundness}}}%
- \_doshadow\_oval
+ \_doshadow\_oval
\_fi
- \_pdfliteral{q \_bp{\_lwidth} w \_tmp
+ \_pdfliteral{q \_bp{\_lwidth} w \_tmp
\_oval{\_bp{\_wd0}}{\_bp{\_ht0+\_dp0}}{\_bp{\_roundness}} B Q}\_vss}%
\_ht0=\_dimexpr\_ht0+\_dimen1 \_relax \_dp0=\_dimexpr\_dp0+\_dimen1 \_relax
- \_box0
+ \_box0
\_kern\_dimen0}%
\_egroup % of \vbox\bgroup
}
\_optdef\_incircle[]{\_vbox\_bgroup
- \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+ \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
\_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt
\_ea\_the \_ea\_circleparams \_space \_relax
\_ea\_the \_ea\_opt \_space \_relax
@@ -300,11 +300,11 @@
\_setflcolors\_tmp
\_ifx\_overlapmarginsvalue N\_dimen0=\_zo \_dimen1=\_zo
\_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi
- \_hbox{\_kern\_dimen0
- \_ifx\_shadowvalue N\_else
+ \_hbox{\_kern\_dimen0
+ \_ifx\_shadowvalue N\_else
\_edef\_tmpb{{\_bp{\_dimen2+\_lwidth}}{\_bp{\_dimen3+\_lwidth}}{}}%
\_doshadow\_circlet
- \_fi
+ \_fi
\_pdfliteral{q \_bp{\_lwidth} w \_tmp \_mv{\_bp{.5\_wd0}}{\_bp{(\_ht0-\_dp0)/2}}
{\_circle{\_bp{\_dimen2}}{\_bp{\_dimen3}} B} Q}%
\_ifdim\_dimen1=\_zo \_else
@@ -319,7 +319,7 @@
\_doc -----------------------------
A shadow effect is implemented here. The shadow is equal to the
- silhouette of the given path in gray-transparent color shifted by
+ silhouette of the given path in a gray-transparent color shifted by
\`\_shadowmoveto` vector and with blurred boundary.
A waistline with the width 2*\`\_shadowb` around the boundary is blurred.
The \`\shadowlevels` levels of transparent shapes is used for creating
@@ -334,15 +334,15 @@
\_doc -----------------------------
The `\_pdfpageresources` primitive is used to define transparency.
- It does not work when used in a box. So, we use it at the begining of
- the output routine. The modification of the output routine is done
+ It does not work when used in a box. So, we use it at the beginning of
+ the output routine. The modification of the output routine is done
using \`\_insertshadowresources` only once when the shadow effect is used first.
\_cod -----------------------------
\_def\_insertshadowresources{%
\_global\_addto\_begoutput{\_setshadowresources}%
\_xdef\_setshadowresources{%
- \_pdfpageresources{/ExtGState
+ \_pdfpageresources{/ExtGState
<<
/op1 <</Type /ExtGState /ca \_shadowdarknessA>>
/op2 <</Type /ExtGState /ca \_shadowdarknessB>>
@@ -371,12 +371,12 @@
\_ifnum\_tmpnum=0 /op2 gs \_fi
\_tmpb\_space f
\_immediateassignment\_advance\_tmpnum by-1
- \_ifnum-\_tmpfin<\_tmpnum
- \_ifx#1\_oval 1 0 0 1 \_shadowstep\_space \_shadowstep\_space cm \_fi
+ \_ifnum-\_tmpfin<\_tmpnum
+ \_ifx#1\_oval 1 0 0 1 \_shadowstep\_space \_shadowstep\_space cm \_fi
\_ea \_shadowlayer \_fi
}%
- \_pdfliteral{q /op1 gs 0 g 1 0 0 1 \_shadowmoveto\_space cm
- \_ifx#1\_circlet 1 0 0 1 \_expr{\_bp{.5\_wd0}} \_expr{\_bp{(\_ht0-\_dp0)/2}} cm
+ \_pdfliteral{q /op1 gs 0 g 1 0 0 1 \_shadowmoveto\_space cm
+ \_ifx#1\_circlet 1 0 0 1 \_expr{\_bp{.5\_wd0}} \_expr{\_bp{(\_ht0-\_dp0)/2}} cm
\_else 1 0 0 1 -\_shadowb\_space -\_shadowb\_space cm \_fi
\_shadowlayer Q}
}}
@@ -430,7 +430,7 @@ following code is recommended:
My picture: \copy\mypic, again my picture: \copy\mypic, etc.
\endtt
-This code downloads the picture data to the PFD oputput only once (when
+This code downloads the picture data to the PFD output only once (when
`\setbox` is processed). Each usage of `\copy\mypic` puts only a pointer to
the picture data in the PDF.
diff --git a/macros/luatex/optex/base/hi-syntax.opm b/macros/luatex/optex/base/hi-syntax.opm
index 540c618242..eb6d747914 100644
--- a/macros/luatex/optex/base/hi-syntax.opm
+++ b/macros/luatex/optex/base/hi-syntax.opm
@@ -1,24 +1,24 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \hisyntax {Syntax highlithing of verbatim listings <2020-04-04>} % preloaded in format
\_doc -----------------------------
- The following macros `\replfromto` and `\replthis` manipulate with the
+ The following macros `\replfromto` and `\replthis` manipulate with the
verbatim text which has been read already and stored in the `\_tmpb` macro.
-
+
The \`\replfromto` `{<from>}{<to>}{<what>}` finds first `<from>` then the
- first `<to>` following by `<from>` pattern and the
+ first `<to>` following by `<from>` pattern and the
`<text>` between them is packed to `#1`.
Then `<from><text><to>` is replaced by `<what>`. The `<what>` parameter
can use `#1` which is replaced by the `<text>`.
The `\replfromto` continues by finding next `<from>`, then, next `<to>`
- repeatedly over the whole verbatim text. If the verbatim text is ended by
- opened `<from>` but not closing by `<to>` then `<to>` is appended to the
- verbatim text automatically and the last part of verbatim text is replaced too.
+ repeatedly over the whole verbatim text. If the verbatim text is ended by
+ opened `<from>` but not closing by `<to>` then `<to>` is appended to the
+ verbatim text automatically and the last part of the verbatim text is replaced too.
First two parameters are expanded before usage of `\replfromto`. You can
- use `\csstring\%` or something else here.
+ use `\csstring\%` or something else here.
\_cod -----------------------------
\_def\_replfromto #1#2{\_edef\_tmpa{{#1}{#2}}\_ea\_replfromtoE\_tmpa}
@@ -26,10 +26,10 @@
\_def\_replfrom##1#1##2{\_addto\_tmpb{##1}%
\_ifx\_end##2\_ea\_replstop \_else \_afterfi{\_replto##2}\_fi}%
\_def\_replto##1#2##2{%
- \_ifx\_end##2\_afterfi{\_replfin##1}\_else
+ \_ifx\_end##2\_afterfi{\_replfin##1}\_else
\_addto\_tmpb{#3}%
\_afterfi{\_replfrom##2}\_fi}%
- \_def\_replfin##1#1\_end{\_addto\_tmpb{#3}\_replstop}%
+ \_def\_replfin##1#1\_end{\_addto\_tmpb{#3}\_replstop}%
\_edef\_tmpb{\_ea}\_ea\_replfrom\_tmpb#1\_end#2\_end\_end\_relax
}
\_def\_replstop#1\_end\_relax{}
@@ -55,7 +55,7 @@
The \`\_xscan` macro does replacing `\x` by `\z` in the post-processing
phase. The `\x <letter>{<text>}` expands to `\_xscan {<letter>}<text>^^J^`.
- If `#3` is `\_end` then it signals that something wrong happens, the
+ If `#3` is `\_end` then it signals that something wrong happens, the
`<from>` was not terminated by legal `<to>` when `\replfromto` did work.
We must to fix it by the \`\_xscanR` macro.
\_cod -----------------------------
@@ -67,7 +67,7 @@
\_doc -----------------------------
The \`\hicolor` `<letter> <color>` defines `\_z<letter>{<text>}`
- as `{<color><text>}`. It should be used in the context of
+ as `{<color><text>}`. It should be used in the context of
`\x <letter>{<text>}` macros.
\_cod -----------------------------
@@ -76,9 +76,9 @@
\_doc -----------------------------
The \`\hisyntax``{<name>}` re-defines default \^`\_prepareverbdata``<macro><verbtext>`
in order to it does more things:
- It saves `<verbtext>` to `\_tmpb`, appends `\n` around spaces and
- `^^J` characters in pre-processing phase, it opens `hisyntax-<name>.opm`
- file if `\_hisyntax<name>` is not defined. Then `\_the\_isyntax<name>`
+ It saves `<verbtext>` to `\_tmpb`, appends `\n` around spaces and
+ `^^J` characters in pre-processing phase, it opens `hisyntax-<name>.opm`
+ file if `\_hisyntax<name>` is not defined. Then `\_the\_isyntax<name>`
is processed. Finally, the post-processing phase is realized by setting
appropriate values to `\x` and `\y` macros and doing
`\_edef\_tmpb{\_tmpb}`.
@@ -138,12 +138,12 @@ The user can write
\endtt
and the code is colorized by C syntax.
The user can write `\everytt={\hisyntax{C}}` and all verbatim listings are
-colorized.
+colorized.
The \^`\hisyntax``{<name>}` reads the file `hisyntax-<name>.opm` where the
colorization is declared. The parameter `<name>` is case insensitive and the
-file name must include it in lowercase letters. For example the file
-`hisyntax-c.opm` looks like:
+file name must include it in lowercase letters. For example, the file
+`hisyntax-c.opm` looks like this:
\printdoc hisyntax-c.opm
@@ -153,8 +153,8 @@ You can take inspiration from these files and declare more languages.
User can re-declare colors by `\hicolors={...}` This value has precedence
before `\_hicolors<name>` values declared in the `hicolors-<name>.opm` file.
What exactly to do: copy `\_hicolors<name>={...}`
-from `hicolors-<name>.opm` to your document,
-rename it as `\hicolors={...}` and do you own colors modifications.
+from `hicolors-<name>.opm` to your document,
+rename it as `\hicolors={...}` and do you own colors modifications.
Another way to set non-default colors is to declare
`\newtoks\hicolors<name>` (without the `_` prefix) and set the colors palette here.
@@ -162,15 +162,13 @@ It has precedence before `\_hicolors<name>` (with the `_` prefix) declared in
the `hicolors-<name>.opm` file.
This is useful when there are more hi-syntax languages used in one document.
-\medskip
-\noindent{\bf Notes for hi-syntax macro writers}
-
-The file `hisyntax-<name>.opm` is read only once in the \TeX/ group.
-If there are definitions then they must be declared as global.
+\secl4 Notes for hi-syntax macro writers
+The file `hisyntax-<name>.opm` is read only once in the \TeX/ group.
+If there are definitions then they must be declared as global.
The `hisyntax-<name>.opm` file must (globally) declare `\_hisyntax<name>` tokens string
where the action over verbatim text is declared typically by `\replfromto` or
-`\replthis` macros.
+`\replthis` macros.
The verbatim text is prepared by {\em pre-processing phase}, then the
`\_hisyntax<name>` is applied and then {\em post-processing phase} does final
@@ -183,12 +181,12 @@ The pre-processing phase does:
finding whole words (no subwords). The `\n` control sequence is removed in
the post-processing phase.
* Each end of line is represented by `\n^^J\n`.
-* The `\_start` control sequence is added before the verbatim text and `\_end` control
+* The `\_start` control sequence is added before the verbatim text and the `\_end` control
sequence is appended to the end of the verbatim text. These control
- sequences are removed in post-processing phase.
-\enditems
+ sequences are removed in the post-processing phase.
+\enditems
-There are special macros working only in a group when processing the verbatim
+Special macros are working only in a group when processing the verbatim
text.
@@ -209,12 +207,12 @@ text.
by `\x C{<text>}` and they are replaced to `\z C{<text>}` without any change.
But:
\begtt \catcode`\<=13
- \x C{<text1>^^J<text3>^^J<text3>}
+ \x C{<text1>^^J<text3>^^J<text3>}
is replaced by
\z C{<text1>}^^J\z C{<text2>}^^J\z C{<text3>}
\endtt
The `\z <letter>{<text>}` is expanded to `\_z:<letter>{<text>}` and if
- `\hicolor <letter> <color>` is declared then
+ `\hicolor <letter> <color>` is declared then
`\_z:<letter>{<text>}` expands to `{<color><text>}`. So, required color is
activated at all lines (separately) where C comment spans.
* `\y {<text>}` is replaced by `\<text>` in the post processing phase. It should
diff --git a/macros/luatex/optex/base/hisyntax-c.opm b/macros/luatex/optex/base/hisyntax-c.opm
index 8e8ccf0920..3c1f228f88 100644
--- a/macros/luatex/optex/base/hisyntax-c.opm
+++ b/macros/luatex/optex/base/hisyntax-c.opm
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \_hisyntaxc {Syntax highlighting for C sources <2020-04-03>}
+\_codedecl \_hisyntaxc {Syntax highlighting for C sources <2020-04-03>}
\_newtoks \_hisyntaxc \_newtoks \_hicolorsc
\_global\_hicolorsc={% colors for C language
- \_hicolor K \Red % Keywords
+ \_hicolor K \Red % Keywords
\_hicolor S \Magenta % Strings
\_hicolor C \Green % Comments
\_hicolor N \Cyan % Numbers
@@ -25,19 +25,19 @@
\_ea \_foreach \_tmpa
\_do {\_replthis{#1}{\n\o#1\n}}
\_foreach % keywords
- {auto}{break}{case}{char}{continue}{default}{do}{double}%
- {else}{entry}{enum}{extern}{float}{for}{goto}{if}{int}{long}{register}%
- {return}{short}{sizeof}{static}{struct}{switch}{typedef}{union}%
+ {auto}{break}{case}{char}{continue}{default}{do}{double}%
+ {else}{entry}{enum}{extern}{float}{for}{goto}{if}{int}{long}{register}%
+ {return}{short}{sizeof}{static}{struct}{switch}{typedef}{union}%
{unsigned}{void}{while}
\_do {\_replthis{\n#1\n}{\z K{#1}}}
\_replthis{.}{\n.\n} % numbers
- \_foreach 0123456789
+ \_foreach 0123456789
\_do {\_replfromto{\n#1}{\n}{\c#1##1\e}}
\_replthis{\e.\c}{.}
\_replthis{\e.\n}{.\e}
\_replthis{\n.\c}{\c.}
- \_replthis{e\e\o+\c}{e+}\_replthis{e\e\o-\c}{e-}
- \_replthis{E\e\o+\c}{E+}\_replthis{E\e\o-\c}{E-}
+ \_replthis{e\e\o+\c}{e+}\_replthis{e\e\o-\c}{e-}
+ \_replthis{E\e\o+\c}{E+}\_replthis{E\e\o-\c}{E-}
\_def\o#1{\z O{#1}}
\_def\c#1\e{\z N{#1}}
}
@@ -47,20 +47,20 @@
Each `hisyntax-<name>.opm` file must declare the token list
`\_hisyntax<name>` using `\newtoks` and must declare the syntax declaration
-in it. The second cotken list `\_hicolors<name>` is optional but recommended.
+in it. The second token list `\_hicolors<name>` is optional but recommended.
User can re-declare his/her own colors by `\hicolors` which has precedence
before `\_hicolors<name>`.
The public variants can be declared if you want to give these token lists to
-the user name space. But it is not explicitly needed.
+the user namespace. But it is not explicitly needed.
-All settings must be global here, because the file is typically read inside
-a group and we need not to read it repeatedly in before each code chunk
+All settings must be global here because the file is typically read inside
+a group and we need not read it repeatedly before each code chunk
again and again.
-Note that `\foreach` is used to each non-letters (expanded via \string
-because we needn't to treate with active or special TeX characters). The
-keyword are applied in the `\foreach` loop too.
+Note that `\foreach` is used for each non-letters (expanded via \string
+because we needn't treat with active or special TeX characters). The
+keyword is applied in the `\foreach` loop too.
See `hi-sytax.opm` for more information about `\hicolor`, `\replfromto` and
`\replthis` macros.
diff --git a/macros/luatex/optex/base/hisyntax-html.opm b/macros/luatex/optex/base/hisyntax-html.opm
index f34aafe66f..3f0be6a23e 100644
--- a/macros/luatex/optex/base/hisyntax-html.opm
+++ b/macros/luatex/optex/base/hisyntax-html.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl\_hisyntaxhtml {Syntax highlighting for html or xml sources <2020-04-03>}
diff --git a/macros/luatex/optex/base/hisyntax-python.opm b/macros/luatex/optex/base/hisyntax-python.opm
index e703f96fdc..6250eed0e3 100644
--- a/macros/luatex/optex/base/hisyntax-python.opm
+++ b/macros/luatex/optex/base/hisyntax-python.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \_hisyntaxpython {Syntax highlighting for Python sources <2020-04-04>}
diff --git a/macros/luatex/optex/base/hisyntax-tex.opm b/macros/luatex/optex/base/hisyntax-tex.opm
index 2aaaa323fd..583676a2ca 100644
--- a/macros/luatex/optex/base/hisyntax-tex.opm
+++ b/macros/luatex/optex/base/hisyntax-tex.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl\_hisyntaxtex {Syntax highlighting for TeX sources <2020-04-03>}
diff --git a/macros/luatex/optex/base/hyperlinks.opm b/macros/luatex/optex/base/hyperlinks.opm
index 14b8cbc125..6e123596c2 100644
--- a/macros/luatex/optex/base/hyperlinks.opm
+++ b/macros/luatex/optex/base/hyperlinks.opm
@@ -1,6 +1,6 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \ulink {Hyperlinks <2020-04-22>} % preloaded in format
+\_codedecl \ulink {Hyperlinks <2020-04-22>} % preloaded in format
\_doc ----------------------------
\`\dest``[<type>:<spec>]` creates a destination of internal links. The
@@ -8,9 +8,9 @@
command in not used, then `\dest` does nothing else it is set to `\_destactive`.
The \`\_destactive` is implemented by `\_pdfdest` primitive. It creates a box
in which the destination is shifted by \`\_destheight`. The reason is that
- the destination is exactly at top border of the PDF viewer but we want to see
- the line where destination is. The destination box is positioned by
- different way dependent on current vertical or horizontal mode.
+ the destination is exactly at the top border of the PDF viewer but we want to see
+ the line where the destination is. The destination box is positioned by a
+ different way dependent on the current vertical or horizontal mode.
\_cod ----------------------------
\_def\_destheight{1.4em}
@@ -28,7 +28,7 @@
\`\link``[<type>:<spec>]{<color>}{<text>}` creates an internal link to \^`\dest`
with the same `<type>:<spec>`. You can have more links with the same
`<type>:<spec>` but only one `\dest` in the document. If \^`\hyperlinks`
- command is not used, then `\link` only prints `<text>` else it is set to
+ command is not used, then `\link` only prints `<text>` else it is set to
`\_linkactive`.
The \`\_linkactive` is implemented by `\_pdfstartlink...\_pdfendlink`
primitives.
@@ -48,7 +48,7 @@
\`\ulink``[<url>]{<text>}` creates external link. It prints only the `<text>` by default but
the \^`\hyperlinks` declaration defines it as \`\_urlactive``[url:<url>]{<text>}`.
The external link is created by the `\_pdfstartlink...\pdfendlink` primitives.
- The `<url>` is detokenized with `\escapechar=-1` before it is used, so
+ The `<url>` is detokenized with `\escapechar=-1` before it is used, so
`\%`, `\#` etc. can be used in the `<url>`.
\_cod ----------------------------
@@ -67,7 +67,7 @@
expands to `attr{/C[? ? ?] /Border[0 0 .6]}` if the
`\_<type>border` (i.e.\ \`\_refborder`, \`\_citeborder`, \`\_tocborder`,
\`\_pgborder`, \`\_urlborder`, \`\_fntborder` or \`\_fnfborder`)
- is defined. User can define it in
+ is defined. Users can define it in
order to create colored frames around active links. For example
`\def\_tocborder{1 0 0}` causes red frames in TOC (not printed, only visible
in PDF viewers).
@@ -96,9 +96,9 @@
\`\url``{<url>}` does approximately the same as \^`\ulink``[<url>]{<url>}`, but
more work is done before the `\ulink` is processed. The link-version of <url>
is saved to `\_tmpa` and the printed version in `\_tmpb`. The printed
- version is modified in order to set a breakpoints to special places of the
- `<url>`. For example `//` is replaced by `\_urlskip/\_urlskip/\_urlbskip`
- where `\urlskip` adds a small nobreakable glue between these two slashes and
+ version is modified in order to set breakpoints to special places of the
+ `<url>`. For example `//` is replaced by `\_urlskip/\_urlskip/\_urlbskip`
+ where `\urlskip` adds a small nonbreakable glue between these two slashes and
before them and `\_urlbskip` adds a breakable glue after them.
\nl
The text version of the `<url>` is printed in \`\_urlfont`.
@@ -127,27 +127,27 @@
\_endcode % ----------------------------------------
-There are four types of the internal links and one type of external link:
+There are four types of internal links and one type of external link:
\begitems
-* `ref:<label>` -- the destination is created when `\label[<label>]` is used,
+* `ref:<label>` -- the destination is created when `\label[<label>]` is used,
see also the section \ref[references].
-* `toc:<tocrefnum>` -- the destination is created at chap/sec/secc titles,
+* `toc:<tocrefnum>` -- the destination is created at chap/sec/secc titles,
see also the section \ref[maketoc].
* `pg:<gpageno>` -- the destination is created at beginning of each page,
see also the section \ref[output].
-* `cite:<bibnum>` -- the destination is created in bibliography reference,
+* `cite:<bibnum>` -- the destination is created in bibliography reference,
see also the section \ref[bib].
* `url:<url>` -- used by `\url` or `\ulink`,
see also the end of this section.
\enditems
-The `<tocrefnum>`, `<gpageno>` and `<bibnum>` are numbers starting from one and
-globally incremented by one in whole document. The registers \^`\tocrefnum`,
+The `<tocrefnum>`, `<gpageno>`, and `<bibnum>` are numbers starting from one and
+globally incremented by one in the whole document. The registers \^`\tocrefnum`,
\^`\gpageno` and \^`\bibnum` are used for these numbers.
When a chap/sec/secc title is prefixed by `\label[<label>]`, then both types
-of internal links are created at the same destination place:
+of internal links are created at the same destination place:
`toc:<tocrefnum>` and `ref:<label>`.
\_endinput
diff --git a/macros/luatex/optex/base/hyphen-lan.opm b/macros/luatex/optex/base/hyphen-lan.opm
index 9cbbf4cecf..dad0b26657 100644
--- a/macros/luatex/optex/base/hyphen-lan.opm
+++ b/macros/luatex/optex/base/hyphen-lan.opm
@@ -1,32 +1,32 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \langlist {Initialization of hypenation patterns <2020-03-10>} % preloaded in format
+\_codedecl \langlist {Initialization of hypenation patterns <2020-03-10>} % preloaded in format
\_doc -----------------------------
The <iso-code> means a shortcut of language name (mostly by ISO 639-1).
The following control sequences are used for language switching:
\begitems
* `\_lan:<number>` expands to `<iso-code>` of the language.
- The number is internal number of languages used as a value of
+ The <number> is an internal number of languages used as a value of
`\language` register.
* `\_ulan:<long-lang>` expands to `<iso-code>` too. This is transformation
from long name of language (lowercase letters) to <iso-code>.
* `\_<iso-code>Patt` (for example `\_csPatt`) is the language `<number>` declared by `\chardef`.
- * `\<iso-code>lang`
- (for example \`\enlang`, \`\cslang`, \`\sklang`, \`\delang`, \`\pllang`)
+ * `\<iso-code>lang`
+ (for example \`\enlang`, \`\cslang`, \`\sklang`, \`\delang`, \`\pllang`)
is language selector. It exists in two states
\begitems
* Initialization state: when `\<iso-code>lang` is used first then it
- must load the patterns into memory using Lua code. If it is done then
- the `\<iso-code>lang` re-defines itself to processing state.
+ must load the patterns into memory using Lua code. If it is done then
+ the `\<iso-code>lang` re-defines itself to the processing state.
* Processing state: it only sets `\language=\_<iso-code>Patt`, i.e it
selects the hyphenation patterns. It does a little more
language-dependent work, as mentioned below.
\enditems
* `\_langspecific:<isocode>` is processed by `\<iso-code>lang` and it
- should include language-specific macros declared by user or macro designer.
+ should include language-specific macros declared by the user or macro designer.
\enditems
- The USenglish patters are preloaded first:
+ The USenglish patters are preloaded first:
\_cod -----------------------------
\_chardef\_enPatt=0
@@ -57,7 +57,7 @@
\def\<iso-code>lang {\_<iso-code>lang} % public version \<iso-code>lang
\endtt
You can see that `\<iso-code>lang` runs \^`\_loadpattrs` and
- \^`\_uselang` first (in initialization state) and it runs
+ \^`\_uselang` first (in initialization state) and it runs
only \^`\_uselang` when it is called again (in processing state).
\_cod -----------------------------
@@ -83,7 +83,7 @@
`hyph-<hyph-file-spec>.tex`. The patterns and hyphenation exceptions
are saved here in UTF-8 encoding.
The <hyph-file-spec> should be a list of individual <hyph-file-spec>'s
- separated by comma, see the language Serbian below for example.
+ separated by commas, see the language Serbian below for an example.
\_cod -----------------------------
\_def\_loadpattrs#1 #2 #3 {%
@@ -102,7 +102,7 @@
}
\_doc -----------------------------
- \`\_uselang``{<iso-code>}\_<iso-code>Patt <pre-hyph><post-hyph>`\nl
+ \`\_uselang``{<iso-code>}\_<iso-code>Patt <pre-hyph><post-hyph>`\nl
sets `\language`, `\lefthyphenmin`, `\righthyphenmin` and runs
`\frenchspacing`. This default language-dependent settings
should be re-declared by `\_langspecific:<iso-code>` which is run
@@ -115,16 +115,16 @@
\_cs{_langspecific:#1}%
}
\_doc -----------------------------
- The \`\uselanguage` `{<long-lang>}` is defined here
+ The \`\uselanguage` `{<long-lang>}` is defined here
(for compatibility with e-plain users).
\_cod -----------------------------
\_def\_uselanguage#1{\_lowercase{\_cs{_\_cs{_ulan:#1}lang}}}
-\_public \uselanguage ;
+\_public \uselanguage ;
\_doc -----------------------------
The numbers for languages are declared as fixed constants (no
- auto-generated). This concept is inspired from CSplain.
+ auto-generated). This concept is inspired by CSplain.
There are typical numbers of languages in CSplain: 5=Czech in IL2,
15=Czech in T1 and 115=Czech in Unicode. We keep these constants
but we load only Unicode patterns (greater than 100), of course.
@@ -211,8 +211,8 @@
\_doc -----------------------------
The \`\langlist` includes names of all languages which are ready to load
- and use their hyphenation patterns. This list is printed to terminal and
- to log at ini\TeX/ state here. It can be used when processing document too.
+ and use their hyphenation patterns. This list is printed to the terminal and
+ to log at ini\TeX/ state here. It can be used when processing documents too.
\_cod -----------------------------
\_message{Language hyph.patterns ready to load: \_langlist.
@@ -224,12 +224,12 @@
\_endcode % ---------------------------------------------
-Maybe, you need to do more language specific actions than just switching
-hyphenation patterns. For example you need to load a specific font with a
-specific script used in selected language, you can define a macros for
-quotation marks depending on the language etc.
+Maybe, you need to do more language-specific actions than just switching
+hyphenation patterns. For example, you need to load a specific font with a
+specific script used in the selected language, you can define macros for
+quotation marks depending on the language, etc.
-The example shows how to declare such language specific things.
+The example shows how to declare such language-specific things.
\begtt
\def\langset #1 #2{\sdef{_langspecific:#1}{#2}}
@@ -237,9 +237,9 @@ The example shows how to declare such language specific things.
\langset fr {... declare French quotation marks}
\langset de {... declare German quotation marks}
\langset gr {... switch to Greek fonts family}
-... etc.
+... etc.
\endtt
-Note that you need not to set language specific phrases (like `\today`)
-by this code. Another concept is used for such tasks. See the
+Note that you need not set language-specific phrases (like `\today`)
+by this code. Another concept is used for such tasks. See the
section~\ref[langphrases] for more details.
diff --git a/macros/luatex/optex/base/if-macros.opm b/macros/luatex/optex/base/if-macros.opm
index 1745baa7ac..0e7e401558 100644
--- a/macros/luatex/optex/base/if-macros.opm
+++ b/macros/luatex/optex/base/if-macros.opm
@@ -1,17 +1,17 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \newif {Special if-macros, is-macros and loops <2020-05-22>} % preloaded in format
\_doc ----------------------------
\secc Classical \code{\\newif}
- The \`\newif` macro implements boolean value.
+ The \`\newif` macro implements boolean value.
It works as in plain \TeX. It means that
after `\newif\ifxxx` you can use `\xxxtrue` or
`\xxxfalse` to set the boolean value and use `\ifxxx true\else false\fi`
to test this value. The default value is false.
The macro \`\_newifi` enables to declare `\_ifxxx` and to use `\_xxxtrue` and
- `\_xxxfalse`. This means that it is usable for internal name space
+ `\_xxxfalse`. This means that it is usable for the internal namespace
(`_`prefixed macros).
\_cod ----------------------------
@@ -48,7 +48,7 @@
better (you can use `\else` clause after the `\ifsomething`).
There are public version `\loop...\repeat` and private version
- \`\_loop` ...\`\_repeat`. You cannot mix both versions in one loop.
+ \`\_loop` ...\`\_repeat`. You cannot mix both versions in one loop.
The `\loop` macro keeps its original plain TeX meaning. It is not
expandable and nested `\loop`s are possible only in a \TeX/ group.
@@ -81,7 +81,7 @@
private variants use \`\_do` separator instead `\do` separator.
\_cod -----------------------------
-\_newcount\_frnum % the numeric variable used in \fornum
+\_newcount\_frnum % the numeric variable used in \fornum
\_def\_do{\_doundefined} % we need to ask \_ifx#1\_do ...
\_long\_def\_foreach #1\_do #2#{\_isempty{#2}\_iftrue
@@ -101,26 +101,26 @@
\`\fornumstep` `<num>: <from>..<to>` \`\do` `{<what>}`
repeats `<what>` for each number from `<from>` to `<to>` (with step `<num>`
or with step one). The `<what>` can include `#1` which is substituted by
- current number. The sequence `<from>..<to>` can be decreasing too.
- The macro is expandable.
+ current number. The <from>, <to>, <step> parameters can be numeric expressions.
+ The macro is expandable.\nl
+ The test in the \`\_fornumB` says: if (<to> $\string<$ <current number>
+ AND <step> is positive) or if (<to> $>$ <current number> AND <step> is
+ negative) then close loop by `\_getforstack`. Sorry, the condition is
+ writen by somewhat cryptoid \TeX/ language.
\_cod -----------------------------
\_def\_fornum#1..#2\_do{\_fornumstep 1:#1..#2\_do}
\_long\_def\_fornumstep#1:#2..#3\_do#4{\_putforstack
\_immediateassigned{%
\_gdef\_fbody##1{#4}%
- \_gdef\_fornumsgn{}%
- \_gdef\_fornumrel{<}%
\_global\_frnum=\_numexpr#2\_relax
- \_ifnum\_numexpr#3<\_frnum \_gdef\_fornumrel{>}\_fi %decreasing sequence
- \_ifnum\_numexpr#1\_fornumrel0 \_gdef\_fornumsgn{-}\_fi % correction
}%
- \_fornumB{#3}{#1}%
+ \_ea\_fornumB\_ea{\_the\_numexpr#3\_ea}\_ea{\_the\_numexpr#1}%
}
-\_def\_fornumB #1#2{\_ifnum\_numexpr#1\_fornumrel\_frnum \_getforstack \_else
- \_ea\_fbody\_ea{\_the\_frnum}%
- \_immediateassignment\_global\_advance\_frnum by\_numexpr\_fornumsgn#2\_relax
- \_afterfi{\_fornumB{#1}{#2}}\_fi
+\_def\_fornumB #1#2{\_ifnum#1\_ifnum#2>0<\_else>\_fi \_frnum \_getforstack
+ \_else \_ea\_fbody\_ea{\_the\_frnum}%
+ \_immediateassignment\_global\_advance\_frnum by#2
+ \_afterfi{\_fornumB{#1}{#2}}\_fi
}
\_def\fornum#1..#2\do{\_fornumstep 1:#1..#2\_do}
\_def\fornumstep#1:#2..#3\do{\_fornumstep #1:#2..#3\_do}
@@ -132,11 +132,11 @@
\begtt
\foreach ABC \do {\fornum 1..5 \do {letter:#1, number: ##1. }}
\endtt
- Implementation note:
+ Implementation note:
we cannot use \TeX/-groups for nesting levels because we want to do the
macros expandable. We must implement a special for-stack which saves the
data needed by `\foreach` and `\fornum`. The \`\_putforstack` is used
- when `\for*` is initialized and \`\_getforstack` is used when the
+ when `\for*` is initialized and \`\_getforstack` is used when the
`\for*` macro ends. The \`\_forlevel` variable keeps the current nesting
level. If it is zero, then we need not save nor restore any data.
\_cod ----------------------------
@@ -146,7 +146,7 @@
\_ifnum\_forlevel>0
\_sxdef{_frnum:\_the\_forlevel\_ea}{\_the\_frnum}%
\_global\_slet{_fbody:\_the\_forlevel}{_fbody}%
- \_fi
+ \_fi
\_global\_advance\_forlevel by1
}}
\_def\_getforstack{\_immediateassigned{%
@@ -183,28 +183,28 @@
\secc Is-macros
There are a collection of macros
\^`\isempty`, \^`\istoksempty`, \^`\isequal`, \^`\ismacro`,
- \^`\isdefined`, \^`\isinlist` and \^`\isfile`
+ \^`\isdefined`, \^`\isinlist`, \^`\isfile` and \^`\isfont`
with common syntax:
\begtt \catcode`\<=13
- \issomething <params> \iftrue <codeA> \else <codeB> \fi
- or
+ \issomething <params> \iftrue <codeA> \else <codeB> \fi
+ or
\issomething <params> \iffalse <codeB> \else <codeA> \fi
\endtt
The `\else` part is optional. The `<codeA>` is processed if
`\issomething<params>` generates true condition. The `<codeB>`
is processed if `\issomething<params>` generates false condition.
- The `\iftrue` or `\iffalse` is an integral part of this syntax
+ The `\iftrue` or `\iffalse` is an integral part of this syntax
because we need to keep skippable nested `\if` conditions.
- Implementation note:
+ Implementation note:
we read this `\iftrue` or `\iffalse` into unseparated parameter and repeat
it because we need to remove an optional space before this command.
\medskip\noindent
\`\isempty` `{<text>}\iftrue`
is true if the `<text>` is empty. This macro is expandable.\nl
- \`\istoksempty` `<tokens variable>\iftrue`
+ \`\istoksempty` `<tokens variable>\iftrue`
is true if the `<tokens variable>` is empty. It is expandable.
\_cod ----------------------------
@@ -213,14 +213,14 @@
\_public \isempty \istoksempty ;
\_doc ----------------------------
- \`\isequal` `{<textA>}{<textB>}\iftrue`
+ \`\isequal` `{<textA>}{<textB>}\iftrue`
is true if the <textA> and <textB> are
equal, only from strings point of view, category codes are ignored.
The macro is expandable.
\_cod ----------------------------
\_def\_isequal#1#2#3{\_directlua{%
- if "\_luaescapestring{\_detokenize{#1}}"=="\_luaescapestring{\_detokenize{#2}}"
+ if "\_luaescapestring{\_detokenize{#1}}"=="\_luaescapestring{\_detokenize{#2}}"
then else tex.print("\_nbb unless") end}#3}
\_public \isequal ;
@@ -242,11 +242,11 @@
\_doc ----------------------------
\`\isinlist` `\list{<text>}\iftrue` is true if the
- `<text>` is included the macro body of the `\list`.
- The category code are relevant here. The macro is not expandable.
+ `<text>` is included the macro body of the `\list`.
+ The category codes are relevant here. The macro is not expandable.
\_cod ----------------------------
-\_long\_def\_isinlist#1#2{\_begingroup
+\_long\_def\_isinlist#1#2{\_begingroup
\_long\_def\_tmp##1#2##2\_end/_%
{\_endgroup\_if\_relax\_detokenize{##2}\_relax \_ea\_unless\_fi}%
\_ea\_tmp#1\_endlistsep#2\_end/_%
@@ -269,8 +269,8 @@
\_doc -----------------------------
\`\isfont` `{<fontname or [fontfile]>}\iftrue`
- is true if given font exists. The result of this testing
- is saved to the \`\_ifexistfam`.
+ is true if a given font exists. The result of this testing
+ is saved to the \`\_ifexistfam`.
\_cod -----------------------------
\_newifi \_ifexistfam
@@ -285,9 +285,9 @@
\_public \isfont ;
\_doc ----------------------------
- The last macro \`\isnextchar` `<char>{<codeA>}{<codeB>}`
- has different syntax than all others is-macros.
- It executes `<codeA>` if next character is equal to <char>.
+ The last macro \`\isnextchar` `<char>{<codeA>}{<codeB>}`
+ has a different syntax than all other is-macros.
+ It executes `<codeA>` if next character is equal to <char>.
Else the `<codeB>` is executed. The macro is not expandable.
\_cod ----------------------------
@@ -299,7 +299,7 @@
\_public \isnextchar ;
-\_endcode
+\_endcode
2020-05-22 \foreach, \fornum: all settings are global, independent on TeX group
2020-05-06 \isnextchar: \let\tmp=#1 -> \let\tmp= #1 (bug fix, #1 should be space)
diff --git a/macros/luatex/optex/base/keyval.opm b/macros/luatex/optex/base/keyval.opm
index f50cb86828..b0462296b3 100644
--- a/macros/luatex/optex/base/keyval.opm
+++ b/macros/luatex/optex/base/keyval.opm
@@ -1,14 +1,14 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \readkv {Key-value dictionaries <2020-12-21>} % preloaded in format
\_doc ----------------------------
{\bf Implementation.}
The \`\readkv` expands its parameter and does replace-strings in order to
- remove spaces around equal signs and after comma. Double comma is
- removed. Then \`\_kvscan` reads the parameters list finished by double
+ remove spaces around equal signs and after commas. Double commas are
+ removed. Then \`\_kvscan` reads the parameters list finished by the double
comma and saves values to `\_kv:<key>` macros.\nl
- The \`\kv``{<key>}` expands the `\_kv:<key>` macro. If this macro is not
+ The \`\kv``{<key>}` expands the `\_kv:<key>` macro. If this macro isn't
defined then \`\_kvunknown` is processed. You can re-define it if you want.
\_cod ----------------------------
@@ -18,15 +18,15 @@
\_ea \_kvscan \_tmpb,,=,}
\_def\_kvscan #1#2=#3,{\_ifx#1,\_else \_sdef{_kv:#1#2}{#3}\_ea\_kvscan\_fi}
\_def\_kv#1{\_trycs{_kv:#1}{\_kvunknown}}
-\_def\_kvunknown{???}
+\_def\_kvunknown{???}
\public \readkv \kv ;
-\_endcode
+\_endcode
-User or macro programmer can define macros with options in key=value format.
-It means a comma separated list of equations key=value. First, we give an
-example.
+Users or macro programmers can define macros with options in key=value format.
+It means a comma-separated list of equations key=value. First, we give an
+example.
Suppose that you want to define a macro `\myframe` with options: color of
rules, color of text inside the frame, rule-width, space between text and
@@ -42,7 +42,7 @@ You can define `\myframe` as follows:
\begtt
\def\myframedefaults{% defaults:
- frame-color=\Black, % color of frame rules
+ frame-color=\Black, % color of frame rules
text-color=\Black, % color ot text nside the frame
rule-width=0.4pt, % width of rules used in the frame
margins=2pt, % space between text inside and rules.
@@ -51,26 +51,26 @@ You can define `\myframe` as follows:
\ea\addto\ea\myframedefaults\ea{\ea,\the\opt}%
\readkv\myframedefaults
\rulewidth=\kv{rule-width}
- \hhkern=\kv{margins}\vvkern=\kv{margins}\relax
+ \hhkern=\kv{margins}\vvkern=\kv{margins}\relax
\kv{frame-color}\frame{\kv{text-color}\strut #1}%
\egroup}
\endtt
%
-We recommend to use \^`\optdef` for defining macros with optional parameters
+We recommend using \^`\optdef` for defining macros with optional parameters
written in `[]`. Then the optional parameters are saved in the \^`\opt` tokens
-register. First: we append the \^`\opt` (actual optional parameters) to
+register. First: we append the \^`\opt` (actual optional parameters) to
`\myframedefault` by \^`\addto` macro.
-Lua\TeX/ primitive. Second: we read the parameters by
+Second: we read the parameters by
\^`\readkv{<pramaters list>}` macro.
Third: the values can be used by expandable \^`\kv{<key>}` macro.
The \^`\kv{<key>}` returns `???` if such key is not declared.
You can use keys without values in the parameters list too, but with
additional care. For example, suppose `draft` option without parameter.
-If user write `\myframe [..., draft, ...]{text}` then `\myframe` should behave differently.
-We have to add `DRAFTv=0,` in `\myframedefault` macro,.
+If a user writes `\myframe [..., draft, ...]{text}` then `\myframe` should behave differently.
+We have to add `DRAFTv=0,` in `\myframedefault` macro.
Moreover, `\myframe` macro must include preprocessing of `\myframedefault` using
-\^`\replstring` which replaces the occurence of `draft` by `DRAFTv=1`.
+\^`\replstring` which replaces the occurrence of `draft` by `DRAFTv=1`.
\begtt
\optdef\myframe [] #1{...
\ea\addto\ea\myframedefaults\ea{\the\opt}%
@@ -79,4 +79,4 @@ Moreover, `\myframe` macro must include preprocessing of `\myframedefault` using
...
\ifnum\kv{DRAFTv}=1 draft mode\else normal mode\fi
...}
-\endtt
+\endtt
diff --git a/macros/luatex/optex/base/languages.opm b/macros/luatex/optex/base/languages.opm
index eea821f6a6..52b52f775e 100644
--- a/macros/luatex/optex/base/languages.opm
+++ b/macros/luatex/optex/base/languages.opm
@@ -1,16 +1,16 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \_mtext {Languages <2020-12-05>} % preloaded in format
\_doc -----------------------------
Only four words are generated by \OpTeX/ macros: \"Chapter",
- \"Table", \"Figure" and \"Subject". These phrases can be generated depending
- on the current value of `\language` register, if you use \`\_mtext``{<phrase-id>}`,
- specially `\_mtext{chap}`, `\_mtext{t}`, `\_mtext{f}` or `\_mtext{subj}`.
- If your macros generate more words then
+ \"Table", \"Figure" and \"Subject". These phrases can be generated depending
+ on the current value of `\language` register, if you use \`\_mtext``{<phrase-id>}`,
+ specially `\_mtext{chap}`, `\_mtext{t}`, `\_mtext{f}` or `\_mtext{subj}`.
+ If your macros generate more words then
you can define such words by `\sdef{_mt:<phrase-id>:<lang>}` where
- `<phrase-id>` is a label for declared word and `<lang>` is language shortcut
- (iso code).
+ `<phrase-id>` is a label for the declared word and `<lang>` is a language shortcut
+ (iso code).
\_cod -----------------------------
\_def\_mtext#1{\_trycs{_mt:#1:\_trycs{_lan:\_the\_language}{en}}
@@ -23,7 +23,7 @@
\_doc -----------------------------
Using \`\_langw` `<lang> <chapter> <table> <figure> <subject>` you can
- declare these words more effectively:
+ declare these words more effectively:
\maxlines=13
\_cod -----------------------------
@@ -66,7 +66,7 @@
júla augusta septembra októbra novembra decembra
\_monthw it gennaio febbraio marzo aprile maggio giugno
luglio agosto settembre ottobre novembre dicembre
-
+
\_sdef{_mt:today:en}{\_mtext{m\_the\_month} \_the\_day, \_the\_year}
\_sdef{_mt:today:cs}{\_the\_day.~\_mtext{m\_the\_month} \_the\_year}
@@ -76,16 +76,16 @@
\_public \today ;
\_doc -----------------------------
- Quotes should be tagged by `\"<text>"` and `\'<text>'` if `\<iso-code>quotes`
- is declared at beginning of the document (for example `\enquotes`).
+ Quotes should be tagged by `\"<text>"` and `\'<text>'` if `\<iso-code>quotes`
+ is declared at beginning of the document (for example `\enquotes`).
If not, then the control
sequences `\"` and `\'` are undefined. Remember, that they are used in
- another meaning when `\oldaccents` command is used.
+ another meaning when the `\oldaccents` command is used.
The macros `\"` and `\'` are not defined as `\protected` because we need
their expansion when `\outlines` are created.
User can declare quotes by \^`\quoteschars``<clqq><crqq><clq><crq>`, where
`<clqq>...<crqq>` are normal quotes and `<clq>...<crq>` are alternative quotes.
- or use \`\altquotes` to swap between meaning of these two types of quotes.
+ or use \`\altquotes` to swap between the meaning of these two types of quotes.
\nl
\`\enquotes`, \`\csquotes`, \`\dequotes`, \`\frquotes` etc. are defined here.
\_cod -----------------------------
@@ -105,10 +105,10 @@
The \`\quoteschars``<lqq><rqq><lq><rq>` defines `\"` and `\"` as `\_qqA`
in in normal mode and as expadable macros in outline mode.
We want to well process the common cases: \code{\\"`&`"} or \code{\\"`\{`"}.
- This is reason why the quotes parameter is read in verbatim mode and retokenized
- again by `\scantextokens`. We want to allow to quote the quoutes mark
- itself by \code{\\"{`"`}"}. This is reason why the sub-verbatim mode is
- used when first character is \code{\{} in the parameter.\nl
+ This is the reason why the quotes parameter is read in verbatim mode and retokenized
+ again by `\scantextokens`. We want to allow to quote the quotes mark
+ itself by \code{\\"{`"`}"}. This is the reason why the sub-verbatim mode is
+ used when the first character is \code{\{} in the parameter.\nl
The `\"` is defined as `\_qqA\_qqB<lqq><rqq>` and `\'` as `\_qqA\_qqC<lq><rq>`.
The \`\_qqA``\_qqB<clqq><crqq>` runs \`\_qqB``<lqq><rqq><text>"`.
\_cod -----------------------------
@@ -125,8 +125,8 @@
\_doc -----------------------------
Sometimes should be usable to leave the markup `"such"` or `'such'` i.e.~without
the first backslash. Then you can make the characters `"` and `'` active
- by the \`\activequotes` macro and leave quotes without first backslash.
- First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally
+ by the \`\activequotes` macro and leave quotes without the first backslash.
+ First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally
\^`\activequotes`.
\`\_resetaquotes` redefines expandable version of `\"<text>"` and `\'<text>'`
@@ -143,20 +143,20 @@
\_regmacro{}{}{\_edef\"##1~{\"##1"}\_edef\'##1,{\'##1'}}}
}
-\_public \quoteschars \activequotes \enquotes \csquotes \skquotes \frquotes \plquotes
+\_public \quoteschars \activequotes \enquotes \csquotes \skquotes \frquotes \plquotes
\esquotes \grquotes \ruquotes \itquotes \dequotes ;
\_doc -----------------------------
Bibliography references generated by \^`\usebib` uses more
language-dependent phrases. They are declared here. We don't want to save
- all these phrases into format, so the trick with {`\_endinput`}
- is used here. When \^`\usebib` is processed then following part of the file
+ all these phrases into the format, so the trick with {`\_endinput`}
+ is used here. When \^`\usebib` is processed then the following part of the file
`languages.opm` is read again.
Only phrases of few languages are declared here now. If you want to declare
phrases of your language, please create an \"issue" or a \"request" at
- \url{https://github.com/olsak/OpTeX} or send me email with new
- phrarses for your language (or language you know:). I am ready to put them here.
+ \url{https://github.com/olsak/OpTeX} or send me an email with new
+ phrases for your language (or language you know:). I am ready to put them here.
Temporarily, you can put your definitions into `\bibtexhook` token list.
\_cod -----------------------------
@@ -180,7 +180,7 @@
{Bakalárska práca} {Diplomová práca} {Dizertačná práca}
% \_<lang>dateformat year/month/day\relax, for example: \_csdateformat 2020/05/21\relax
-% This is used in iso690 bib style when the the field "citedate" is used.
+% This is used in iso690 bib-style when the field "citedate" is used.
\_def\_endateformat #1/#2/#3\relax{#1-#2-#3}
% \_csdateformat 2020/05/21\relax -> \hbox{21. 5. 2020}
diff --git a/macros/luatex/optex/base/lists.opm b/macros/luatex/optex/base/lists.opm
index 0b30ed43bb..a32d13319f 100644
--- a/macros/luatex/optex/base/lists.opm
+++ b/macros/luatex/optex/base/lists.opm
@@ -1,14 +1,14 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \begitems {Lists: begitems, enditems <2020-04-21>} % preloaded in format
\_doc -----------------------------
- \`\_aboveliskip` is used above the list of items,\nl
- \`\_belowliskip` is used below the list of items and\nl
+ \`\_aboveliskip` is used above the list of items,\nl
+ \`\_belowliskip` is used below the list of items and\nl
\`\_interliskip` is used between items.\nl
\`\_listskipA` is used as `\listskipamount` at level 1 of items.\nl
\`\_listskipB` is used as `\listskipamount` at other levels.\nl
- \`\_setlistskip` sets the skip dependent on the current level of items
+ \`\_setlistskip` sets the skip dependent on the current level of items
\_cod -----------------------------
\_def\_aboveliskip {\_removelastskip \_penalty-100 \_vskip\_listskipamount}
@@ -19,18 +19,18 @@
\_def\_setlistskip {%
\_ifnum \_ilevel = 1 \_listskipamount = \_listskipA \_relax
- \_else \_listskipamount = \_listskipB \_relax
+ \_else \_listskipamount = \_listskipB \_relax
\_fi}
\_doc -----------------------------
The \`\itemnum` is locally reset to zero in each group declared by
- `\begitems`. So nested lists are numbered independently. User can set
- initial value of `\itemnum` to another value after `\beitems` if he/she want.
+ `\begitems`. So nested lists are numbered independently. Users can set
+ initial value of `\itemnum` to another value after `\beitems` if they want.
\nl
- Each level of nested lists is indented by new `\iindent` from left.
- Default item mark is `\_printitem`.
+ Each level of nested lists is indented by the new `\iindent` from left.
+ The default item mark is `\_printitem`.
\nl
- The \`\begitems` runs `\_aboveliskip` only if we are not near below a title,
+ The \`\begitems` runs `\_aboveliskip` only if we are not near below a title,
where a vertical skip is placed already and where the `\penalty` 11333 is.
It activates `*` and defines it as \`\_startitem`.
\nl
@@ -42,7 +42,7 @@
\_newcount\_itemnum \_itemnum=0
\_newtoks\_printitem
-\_def\_begitems{\_par
+\_def\_begitems{\_par
\_bgroup
\_advance \_ilevel by1
\_setlistskip
@@ -93,17 +93,34 @@
\_doc -----------------------------
\`\_athe``{<num>}` returns the `<num>`s lowercase letter from the alphabet.\nl
- \`\_fullrectangle``{<dimen>}` prints full rectangle with given `<dimen>`.
- \_cod -----------------------------
+ \`\_fullrectangle``{<dimen>}` prints full rectangle with given `<dimen>`.
+ \_cod -----------------------------
\_def\_fullrectangle#1{\_hbox{\_vrule height#1 width#1}}
-\_def\_athe#1{\_ifcase#1?\_or a\_or b\_or c\_or d\_or e\_or f\_or g\_or h\_or
- i\_or j\_or k\_or l\_or m\_or n\_or o\_or p\_or q\_or r\_or s\_or t\_or
+\_def\_athe#1{\_ifcase#1?\_or a\_or b\_or c\_or d\_or e\_or f\_or g\_or h\_or
+ i\_or j\_or k\_or l\_or m\_or n\_or o\_or p\_or q\_or r\_or s\_or t\_or
u\_or v\_or w\_or x\_or y\_or z\_else ?\_fi
}
\_public \style ;
+ \_doc -----------------------------
+ The \`\begblock` macro selects fonts from footnotes \^`\_fnset`
+ and opens new indentation in a group.
+ \`\endblock` closes the group.
+ This is implemented as an counterpart
+ of Markdown's Blockquotes. Redefine these macros if you want to declare
+ different design.
+ The \ulink[http://petr.olsak.net/optex/optex-tricks.html\#greyblock]{\OpTeX/ trick 0031}
+ shows how to create blocks with grey background splittable to more pages.
+ \_cod -----------------------------
+
+\_def\_begblock{\_bgroup\_fnset \_medskip \_advance\_leftskip by\_iindent \_firstnoindent}
+\_def\_endblock{\_par\_medskip\_egroup\_isnextchar\_par{}{\_noindent}}
+
+\_public \begblock \endblock ;
+
+
\_endcode % -------------------------------------
2020-04-21 \isnextchar\par added to \enditems
diff --git a/macros/luatex/optex/base/logos.opm b/macros/luatex/optex/base/logos.opm
index f7161e8eda..a510a74a30 100644
--- a/macros/luatex/optex/base/logos.opm
+++ b/macros/luatex/optex/base/logos.opm
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \TeX {Logos TeX, LuaTeX, etc. <2020-02-28>} % preloaded in format
\_doc ----------------------------
- Despite plain \TeX/ each macro for logos ends by \`\ignoreslash`.
- This macro ignores next slash if it is present.
- You can `use \TeX/ like this` for protecting the space following the logo.
+ Despite plain \TeX/ each macro for logos ends by \`\ignoreslash`.
+ This macro ignores the next slash if it is present.
+ You can `use \TeX/ like this` for protecting the space following the logo.
This is visually more comfortable.
The macros \`\TeX`, \`\OpTeX`, \`\LuaTeX`, \`\XeTeX` are defined.
\_cod ----------------------------
@@ -16,14 +16,13 @@
\_protected\_def \_XeTeX {X\_kern-.125em\_phantom E%
\_pdfsave\_rlap{\_pdfscale{-1}{1}\_lower.5ex\_hbox{E}}\_pdfrestore \_kern-.1667em \_TeX}
-\_def\_ignoreslash {\_futurelet\_next \_ignoreslashA}
-\_def\_ignoreslashA {\_ifx\_next/\_ea\_ignoreit\_fi}
+\_def\_ignoreslash {\_isnextchar/\_ignoreit{}}
\_public \TeX \OpTeX \LuaTeX \XeTeX \ignoreslash ;
\_doc -----------------------------
- The \`\_slantcorr` macro expands to slant-correction of current font. It is
- used to shifting A if the \`\LaTeX` logo is in italic.
+ The \`\_slantcorr` macro expands to the slant-correction of the current font. It is
+ used to shifting A if the \`\LaTeX` logo is in italic.
\_cod -----------------------------
\_protected\_def \_LaTeX{\_tmpdim=.42ex L\_kern-.36em \_kern \_slantcorr % slant correction
@@ -45,7 +44,7 @@
\_public \OPmac \CS \csplain ;
\_doc ----------------------------
- The expandable versions of logos used in Outlines needs the expandable
+ The expandable versions of logos used in Outlines need the expandable
\`\ingnslash` (instead of the \^`\ignoreslash`).
\_cod \_fin ----------------------
diff --git a/macros/luatex/optex/base/luatex-ini.opm b/macros/luatex/optex/base/luatex-ini.opm
index 04490a9b91..e0526a48d6 100644
--- a/macros/luatex/optex/base/luatex-ini.opm
+++ b/macros/luatex/optex/base/luatex-ini.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \pdfprimitive {LuaTeX initialization code <2020-02-21>} % preloaded in format
diff --git a/macros/luatex/optex/base/makeindex.opm b/macros/luatex/optex/base/makeindex.opm
index b6277e8abd..22b09e396b 100644
--- a/macros/luatex/optex/base/makeindex.opm
+++ b/macros/luatex/optex/base/makeindex.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \makeindex {Makeindex and sorting <2020-04-26>} % loaded in format
@@ -6,19 +6,19 @@
\^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
You need not any external program.
- There are two passes in sorting algorithm. Primary pass does not
- distinguish between a group o letters (typically non-accented and
+ There are two passes in the sorting algorithm. The primary pass does not
+ distinguish between a group of letters (typically non-accented and
accented). If the result of comparing two string is equal in primary pass
- then secondary pass is started. It distinguish between variously accented
- letters. Czech rules, for example says: not accented before dieresis
+ then the secondary pass is started. It distinguishes between variously accented
+ letters. Czech rules, for example, says: not accented before dieresis
before acute before circumflex before ring. At less priority: lowercase
- letters must be before uppercase letters.
+ letters must be before uppercase letters.
The \`\_sortingdata``<iso-code>` implements these rules for the language
<iso-code>. The groups between commas are not distinguished in the first
pass. The second pass distinguishes all characters mentioned in the
- `\_sortingdata<iso-code>` (commas are ignored). The order of letters
- in the `\_sortingdata<iso-code>` macro is significant for sorting algorithm.
+ `\_sortingdata<iso-code>` (commas are ignored). The order of letters
+ in the `\_sortingdata<iso-code>` macro is significant for the sorting algorithm.
The Czech rules (`cs`) are implemented here:
\_cod -----------------------------
@@ -59,19 +59,19 @@
}
\_doc -----------------------------
- Characters ignored by sorting algorithm are declared in \`\_ignoredchars``<iso-code>`.
+ Characters ignored by the sorting algorithm are declared in \`\_ignoredchars``<iso-code>`.
The compound characters (two or more characters interpreted as one
- character in sorting algorithm) is mapped to single invisible characters
- in \`\_compoundchars``<iso-code>`. Czech rules declares ch or Ch or CH as
+ character in the sorting algorithm) are mapped to single invisible characters
+ in \`\_compoundchars``<iso-code>`. Czech rules declare ch or Ch or CH as
a single letter sorted between H and I. See \`\_sortingdatacs` above where
these declared characters are used.
- The characters declared in `\_ignoredchars` are ignored in first pass
+ The characters declared in `\_ignoredchars` are ignored in the first pass
without additional condition. All characters are taken into account in
second pass: ASCII characters with code $\lq65$ are sorted first if they
- are not mentioned in the `\_sortingdata<iso-code>` macro.
+ are not mentioned in the `\_sortingdata<iso-code>` macro.
Others not mentioned characters have undefined behavior during sorting.
- \_cod -----------------------------
+ \_cod -----------------------------
\_def \_ignoredcharscs {.,;?!:'"|()[]<>=+}
\_def \_compoundcharscs {ch:^^T Ch:^^U CH:^^V} % DZ etc. are sorted normally
@@ -80,13 +80,13 @@
Slovak sorting rules are the same as Czech. The macro `\_sortingdatacs`
includes Slovak letters too. Compound characters are the same.
English sorting rules can be defined by `\_sortingdatacs` too because
- English alphabet is subset of Czech and Slovak alphabets. Only
- difference: \`\_compoundcharsen` is empty in English rules.
+ English alphabet is a subset of the Czech and Slovak alphabets. Only
+ difference: \`\_compoundcharsen` is empty in English rules.
- You can declare these macros for more languages, if you wish to use
- `\makeindex` with sorting rules in respect to your language.
- Note: if you need to map compound characters to a character, don't use
- `^^I` or `^^M` because these characters have very specific category code.
+ You can declare these macros for more languages if you wish to use
+ `\makeindex` with sorting rules with respect to your language.
+ Note: if you need to map compound characters to a character, don't use
+ `^^I` or `^^M` because these characters have very specific category codes.
And use space to separate more mappings, like in \`\_compoundcharscs` above.
\_cod -----------------------------
@@ -98,7 +98,7 @@
\_let \_ignoredcharsen = \_ignoredcharscs
\_doc -----------------------------
- Preparing to primary pass is implemented by the \`\_setprimarysorting` macro.
+ Preparing to primary pass is implemented by the \`\_setprimarysorting` macro.
It is called from `\makeindex` macro and all processing of sorting is in a group.
\_cod -----------------------------
@@ -121,7 +121,7 @@
\_tmpnum=65 \_ea\_act \_sortingdata \_relax
\_def \_act ##1{\_ifx##1\_relax \_else
\_lccode`##1=`\^^I
- \_ea\_act \_fi}%
+ \_ea\_act \_fi}%
\_ea\_act \_ignoredchars \_relax
}
@@ -133,13 +133,13 @@
\_def \_act ##1{\_ifx##1\_relax \_else
\_ifx##1,\_else \_advance\_tmpnum by1 \_lccode`##1=\_tmpnum \_fi
\_ea\_act \_fi}%
- \_tmpnum=65 \_ea\_act \_sortingdata \_relax
+ \_tmpnum=65 \_ea\_act \_sortingdata \_relax
}
\_doc -----------------------------
- Strings to be sorted are prepared in `\,<string>` control sequences
- (in order to save `\TeX` memory).
- The \`\_preparesorting` `\,<string>` converts `<string>` to `\_tmpb`
+ Strings to be sorted are prepared in `\,<string>` control sequences
+ (to save `\TeX` memory).
+ The \`\_preparesorting` `\,<string>` converts `<string>` to `\_tmpb`
with respect to the data initialized in \^`\_setprimarysorting` or
\^`\_setsecondarysorting`.\nl
The compoud characters are converted to single characters by the
@@ -148,7 +148,7 @@
\_def \_preparesorting #1{%
\_edef \_tmpb {\_ea\_ignorefirst\_csstring #1}% \,<string> -> <string>
- \_ea \_docompound \_compoundchars \_relax:{} % replace compound characters
+ \_ea \_docompound \_compoundchars \_relax:{} % replace compound characters
\_lowercase \_ea{\_ea\_def \_ea\_tmpb \_ea{\_tmpb}}% convert in respect to \_sortingdata
\_ea\_replstring \_ea\_tmpb \_ea{\_csstring\^^I}{}% remove ignored characters
}
@@ -158,18 +158,18 @@
\_def \_ignorefirst#1{}
\_doc -----------------------------
- Macro \`\_isAleB` `\,<string1> \,<string2>` returns the result of comparison
+ Macro \`\_isAleB` `\,<string1> \,<string2>` returns the result of comparison
of given two strings to \`\_ifAleB` control sequence. Usage:
`\isAleB \,<string1> \,<string2> \_ifAleB ... \_else ... \_fi`
The converted strings (in respect of the data prepared for first pass)
must be saved as values of `\,<string1>` and `\,<string2>` macros.
- The reason is speed: we don't want to convert them repeatedly in each
+ The reason is speed: we don't want to convert them repeatedly in each
comparison.
\nl
The macro
\`\_testAleB` `<converted string1>&\_relax<converted-string2>\_relax \,<string1>\,<string2>`\nl
- does the real work. It reads first character from both converted strings, compares them
- and if it is equal then calls itself recursively else gives result.
+ does the real work. It reads the first character from both converted strings, compares them
+ and if it is equal then calls itself recursively else gives the result.
\_cod -----------------------------
\_newifi \_ifAleB
@@ -203,7 +203,7 @@
Merge sort is very effectively implemented by \TeX/ macros. The following
code is created by my son Miroslav.
The \`\_mergesort` macro expects that all items in `\_iilist` are separated
- by comma when it starts. It ends with sorted items in `\_iilist` without commas.
+ by a comma when it starts. It ends with sorted items in `\_iilist` without commas.
So `\_dosorting` macro must prepare commas between items.
\_cod -----------------------------
@@ -239,24 +239,24 @@
\_doc -----------------------------
The \`\_dosorting` `\list` macro redefines `\list` as sorted `\list`.
The `\list` have to include control sequences in the form `\<c><string>`.
- These control sequences will be sorted in respect to <strings> without
+ These control sequences will be sorted with respect to <strings> without
change of meanings of these control sequences. Their meanings are
irrelevant when sorting. The first character <c> in `\<c><string>` should
be whatever. It does not influence the sorting. \OpTeX/ uses comma at
this place for sorting indexes: `\,<word1> \,<word2> \,<word3> ...`.
- The actual language (chosen for hyphenation patterns) is used for
- sorting data. If the `\_sortinglang` macro
- is defined as `<iso-code>`(for example `\def\sortinglang{de}`)
+ The actual language (chosen for hyphenation patterns) is used for
+ sorting data. If the `\_sortinglang` macro
+ is defined as `<iso-code>`(for example `\def\sortinglang{de}`)
then this has precedence and actual language is not used.
- Moreover, if you specify \`\_asciisortingtrue` then ASCII
- sorting will be processed and all language sorting data will be ignored.
+ Moreover, if you specify \`\_asciisortingtrue` then ASCII
+ sorting will be processed and all language sorting data will be ignored.
\_cod -----------------------------
\_newifi \_ifasciisorting \_asciisortingfalse
\_def\_dosorting #1{%
\_begingroup
- \_def\_nold{}%
+ \_def\_nold{}%
\_ifx\_sotringlang\_undefined \_edef\_sortinglang{\_cs{_lan:\_the\_language}}\_fi
\_ifasciisorting
\_edef\_sortinglang{ASCII}%
@@ -264,7 +264,7 @@
\_let \_setsecondarysorting=\_relax
\_else
\_setprimarysorting
- \_fi
+ \_fi
\_message{OpTeX: Sorting \_string#1 (\_sortinglang) ...^^J}%
\_ifx\_nold\_empty\_else \_opwarning{Missing\_nold\_space for language (\_sortinglang)}\_fi
\_def \_act##1{\_preparesorting ##1\_edef##1{\_tmpb}}%
@@ -278,7 +278,7 @@
\_doc -----------------------------
The \`\makeindex` prints the index. First, it sorts the `\_iilist`
- second, it prints the sorted `\_iilist`, each item is printed
+ second, it prints the sorted `\_iilist`, each item is printed
using \^`\_printindexitem`.
\_cod -----------------------------
@@ -286,7 +286,7 @@
\_ifx\_iilist\_empty \_opwarning{index data-buffer is empty. TeX me again}%
\_incr\_unresolvedrefs
\_else
- \_dosorting \_iilist % sorting \_iilist
+ \_dosorting \_iilist % sorting \_iilist
\_bgroup
\_rightskip=0pt plus1fil \_exhyphenpenalty=10000 \_leftskip=\_iindent
\_ea\_xargs \_ea\_printindexitem \_iilist ;\_par
@@ -300,15 +300,15 @@
If `\_,<word>` is defined then this is used instead real <word>
(this exception is declared by `\iis` macro). Else <word> is printed by
\^`\_printii`. Finally, \^`\_printiipages` prints the value of `\,<word>`,
- i.e. the list of pages.
- \_cod -----------------------------
+ i.e. the list of pages.
+ \_cod -----------------------------
\_def\_printindexitem #1{%
\_ifcsname _\_csstring #1\_endcsname
\_ea\_ea\_ea \_printii \_csname _\_csstring #1\_endcsname &%
\_else
\_ea\_ea\_ea\_printii \_ea\_ignorefirst \_csstring #1&%
- \_fi
+ \_fi
\_ea\_printiipages #1&
}
@@ -347,12 +347,12 @@
\`\_printiipages` `<pglist>&` gets `<pglist>` in the form
`<pg>:<type>,<pg>:<type>,...<pg>:<type>` and it converts them to
`<pg>, <pg>, <from>--<to>, <pg>` etc. The same pages must be printed only once
- and continuous consequences of pages must be compressed to the form <from>-<to>.
+ and continuous consequences of pages must be compressed to the form <from>-<to>.
Moreover, the consequence is continuous only if all pages have the same <type>.
Empty <type> is most common, pages with `b` <type> must be printed as bold
and with `i` `<type>` as italics.
Moreover, the `<pg>` mentioned here are <gpageno>, but we have to print
- <pageno>. The following macros solves these tasks.
+ <pageno>. The following macros solve these tasks.
\_cod -----------------------------
\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0 \_printpages #1,:,\_par}
@@ -360,7 +360,7 @@
\_ifx,#1,\_uselastpgnum
\_else \_def\_tmpa{#2}%
\_ifx\_pgtype\_tmpa \_else
- \_let\_pgtype=\_tmpa
+ \_let\_pgtype=\_tmpa
\_uselastpgnum \_usepgcomma \_pgprint#1:{#2}%
\_tmpnum=#1 \_returnfi \_fi
\_ifnum\_tmpnum=#1 \_returnfi \_fi
@@ -374,22 +374,22 @@
\_ea\_printpages \_fi
}
\_def\_returnfi #1\_relax{\_fi}
-\_def\_uselastpgnum{\_ifx\_lastpgnum\_undefined
+\_def\_uselastpgnum{\_ifx\_lastpgnum\_undefined
\_else \_ea\_pgprint\_lastpgnum \_let\_lastpgnum=\_undefined \_fi
}
\_def\_usepgcomma{\_ifnum\_tmpnum>0, \_fi} % comma+space between page numbers
\_def\_usepgdash{\_hbox{--}} % dash in the <from>--<to> form
\_doc -----------------------------
- You can re-define \`\_pgprint` `<gpageno>:{<iitype>}`
+ You can re-define \`\_pgprint` `<gpageno>:{<iitype>}`
if you need to implement more <iitypes>.
\_cod -----------------------------
\_def\_pgprint #1:#2{%
\_ifx ,#2,\_pgprintA{#1}\_returnfi \_fi
- \_ifx b#2{\_bf \_pgprintA{#1}}\_returnfi \_fi
- \_ifx i#2{\_it \_pgprintA{#1}}\_returnfi \_fi
- \_ifx u#2\_pgu{\_pgprintA{#1}}\_returnfi \_fi
+ \_ifx b#2{\_bf \_pgprintA{#1}}\_returnfi \_fi
+ \_ifx i#2{\_it \_pgprintA{#1}}\_returnfi \_fi
+ \_ifx u#2\_pgu{\_pgprintA{#1}}\_returnfi \_fi
\_pgprintA{#1}\_relax
}
\_def\_pgprintA #1{\_ilink[pg:#1]{\_cs{_pgi:#1}}} % \ilink[pg:<gpageno>]{<pageno>}
@@ -397,8 +397,8 @@
\_doc -----------------------------
The \`\iindex``{<word>}` puts one <word> to the index. It writes
- \^`\_Xindex``{<word>}{<iitype>}` to the `.ref` file.
- All othes variants of indexing macros expands internally to `\iindex`.
+ \^`\_Xindex``{<word>}{<iitype>}` to the `.ref` file.
+ All other variants of indexing macros expand internally to `\iindex`.
\_cod -----------------------------
\_def\_iindex#1{\_isempty{#1}\_iffalse\_openref{\def~{ }%
@@ -407,8 +407,8 @@
\_doc -----------------------------
The \`\_Xindex``{<word>}{<iitype>}` stores `\,<word>` to the `\_iilist` if
- there is first occurrence of the <word>. The list of pages where `<word>`
- occurs, is the value of the macro `\,<word>`, so the `<gpageno>:<iitype>`
+ there is the first occurrence of the <word>. The list of pages where `<word>`
+ occurs, is the value of the macro `\,<word>`, so the `<gpageno>:<iitype>`
is appended to this list.
Moreover, we need a mapping from <gpageno> to `<pageno>`, because we print
`<pageno>` in the index, but hyperlinks are implemented by `<gpageno>`.
@@ -427,7 +427,7 @@
\_doc -----------------------------
The implementation of macros \`\ii`, \`\iid`, \`\iis` follows.
- Note that `\ii` works in horizontal mode on order to the `\write` whatsit
+ Note that `\ii` works in the horizontal mode in order to the `\write` whatsit
is not broken from the following word. If you need to keep vertical mode,
use \^`\iindex``{<word>}` directly.
\nl
diff --git a/macros/luatex/optex/base/maketoc.opm b/macros/luatex/optex/base/maketoc.opm
index 46a2f8d50f..84e699d67d 100644
--- a/macros/luatex/optex/base/maketoc.opm
+++ b/macros/luatex/optex/base/maketoc.opm
@@ -1,4 +1,4 @@
-% This is part of OpTeX project, see http://petr.olsak.net/optex
+% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \maketoc {Macros for maketoc <2020-03-12>} % preloaded in format
@@ -12,7 +12,7 @@
* `<type>`: the type of the level, i.e. chap, sec, secc
* `<number>`: the number of the chapter/section/subsection in the format 1.2.3
* `<title>`: the title text
- * `<gpageno>`: the page number numbered from 1 independently of pagination
+ * `<gpageno>`: the page number numbered from 1 independently of pagination
* `<pageno>`: the page number used in the pagination
\enditems
The last two parameters are restored from previous
@@ -22,7 +22,7 @@
because the <title> can include something like \code{`\{`}.
\_cod ------------------------------------
-\_def\_toclist{}
+\_def\_toclist{}
\_newifi \_ifischap \_ischapfalse
\_def\_Xtoc#1#2#3{\_ifnum#1=0 \_ischaptrue\_fi
@@ -33,23 +33,23 @@
\`\_tocline``{<level>}{<type>}{<number>}{<title>}{<gpageno>}{<pageno>}` prints
the record to the table of contents. It opens group, reduces `\_leftskip`,
`\_rightskip`, runs the \^`\everytocline` (user can customise the design of TOC
- here) and runs `\_tocl:<level> {<number>}{<title>}{<pageno>}` macro.
+ here) and runs `\_tocl:<level> {<number>}{<title>}{<pageno>}` macro.
This macro starts with vertical mode,
inserts one record with given `<level>` and it should end by \^`\_tocpar`
- which returns to hrizontal mode. The `\_tocpar`
+ which returns to horizontal mode. The `\_tocpar`
appends `\_nobreak \_hskip-2\_iindent\_null \_par`. This causes
that the last line of the record is shifted outside the margin given by
- `\_rightskip`. A typical record (with long `<title>`) looks like:
- \begtt
+ `\_rightskip`. A typical record (with long `<title>`) looks like this:
+ \begtt \catcode`\<=13
| |
\llap{<number>} text text text text text
text text text text text
text text .................... <pageno>
\endtt
Margins given by `\leftskip` and `\rightskip` are denoted by `|` in the
- examle above.
+ examle above.
\nl
- \`\tocrefnum` is global counter of all TOC records (used by hyperlinks).
+ \`\tocrefnum` is the global counter of all TOC records (used by hyperlinks).
\_cod ------------------------------------
\_newcount \_tocrefnum
@@ -60,7 +60,7 @@
\_ifischap \_advance\_leftskip by \_iindent \_fi
\_def\_pgn{\_ilink[pg:#5]}%
\_the\_everytocline
- \_ifcsname _tocl:#1\_endcsname
+ \_ifcsname _tocl:#1\_endcsname
\_cs{_tocl:#1}{#3}{\_scantextokens{#4}}{#6}\_par
\_fi
\_egroup
@@ -97,15 +97,15 @@
\_doc -----------------------------------
\`\maketoc` prints warning if TOC data is empty, else it creates TOC by
- running \^`\_toclist`
+ running \^`\_toclist`
\_cod ----------------------------------
\_def\_maketoc{\_par \_ifx\_toclist\_empty
\_opwarning{\_noexpand\maketoc -- data unavailable, TeX me again}\_openref
\_incr\_unresolvedrefs
- \_else \_begingroup
- \_tocrefnum=0 \_penalty11333
- \_the\_regtoc \_toclist
+ \_else \_begingroup
+ \_tocrefnum=0 \_penalty11333
+ \_the\_regtoc \_toclist
\_endgroup \_fi
}
@@ -115,14 +115,14 @@
\^`\pdfunidef`.
\_cod \_fin -----------------------------
-\_newtoks \_regtoc \_newtoks \_regmark \_newtoks \_regoul
+\_newtoks \_regtoc \_newtoks \_regmark \_newtoks \_regoul
\_def\_regmacro #1#2#3{%
\_toksapp\_regtoc{#1}\_toksapp\_regmark{#2}\_toksapp\_regoul{#3}%
}
\_public \maketoc \regmacro ;
-\_endcode
+\_endcode
2020-04-23 \_tocpar introduced (incompatible change)
2020-04-22 \_pg -> \_pgn (incompatible change)
diff --git a/macros/luatex/optex/base/margins.opm b/macros/luatex/optex/base/margins.opm
index a02bf3e57a..8799dec294 100644
--- a/macros/luatex/optex/base/margins.opm
+++ b/macros/luatex/optex/base/margins.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \margins {Macros for margins setting <2020-03-14>} % preloaded in format
@@ -43,7 +43,7 @@
\_def\_setpagedimensA#1 {\_ifcsname _pgs:#1\_endcsname
\_ea\_ea\_ea\_setpagedimensB \_csname _pgs:#1\_ea\_endcsname\_space
\_else \_opwarning{page specification "#1" is undefined}\_fi}
-\_def\_setpagedimensB (#1,#2)#3 {\_setpagedimensC\_pgwidth=#1:#3
+\_def\_setpagedimensB (#1,#2)#3 {\_setpagedimensC\_pgwidth=#1:#3
\_setpagedimensC\_pgheight=#2:#3
\_pdfpagewidth=\_pgwidth \_pdfpageheight=\_pgheight
}
@@ -67,7 +67,7 @@
\_def\_trueunit{}
\_def\_magscale[#1]{\_mag=#1\_def\_trueunit{true}%
\_ifdim\_pgwidth=0pt \_else \_truedimen\_pgwidth \_truedimen\_pgheight \_fi
- \_truedimen\_pdfpagewidth \_truedimen\_pdfpageheight
+ \_truedimen\_pdfpagewidth \_truedimen\_pdfpageheight
}
\_def\_truedimen#1{\_ifx\_trueunit\_empty \_else#1=\_ea\_ignorept\_the#1truept \_fi}
diff --git a/macros/luatex/optex/base/math-macros.opm b/macros/luatex/optex/base/math-macros.opm
index 7cb7532e73..a087d31c68 100644
--- a/macros/luatex/optex/base/math-macros.opm
+++ b/macros/luatex/optex/base/math-macros.opm
@@ -1,34 +1,34 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \sin {Math macros plus mathchardefs <2020-06-13>} % preloaded in format
\_doc -----------------------------
- The category code of the character `_` remains as letter (11) and the mathocode
- of it is `"8000`.
- It means that it is active character in math mode. It is defined as subscript prefix.
+ The category code of the character `_` remains as the letter (11) and the mathocode
+ of it is `"8000`.
+ It means that it is an active character in math mode. It is defined as the subscript prefix.
There is a problem: The `x_n` is tokenized as `x`, `_`, `n` and it works
- without problem. But `\int``_a^b` is tokenized as `\int``_a`, `^`, `b`. The
+ without problems. But `\int``_a^b` is tokenized as `\int``_a`, `^`, `b`. The
control sequence `\int``_a` isn't defined. We must write `\int _a^b`.
- The Lua code presented here solves this problem. But you cannot set our own
+ The Lua code presented here solves this problem. But you cannot set your own
control sequence in the form `\<word>_` or `\<word>_<one-letter>` (where
- <word> is sequence of letters) because such control sequences are
+ <word> is a sequence of letters) because such control sequences are
inaccessible: preprocessor rewrites it.
The \`\mathsbon` macro activates the rewriting rule `\<word>_<nonleter>` to
- `\<word> _<nonletter>` and
+ `\<word> _<nonletter>` and
`\<word>``_<letter><nonletter>` to `\<word> _<letter><nonletter>` at input
processor level. The \`\mathsboff` deactivates it.
You can ask by \`\_ifmathsb` if this feature is activated or deactivated.
By default, it is activated in the `\everyjob`, see section~\ref[init].
Note, that the `\everyjob` is processed after the first line of the document is
- read, so the \^`\mathsbon` is activated from second line of the document.
+ read, so the \^`\mathsbon` is activated from the second line of the document.
\_cod -----------------------------
\catcode`\_ = 8 \let\sb = _
\catcode`\_ = 13 \let _ = \sb
-\catcode`\_ = 11
+\catcode`\_ = 11
\_private \sb ;
\_newifi\_ifmathsb \_mathsbfalse
@@ -48,8 +48,8 @@
\_doc -----------------------------
All mathcodes are set to equal values as in plain\TeX/.
- But all encoding-dependend declarations (like these) will be set
- to different values when Unicode-math font is used.
+ But all encoding-dependent declarations (like these) will be set
+ to different values when a Unicode-math font is used.
\_cod -----------------------------
\_mathcode`\^^@="2201 % \cdot
@@ -181,7 +181,7 @@
\_mathchardef\Im="023D
\_mathchardef\partial="0140
\_mathchardef\infty="0231
-\_mathchardef\prime="0230
+\_mathchardef\prime="0230
\_mathchardef\emptyset="023B
\_mathchardef\nabla="0272
\_protected\_def \surd{{\_mathchar"1270}}
@@ -205,7 +205,7 @@
\_mathchardef\biguplus="1355
\_mathchardef\bigcap="1354
\_mathchardef\bigcup="1353
-\_mathchardef\intop="1352
+\_mathchardef\intop="1352
\_protected\_def \int{\_intop\_nolimits} \_private \intop;
\_mathchardef\prod="1351
\_mathchardef\sum="1350
@@ -263,7 +263,7 @@
\_mathchardef\swarrow="322E
\_mathchardef\Leftrightarrow="322C
\_mathchardef\Leftarrow="3228
-\_mathchardef\Rightarrow="3229
+\_mathchardef\Rightarrow="3229
\_protected\_def \neq{\_not=} \_let\ne=\neq
\_mathchardef\leq="3214 \let\le=\leq
\_mathchardef\geq="3215 \let\ge=\geq
@@ -282,7 +282,7 @@
\_mathchardef\ll="321C
% \_mathchardef\not="3236 % defined below
\_mathchardef\leftrightarrow="3224
-\_mathchardef\leftarrow="3220 \_let\gets=\leftarrow
+\_mathchardef\leftarrow="3220 \_let\gets=\leftarrow
\_mathchardef\rightarrow="3221 \_let\to=\rightarrow
\_mathchardef\mapstochar="3237
\_protected\_def\mapsto{\_mapstochar\_rightarrow} \_private \mapstochar \rightarrow ;
@@ -293,13 +293,13 @@
\_mathchardef\asymp="3210
\_mathchardef\smile="315E
\_mathchardef\frown="315F
-\_mathchardef\leftharpoonup="3128
+\_mathchardef\leftharpoonup="3128
\_mathchardef\leftharpoondown="3129
\_mathchardef\rightharpoonup="312A
-\_mathchardef\rightharpoondown="312B
+\_mathchardef\rightharpoondown="312B
\_doc -----------------------------
- The math functions like log, sin, cos are declared in tha same way as in
+ The math functions like log, sin, cos are declared in the same way as in
plain\TeX/, but they are `\protected` in \OpTeX/.
\_cod -----------------------------
@@ -337,17 +337,17 @@
\_protected\_def\deg {\_mathop{\_rm deg}\_nolimits}
\_doc -----------------------------
- These macros are defined similarly as in plain\TeX. Only internal macro
- names from plain\TeX/ with `@` character are re-written in more readable
+ These macros are defined similarly as in plain\TeX. Only internal macro
+ names from plain\TeX/ with `@` character are re-written in a more readable
form.\nl
- \`\sp` is alternative for `^`. The \`\sb` alternative for `_` was defined
- at the line 27 of the file `math-macros.opm`.
+ \`\sp` is an alternative for `^`. The \`\sb` alternative for `_` was defined
+ at line 27 of the file `math-macros.opm`.
\_cod -----------------------------
\_let\_sp=^ \public \sp ;
% \sb=_ , defined at beginning of this file
-\_def\_thinsk {\_mskip\_thinmuskip}
+\_def\_thinsk {\_mskip\_thinmuskip}
\_protected\_def\,{\_relax\_ifmmode \_thinsk \_else \_thinspace \_fi}
\_protected\_def\>{\_mskip\_medmuskip} \let\_medsk = \>
\_protected\_def\;{\_mskip\_thickmuskip} \let\_thicksk = \;
@@ -366,7 +366,7 @@
\_private \prime ;
\_doc -----------------------------
- \`\big`, \`\Big`, \`\bigg`, \`\Bigg`, \`\bigl`, \`\bigm`, \`\bigr`, \`\Bigl`, \`\Bigm`,
+ \`\big`, \`\Big`, \`\bigg`, \`\Bigg`, \`\bigl`, \`\bigm`, \`\bigr`, \`\Bigl`, \`\Bigm`,
\`\Bigr`, \`\biggl`, \`\biggm`, \`\biggr`, \`\Biggl`, \`\Biggm`, \`\Bigg`, \`\Biggr`
are based on the \`\_scalebig` macro because we need the dependency on
the various sizes of the fonts.
@@ -376,8 +376,8 @@
\_def\_scalebig#1#2{{\_left#1\_vbox to#2\_fontdimen6\_textfont1{}%
\_kern-\_nulldelimiterspace\_right.}}
-\_protected\_def\_big#1{\_scalebig{#1}{.85}}
-\_protected\_def\_Big#1{\_scalebig{#1}{1.15}}
+\_protected\_def\_big#1{\_scalebig{#1}{.85}}
+\_protected\_def\_Big#1{\_scalebig{#1}{1.15}}
\_protected\_def\_bigg#1{\_scalebig{#1}{1.45}}
\_protected\_def\_Bigg#1{\_scalebig{#1}{1.75}}
\_public \big \Big \bigg \Bigg ;
@@ -397,26 +397,26 @@
\_public \bigl \bigm \bigr \Bigl \Bigm \Bigr \biggl \biggm \biggr \Biggl \Biggm \Biggr ;
\_doc -----------------------------
- Math relations defined by the \`\jointrel` plain \TeX/ macro:
+ Math relations defined by the \`\jointrel` plain \TeX/ macro:
\_cod -----------------------------
\_protected\_def\_joinrel{\_mathrel{\_mkern-2.5mu}} % -3mu in plainTeX
\_protected\_def\relbar{\_mathrel{\_smash-}} % \_smash, because - has the same height as +
\_protected\_def\Relbar{\_mathrel=}
-\_mathchardef\lhook="312C
+\_mathchardef\lhook="312C
\_protected\_def\hookrightarrow{\_lhook\_joinrel\_rightarrow}
-\_mathchardef\rhook="312D
-\_protected\_def\hookleftarrow{\_leftarrow\_joinrel\_rhook}
+\_mathchardef\rhook="312D
+\_protected\_def\hookleftarrow{\_leftarrow\_joinrel\_rhook}
\_protected\_def\bowtie{\_mathrel\_triangleright\_joinrel\_mathrel\_triangleleft}
\_protected\_def\models{\_mathrel|\_joinrel=}
-\_protected\_def\Longrightarrow{\_Relbar\_joinrel\_Rightarrow}
-\_protected\_def\longrightarrow{\_relbar\_joinrel\_rightarrow}
-\_protected\_def\longleftarrow{\_leftarrow\_joinrel\_relbar}
-\_protected\_def\Longleftarrow{\_Leftarrow\_joinrel\_Relbar}
+\_protected\_def\Longrightarrow{\_Relbar\_joinrel\_Rightarrow}
+\_protected\_def\longrightarrow{\_relbar\_joinrel\_rightarrow}
+\_protected\_def\longleftarrow{\_leftarrow\_joinrel\_relbar}
+\_protected\_def\Longleftarrow{\_Leftarrow\_joinrel\_Relbar}
\_protected\_def\longmapsto{\_mapstochar\_longrightarrow}
\_protected\_def\longleftrightarrow{\_leftarrow\_joinrel\_rightarrow}
\_protected\_def\Longleftrightarrow{\_Leftarrow\_joinrel\_Rightarrow}
-\_protected\_def\iff{\_thicksk\_Longleftrightarrow\_thicksk}
+\_protected\_def\iff{\_thicksk\_Longleftrightarrow\_thicksk}
\_private \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
\Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
\longrightarrow \Longleftrightarrow ;
@@ -442,7 +442,7 @@
\_public \ldots \cdots \vdots \ddots ;
\_doc -----------------------------
- \`\adots` ispired by plain \TeX/
+ \`\adots` inspired by plain \TeX/
\_cod -----------------------------
\_protected\_def\_adots{\_mathinner{%
@@ -643,8 +643,8 @@
\_doc -----------------------------
The \`\eqalign` macro behaves like in Plain \TeX/ by default.
- It creates the `\vcenter` in the math mode. The contents is two column
- `\halign` with right aligned left column and left aligned right column.
+ It creates the `\vcenter` in the math mode. The content is two column
+ `\halign` with right-aligned left column and left-aligned right column.
The table items are in `\displaystyle` and the `\baselineskip` is
advanced by `\jot` (3pt in plain \TeX). It follows from the default
settings of \^`\eqlines` and \^`\eqstyle` parameters.
@@ -653,11 +653,11 @@
\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
{Typesetting Math with \OpTeX/}.
The `\baselineskip` value is set by the \^`\eqlines` parameter and math style
- by the \^`\eqstyle` parameter.
+ by the \^`\eqstyle` parameter.
There are more possible columns than two (used in classical Plain TeX):
`rlcrlcrlc` etc.\ where `r` and `l` columns are without spaces and `c` column
- (if used) has the space \^`\eqspace`/2 at its both sides.
+ (if used) has space \^`\eqspace`/2 at its both sides.
\_cod -----------------------------
\_long\_def\_eqalign#1{\_null\_thinsk\_vcenter{\_the\_eqlines\_math
@@ -681,7 +681,7 @@
\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
{Typesetting Math with \OpTeX/}.
The centered formulas are in `\vcenter` in this case,
- so lines cannot be broken to more pages, but this case
+ so lines cannot be broken into more pages, but this case
enables to use `\eqno` or `\leqno` or \^`\eqmark`.
\_cod -----------------------------
@@ -725,11 +725,11 @@
\_public \openup \eqalignno \leqalignno ;
\_doc -----------------------------
- These macros are inspired from `ams-math.tex` file.
+ These macros are inspired by `ams-math.tex` file.
\maxlines=15
\_cod -----------------------------
-\_def\_amsafam{4} \_def\_amsbfam{5}
+\_def\_amsafam{4} \_def\_amsbfam{5}
\_mathchardef \boxdot "2\_amsafam 00
\_mathchardef \boxplus "2\_amsafam 01
@@ -988,7 +988,7 @@
\_else \_ifcsname _n\_tmpn\_endcsname \_csname _n\_tmpn\_endcsname
\_else \_mathrel{\_mathord{\_notchar}\_mathord{#1}}%
\_fi \_fi \_fi \_fi}
-\_private
+\_private
\nleq \ngeq \nless \ngtr \nprec \nsucc \nleqslant \ngeqslant \npreceq
\nsucceq \nleqq \ngeqq \nsim \ncong \nsubseteqq \nsupseteqq \nsubseteq
\nsupseteq \nparallel \nmid \nshortmid \nshortparallel \nvdash \nVdash
@@ -999,32 +999,50 @@
\_doc -----------------------------
\`\mathstyles``{<math list>}`
- behaves like `{<math list>}`, but you can use following commands in the
+ behaves like `{<math list>}`, but you can use the following commands in the
`<math list>`:
\begitems
* \`\currstyle` which expands to `\displaystyle`, `\textstyle`,
`\scriptstyle` or `\scriptscriptstyle` depending on the current math style
- when \^`\mathstyles` was opened.
+ when \^`\mathstyles` was opened.
* \`\dobystyle``{<D>}{<T>}{<S>}{<SS>}` is expandable macro. It expands to
`<D>`, `<T>`, `<S>` or `<SS>` depending on the current math style
when \^`\mathstyles` was opened.
- * The value of the \`\stylenum` is 0, 1, 2 or 3
- depending on the current math style when \^`\mathstyles` was opened.
+ * The value of the \`\stylenum` is 0, 1, 2 or 3
+ depending on the current math style when \^`\mathstyles` was opened.
\enditems
- Example of usage of \^`\mathstyles`:
+ Example of usage of \^`\mathstyles`:
`\def\mathframe#1{\mathstyles{\frame{$\currstyle#1$}}}`.
- \_cod -----------------------------
+ \_cod -----------------------------
\_newcount\_stylenum
\_def\_mathstyles#1{{\_mathchoice{\_stylenum0 #1}{\_stylenum1 #1}%
- {\_stylenum2 #1}{\_stylenum1 #1}}}
+ {\_stylenum2 #1}{\_stylenum3 #1}}}
\_def\_dobystyle#1#2#3#4{\_ifcase\_stylenum#1\_or#2\_or#3\_or#4\_fi}
-\_def\_currstyle{\dobystyle\_displaystyle\_textstyle\_scriptstyle\_scriptscriptstyle}
+\_def\_currstyle{\_dobystyle\_displaystyle\_textstyle\_scriptstyle\_scriptscriptstyle}
\_public \mathstyles \dobystyle \currstyle \stylenum ;
\_doc -----------------------------
+ The \`\cramped` macro
+ sets the cramped variant of the current style.
+ Note that \^`\currstyle` initializes non-cramped variants.
+ The example `\mathframe` above should be:\nl
+ `\def\mathframe#1{\mathstyles{\frame{$\currstyle\cramped #1$}}}`.\nl
+ Second note: `\cramped` macro reads the current math style from
+ the `\mathstyle` LuaTeX primitive, so it does not work in numerators of
+ generalized fractions but you can use it before the fraction is opened:
+ `$\cramped {x^2\over y^2}$`.
+ \_cod -----------------------------
+
+\_def\_cramped{\_ifcase\_numexpr(\_mathstyle+1)/2\_relax\_or
+ \_crampeddisplaystyle \_or \_crampedtextstyle \_or
+ \_crampedscriptstyle \_or \_crampedscriptscriptstyle \_fi
+}
+\_public \cramped ;
+
+ \_doc -----------------------------
The \`\mathbox``{<text>}` macro is copied from OPmac trick 078.
- It behaves like `\hbox{<text>}` but the `<text>` is scaled to smaller
+ It behaves like `\hbox{<text>}` but the `<text>` is scaled to a smaller
size if it is used in scriptstyle or scriptscript style.
\_cod -----------------------------
diff --git a/macros/luatex/optex/base/math-preload.opm b/macros/luatex/optex/base/math-preload.opm
index 09d447e3d4..7f6aaa6fdb 100644
--- a/macros/luatex/optex/base/math-preload.opm
+++ b/macros/luatex/optex/base/math-preload.opm
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \normalmath {Math fonts CM + AMS preloaded <2020-05-06>} % preloaded in format
+\_codedecl \normalmath {Math fonts CM + AMS preloaded <2020-05-06>} % preloaded in format
\_doc ------------------------------
- We have two math macros \`\normalmath` for normal shape of all math
- symbols and \`\boldmath` for bold shape of all math symbols. The second one
+ We have two math macros \`\normalmath` for the normal shape of all math
+ symbols and \`\boldmath` for the bold shape of all math symbols. The second one
can be used in bold titles, for example.
These macros load all fonts from all given math font families.
\_cod ------------------------------
@@ -13,7 +13,7 @@
\_loadmathfamily 0 cmr % CM Roman
\_loadmathfamily 1 cmmi % CM Math Italic
\_loadmathfamily 2 cmsy % CM Standard symbols
- \_loadmathfamily 3 cmex % CM extra symbols
+ \_loadmathfamily 3 cmex % CM extra symbols
\_loadmathfamily 4 msam % AMS symbols A
\_loadmathfamily 5 msbm % AMS symbols B
\_loadmathfamily 6 rsfs % script
@@ -28,7 +28,7 @@
\_loadmathfamily 0 cmbx % CM Roman Bold Extended
\_loadmathfamily 1 cmmib % CM Math Italic Bold
\_loadmathfamily 2 cmbsy % CM Standard symbols Bold
- \_loadmathfamily 3 cmexb % CM extra symbols Bold
+ \_loadmathfamily 3 cmexb % CM extra symbols Bold
\_loadmathfamily 4 msam % AMS symbols A (bold not available?)
\_loadmathfamily 5 msbm % AMS symbols B (bold not available?)
\_loadmathfamily 6 rsfs % script (bold not available?)
@@ -44,11 +44,11 @@
\_def \normalmath {\_normalmath} \_def\boldmath {\_boldmath}
\_doc -----------------------------
- The classical math family selectors
+ The classical math family selectors
\`\mit`, \^`\cal`, \^`\bbchar`, \^`\frak` and \^`\script`
- are defined here.
- The \^`\rm`, \^`\bf`, \^`\it`, \^`\bi` and \^`\tt` does two things:
- they are variant selectors for text fonts and math family selectors for math fonts.
+ are defined here.
+ The \^`\rm`, \^`\bf`, \^`\it`, \^`\bi` and \^`\tt` does two things:
+ they are variant selectors for text fonts and math family selectors for math fonts.
The idea was adapted from plain \TeX/.\nl
These macros are redefined when `unimat-codes.opm` is loaded,
see the section~\ref[unimath-codes].
@@ -59,10 +59,10 @@
%\_chardef\_ttfam = 10
%\_chardef\_itfam = 11
-\_protected\_def \_rm {\_tryloadrm \_tenrm \_fam0 }
+\_protected\_def \_rm {\_tryloadrm \_tenrm \_fam0 }
\_protected\_def \_bf {\_tryloadbf \_tenbf \_fam\_bffam}
\_protected\_def \_it {\_tryloadit \_tenit \_fam1 }
-\_protected\_def \_bi {\_tryloadbi \_tenbi \_fam\_bifam}
+\_protected\_def \_bi {\_tryloadbi \_tenbi \_fam\_bifam}
\_protected\_def \_tt {\_tryloadtt \_tentt}
\_protected\_def \_mit {\_fam1 }
@@ -74,7 +74,7 @@
\_public \rm \bf \it \bi \tt \mit \cal \bbchar \frak \script ;
\_doc -----------------------------
- The optical sizes of Computer Modern fonts, AMS and other fonts
+ The optical sizes of Computer Modern fonts, AMS, and other fonts
are declared here.
\_cod -----------------------------
@@ -85,13 +85,13 @@
\_regtfm cmmib 0 cmmib5 5.5 cmmib6 6.5 cmmib7 7.5 cmmib8 8.5 cmmib9 9.5 cmmib10 *
\_regtfm cmtex 0 cstex8 8.5 cstex9 9.5 cstex10 *
\_regtfm cmsy 0 cmsy5 5.5 cmsy6 6.5 cmsy7 7.5 cmsy8 8.5 cmsy9 9.5 cmsy10 *
-\_regtfm cmbsy 0 cmbsy5 5.5 cmbsy6 6.5 cmbsy7 7.5 cmbsy8 8.5 cmbsy9 9.5 cmbsy10 *
+\_regtfm cmbsy 0 cmbsy5 5.5 cmbsy6 6.5 cmbsy7 7.5 cmbsy8 8.5 cmbsy9 9.5 cmbsy10 *
\_regtfm cmex 0 cmex7 7.5 cmex8 8.5 cmex9 9.5 cmex10 *
\_regtfm cmexb 0 cmexb10 *
\_regtfm cmr 0 cmr5 5.5 cmr6 6.5 cmr7 7.5 cmr8 8.5 cmr9 9.5
cmr10 11.1 cmr12 15 cmr17 *
-\_regtfm cmbx 0 cmbx5 5.5 cmbx6 6.5 cmbx7 7.5 cmbx8 8.5 cmbx9 9.5
+\_regtfm cmbx 0 cmbx5 5.5 cmbx6 6.5 cmbx7 7.5 cmbx8 8.5 cmbx9 9.5
cmbx10 11.1 cmbx12 *
\_regtfm cmti 0 cmti7 7.5 cmti8 8.5 cmti9 9.5 cmti10 11.1 cmti12 *
\_regtfm cmtt 0 cmtt8 8.5 cmtt9 9.5 cmtt10 11.1 cmtt12 *
@@ -109,17 +109,17 @@
%% bf and bi sansserif math alternatives:
-\_regtfm bfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800
- 8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 *
-\_regtfm bisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800
- 8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 *
-\_regtfm bbfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800
- 8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 *
-\_regtfm bbisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800
- 8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 *
+\_regtfm bfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800
+ 8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 *
+\_regtfm bisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800
+ 8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 *
+\_regtfm bbfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800
+ 8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 *
+\_regtfm bbisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800
+ 8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 *
\_doc -----------------------------
- \`\_loadmathfamily` `<number> <font>` loads one math family, i.\,e.\
+ \`\_loadmathfamily` `<number> <font>` loads one math family, i.\,e.\
the triple of fonts in the text size, script size and script-script size.
The `<font>` is `<font-id>` used in the `\_regtfm` parameter or
the real TFM name. The family is saved as `\fam<number>`.
@@ -130,13 +130,13 @@
\nl
The font family is loaded at \`\_sizemtext`, \`\_sizemscript` and
\`\_sizemsscript` sizes. These sizes are set by the
- \`\setmathsizes` `[<text-size>/<script-size>/<scriptscript-size>]` macro.
- These parameters are given in the \`\ptmunit` unit, it is set to
+ \`\setmathsizes` `[<text-size>/<script-size>/<scriptscript-size>]` macro.
+ These parameters are given in the \`\ptmunit` unit, it is set to
1\`\ptunit` and it is set to 1\,pt by default.
\nl
\`\_corrmsizes` should be used in the \^`\normalmath` and \^`\boldmath`
macros if you need a size correction when a selected math family is
- loaded. It is similar as ex-height correction but for math fonts.
+ loaded. It is similar to ex-height correction but for math fonts.
\_cod -----------------------------
\_def\_corrmsizes{\_ptmunit=1\_ptunit\_relax} % for corrections of sizes in diferent fomts
@@ -156,7 +156,7 @@
\_optsize=\_optsizesave \_let#2=\_mF
}
\_def\_setmathsizes[#1/#2/#3]{%
- \_def\_sizemtext{#1\_ptmunit}\_def\_sizemscript{#2\_ptmunit}%
+ \_def\_sizemtext{#1\_ptmunit}\_def\_sizemscript{#2\_ptmunit}%
\_def\_sizemsscript{#3\_ptmunit}%
}
\_newdimen\_ptunit \_ptunit=1pt
@@ -177,18 +177,18 @@
\_scriptspace=0.05\_fontdimen6\_textfont3
\_skewchar\_textfont1=127 \_skewchar\_scriptfont1=127
\_skewchar\_scriptscriptfont1=127
- \_skewchar\_textfont2=48 \_skewchar\_scriptfont2=48
- \_skewchar\_scriptscriptfont2=48
+ \_skewchar\_textfont2=48 \_skewchar\_scriptfont2=48
+ \_skewchar\_scriptscriptfont2=48
\_skewchar\_textfont6=127 \_skewchar\_scriptfont6=127
\_skewchar\_scriptscriptfont6=127
}
\_doc -----------------------------
- Finaly, we preload a math fonts colleciton in [10/7/5] sizes
+ Finally, we preload a math fonts collection in [10/7/5] sizes
when the format is generated. This is done when
- `\_suppressfontnotfounderror=1` because we need not errors when format is
+ `\_suppressfontnotfounderror=1` because we need not errors when the format is
generated. Maybe there are not all fonts in the \TeX/ distribution
- installed.
+ installed.
\_cod -----------------------------
\_suppressfontnotfounderror=1
@@ -203,11 +203,11 @@ concept, where each math family includes three fonts with max 256 characters
(typically 128 characters).
On the other hand, when \^`\fontfam` macro is used in the document then text
-font family and appropriate math family is loaded with Unicoded fonts, i.e.
-Unicoded-math is used. It re-defines all settings given here.
+font family and appropriate math family is loaded with Unicode fonts, i.e.
+Unicode-math is used. It re-defines all settings given here.
The general rule of usage the math fonts in different sizes in \OpTeX/ says: set three
-sizes by the macro
+sizes by the macro
\^`\setmathsizes` `[<text-size>/<script-size>/<scriptscript-size>]` and then
load all math fonts in given sizes by \^`\normalmath` or \^`\boldmath` macros.
For example
@@ -215,7 +215,7 @@ For example
\setmathsizes[12/8.4/6]\normalmath ... math typesetting at 12 pt is ready.
\endtt
-\_endinput
+\_endinput
2020-05-06: \itfam, \ttfam removed, (Unicode math preferred)
2020-04-14: \skewchar\fam6 added
diff --git a/macros/luatex/optex/base/math-unicode.opm b/macros/luatex/optex/base/math-unicode.opm
index 01595975ab..f857deb175 100644
--- a/macros/luatex/optex/base/math-unicode.opm
+++ b/macros/luatex/optex/base/math-unicode.opm
@@ -1,14 +1,14 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \loadmath {Unicode Math fonts <2020-06-06>} % preloaded in format
\_doc -----------------------------
- \`\loadmath` `{<Unicode-math font>}` loads given font. It does:
+ \`\loadmath` `{<Unicode-math font>}` loads the given font. It does:
\begitems
* define \`\_unimathfont` as `<Unicode-math font>`,
* redefine `\normalmath` and `\boldmath` macros to their Unicode counterparts,
* load the `\_unimathfont` by `\normalmath`,
- * print information about loaded font on the terminal,
+ * print information about the loaded font on the terminal,
* redefine all encoding dependent setting by `\input unimath-codes.opm`,
* protect new loading by setting \`\_ifmathloading` to false.
\enditems
@@ -28,7 +28,7 @@
\_opwarning{Math font "#1" not found, skipped...}%
\_else
\_def\_unimathfont{#1}%
- \_let\_normalmath = \_normalunimath \_let\_boldmath = \_boldunimath
+ \_let\_normalmath = \_normalunimath \_let\_boldmath = \_boldunimath
\_normalmath
\_wterm {MATH-FONT: "#1" -- unicode math prepared.}%
\_ifx\_ncharrmA\_undefined \_opinput {unimath-codes.opm}\_fi
@@ -40,7 +40,7 @@
\_doc -----------------------------
\`\loadboldmath` `{<bold-font>} \to {<normal-font>}`
defines \`\_unimathboldfont` as `<bold-font>` only if `\_unimathfont` is
- defined as `<normal-font>`. It is used when `\boldmath` macro is run.
+ defined as `<normal-font>`. It is used when \^`\boldmath` macro is run.
When no `\_unimathboldfont` is defined then the `\boldmath` macro
use \"fake bold" generated by `embolden` \LuaTeX/ font feature.
\_cod -----------------------------
@@ -48,7 +48,7 @@
\_def\_loadboldmath#1#2\to #3{%
\_def\_tmp{#3}\_ifx\_unimathfont\_tmp % do work only if #3 is loaded as normal Math
\_isfont{#1}\_iffalse
- \_opwarning{Bold-Math font "#1" not found, skipped...}
+ \_opwarning{Bold-Math font "#1" not found, skipped...}
\_else
\_def\_unimathboldfont{#1}%
\_wterm {MATH-FONT: "#1" -- unicode math bold prepared.}%
@@ -59,8 +59,15 @@
\_doc -----------------------------
The Unicode version of the \^`\normalmath` and \^`\boldmath` macros
are defined here as \`\_normalunimath` and \`\_boldunimath` macros.
- They are using \`\_setunimathdimens` in similar sense as
+ They are using \`\_setunimathdimens` in a similar sense as
\^`\_setmathdimens`.
+ \nl
+ You can combine more fonts if you register them to another
+ math families (5, 6, 7, etc.) in the \^`\normalmath` macro.
+ \nl
+ The default value of \^`\_normalunimath` shows a combination of base Unicode-math
+ font with 8bit Math font at family 4. See definition of `\script` macro where
+ `\fam4` is used.
\_cod -----------------------------
\_def\_normalunimath{%
@@ -69,7 +76,7 @@
\_setunimathdimens
}%
\_def\_boldunimath{%
- \_ifx\_unimathboldfont \_undefined
+ \_ifx\_unimathboldfont \_undefined
\_loadumathfamily 1 {\_unimathfont}{embolden=1.7;} % Base faked bold
\_else
\_loadumathfamily 1 {\_unimathboldfont}{} % Base real bold font
@@ -86,20 +93,36 @@
}
\_doc -----------------------------
- \`\_loadumathfamily` `<number> {<font>}{<font features>}`
- loads the given Unicode-math fonts in three sizes given by the
+ If you try the example above about
+ \~`\loadboldmath``{[xitsmath-bold]} \to {[xitsmath-regular]}`
+ then you can find a bug in XITSMath-Bold font: the symbols for norm
+ $\|x\|$ are missing. So, we have to define `\_boldmath` macro manually.
+ The missing symbol is loaded from family 5 as no-bold variant in our example:
+ \begtt
+ \loadmath{[xitsmath-regular]}
+ \def\_boldmath{%
+ \_loadumathfamily 1 {[xitsmath-bold]}{} % Base font
+ \_loadmathfamily 4 rsfs % script
+ \_loadumathfamily 5 {[xitsmath-regular]}{}
+ \_def\|{\_Udelimiter 0 5 "02016 }% % norm delimiter from family 5
+ \_setmathdimens
+ }
+ \endtt
+
+ \`\_loadumathfamily` `<number> {<font>}{<font features>}`
+ loads the given Unicode-math fonts in three sizes given by the
\^`\setmathsizes` macro and sets it as the math family `<number>`.
The `<font features>` are added to the default
- \`\_mfontfeatures` and to the size dependent features `+ssty=0`
+ \`\_mfontfeatures` and to the size-dependent features `+ssty=0`
if script size is asked or `+ssty=1` if scriptscriptsize is asked.
- If the fath family 1 is loaded then the family 2 and 3 is set by the same
- font because \TeX/ needs to read dimension information about generating
+ If the math family 1 is loaded then the family 2 and 3 are set by the same
+ font because \TeX/ needs to read dimension information about generating
math formulae from these three math families. All information needed by
\TeX/ is collected in single Unicode-math font.
\_cod -----------------------------
\_def\_umathname#1#2{"#1:\_mfontfeatures#2"}
-\_def\_mfontfeatures{mode=base;script=math;}
+\_def\_mfontfeatures{mode=base;script=math;}
\_def\_loadumathfamily #1 #2#3 {%
\_edef\_optsizesave{\_the\_optsize}%
@@ -108,35 +131,35 @@
\_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{+ssty=0;#3} at\_optsize \_scriptfont#1=\_mF
\_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi
\_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{+ssty=1;#3} at\_optsize\_scriptscriptfont#1=\_mF
- \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi
+ \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi
\_optsize=\_optsizesave \_relax
}
\_doc -----------------------------
Unicode math font includes all typical math alphabets together, user needs not to
- load more \TeX/ math families. These math aphabets are encoded by
+ load more \TeX/ math families. These math alphabets are encoded by
different parts of Unicode table. We need auxiliary macros for setting
mathcodes by selected math alphabet.
- \nl
+ \nl
\`\_umathrange` `{<from->-<to>}<class><family>\<first>` sets `\Umathcode`s
- of the characters in the interval `<from>-<to>` to `\<first>`,
+ of the characters in the interval `<from>-<to>` to `\<first>`,
`\<first>+1`, `\<first>+2`
- etc., but \`\_umathcharholes` are skipped
+ etc., but \`\_umathcharholes` are skipped
(`\_umathcharholes` are parts of the Unicode table not designed for math
- alphabets but they causes that the math alphabets are
+ alphabets but they cause that the math alphabets are
not continuously spread out in the table; I mean that the
designers were under the influence of drugs when they created
this part of the Unicode table).
- The `<from>-<to>` clause includes normal letters like `A-Z`.
+ The `<from>-<to>` clause includes normal letters like `A-Z`.
\nl
- \`\_umahrangegreek` `\<first>` is the same as
+ \`\_umahrangegreek` `\<first>` is the same as
`\_umathrange {<alpha>-<omega>}\<first>`.
\nl
- \`\_umahrangeGREEK` `\<first>` is the same as
+ \`\_umahrangeGREEK` `\<first>` is the same as
`\_umathrange {<Alpha>-<Omega>}\<first>`.
\nl
\`\_greekdef` `<control sequences> \_relax` defines each control sequence
- as a normal character with codes `\_umathnumB`, `\_umathnumB+1`,
+ as a normal character with codes `\_umathnumB`, `\_umathnumB+1`,
`\_umathnumB+2` etc. It is used for redefinig the contol sequences for
math Greek `\alpha`, `\beta`, `\gamma` etc.
\_cod -----------------------------
@@ -176,47 +199,42 @@
The \^`\loadmath` `{<Unicode-math font>}` macro loads math fonts and
-redefines all default math-codes using `\input unimath-codes.opm`.
+redefines all default math-codes using `\input unimath-codes.opm`.
If Unicode-math font is loaded then \^`\_mathloadingfalse`
-is set, so new UnicodeMath font isn't loaded until \^`\doloadmath` is used.
+is set, so the new Unicode-math font isn't loaded until \^`\doloadmath` is used.
\^`\loadboldmath` `{<bold-font>} \to {<normal-font>}` loads bold variant only
-if `<normal-font>` was sucessully loaded by the `\loadmath`. For example:
+if `<normal-font>` was sucessully loaded by the previous `\loadmath`. For example:
\begtt
\loadmath {[xitsmath-regular]}
\loadboldmath {[xitsmath-bold]} \to {[xitsmath-regular]}
\endtt
-
-You can combine more fonts, if you register them to another
-math families (5, 6, 7, etc.) in the `\normalmath` macro.
-
-The default value of `\normalmath` shows a combination of base Unicode Math
-font with 8bit Math font at family 4. See definition of `\script` macro where
-`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font
-accepts only codes less than 255.
-
-See \url{http://tex.stackexchange.com/questions/308749/} for more technical details.
+There are very few Unicode-math fonts with full \^`\boldmath` support.
+I know only XITSMath-Bold and KpMath-Bold. If \^`\loadboldmath` is not used
+then \"faked bold" created from \^`\normalmath` is used by default.
The \^`\loadmath` macro was succesfully tested on:
\begtt
\loadmath{[XITSMath-Regular]} ... XITS MATH
\loadmath{[latinmodern-math]} ... Latin Modern Math
-\loadmath{[texgyretermes-math]} ... TeXGyre Termes Math
-\loadmath{[texgyrebonum-math]} ... TeXGyre Bonum Math
-\loadmath{[texgyrepagella-math]} ... TeXGyre Pagella Math
+\loadmath{[texgyretermes-math]} ... TeXGyre Termes Math
+\loadmath{[texgyrebonum-math]} ... TeXGyre Bonum Math
+\loadmath{[texgyrepagella-math]} ... TeXGyre Pagella Math
\loadmath{[texgyreschola-math]} ... TeXGyre Schola Math
-\loadmath{[texgyredejavu-math]} ... TeXGyre DeJaVu Math
-\loadmath{[LibertinusMath-Regular]} ... Libertinus Math
+\loadmath{[texgyredejavu-math]} ... TeXGyre DeJaVu Math
+\loadmath{[LibertinusMath-Regular]} ... Libertinus Math
\loadmath{[FiraMath-Regular]} ... Fira Math
\loadmath{[Asana-Math]} ... Asana Math
+\loadmath{[KpMath-Regular]} ... KP fonts Math
\endtt
\secc Unicode-math macros preloaded in the format
\printdoc math-unicode.opm
+
\secc[unimath-codes] Macros and codes set when \code{\\loadmatfont} is processed
The file `unimath-codes.opm` is loaded when the \^`\loadmath` is used. The
diff --git a/macros/luatex/optex/base/more-macros.opm b/macros/luatex/optex/base/more-macros.opm
index e31f43e065..406139b16f 100644
--- a/macros/luatex/optex/base/more-macros.opm
+++ b/macros/luatex/optex/base/more-macros.opm
@@ -1,16 +1,16 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \eoldef {OpTeX useful macos <2020-05-22>} % preloaded in format
\_doc -----------------------------
We define \`\opinput` `{<file name>}` macro which
does `\input {<file name>}` but the catcodes are set to normal catcodes
- (like \OpTeX/ initializes them) and the catcodes setting are returned back to
+ (like \OpTeX/ initializes them) and the catcodes setting is returned back to
the current values when the file is read. You can use `\opinput`
in any situation inside the document and you will be sure that the file
is read correctly with correct catcode settings.
- In order to achieve this, we declare \`\optexcatcodes` catcode table
+ To achieve this, we declare \`\optexcatcodes` catcode table
and \`\plaintexcatcodes`. They save the commonly used catcode tables.
Note that `\catcodetable` is a part of \LuaTeX/ extension.
The catcodetable stack is implemented by \OpTeX/ macros.
@@ -19,7 +19,7 @@
the `<catcode table>`. The \`\restorectable` returns to the saved catcodes
from the catcode table stack.
- The `\opinput` works inside catcode table stack. It reads `\optexcatcodes`
+ The `\opinput` works inside the catcode table stack. It reads `\optexcatcodes`
table and stores it to \`\_tmpcatcodes` table.
This table is actually used during `\input` (maybe catcodes are
changed here). Finally, `\_restoretable` pops the stacks and returns
@@ -82,7 +82,7 @@
The \`\load` `[<filename-list>]` loads files specfied in
comma separated `<filename-list>`. The first space (after comma)
is ignored using the trick `#1#2,`: first parameter is unseparated.
- The `\load` macro saves the information about loaded files by setting
+ The `\load` macro saves information about loaded files by setting
`\_load:<filename>` as a defined macro.
If the \`\_afterload` macro is defined then it is run after `\_opinput`.
@@ -135,7 +135,7 @@
The macro defined by `\eoldef` cannot be used with its parameter inside
other macros because the catcode dancing is not possible here. But the
\`\bracedparam``\macro{<parameter>}` can be used here. The `\bracedparam`
- is a prefix which re-sets temporarily the `\macro` to a `\macro` with
+ is a prefix that re-sets temporarily the `\macro` to a `\macro` with
normal one parameter.
The \`\skiptoeol` macro reads the text to the end of the current line
@@ -167,7 +167,7 @@
Inline verbatim works in title sections.
The verbatim scanner of `\scatoeol` keeps category 7 for `^` in
- order to be able to use `^^J` as comment chracter which means that
+ order to be able to use `^^J` as comment character which means that
the next line continues.
\_cod -----------------------------
@@ -186,15 +186,26 @@
`<textA>` are not replaced if they are \"hidden" in braces, for example
`...{...<textA>...}...`. The category codes in the `<textA>` must exactly
match.
+
+ How it works: `\replstring\foo{<textA>}{<textB>}` prepares
+ `\_replacestringsA#1<textA>{...}` and runs
+ `\_replacestringsA<foo-body>?<textA>!<textA>`.
+ So, `#1` includes the first part of <foo-body> before first <textA>.
+ It is saved to \`\_tmptoks` and `\_replacestringsB` is run in a loop.
+ It finishes processing or appends the next part to `\_tmptoks` separated by
+ <textB> and continues loop. The final part of the macro removes the last `?`
+ from resulting `\_tmptoks` and defines a new version of the `\foo`.
\_cod -----------------------------
+\_newtoks\_tmptoks
\_catcode`!=3 \_catcode`?=3
\_def\_replstring #1#2#3{% \replstring #1{stringA}{stringB}
- \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}%
- \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}%
- \_ea\_replacestringsB\_fi}%
+ \_long\_def\_replacestringsA##1#2{\_tmptoks{##1}\_replacestringsB}%
+ \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_toksapp\_tmptoks{#3##1}%
+ \_ea\_replacestringsB\_fi}%
\_ea\_replacestringsA #1?#2!#2%
- \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1}
+ \_long\_def\_replacestringsA##1?{\_tmptoks{##1}\_edef#1{\_the\_tmptoks}}%
+ \_ea\_replacestringsA \_the\_tmptoks}
\_normalcatcodes
\_public \replstring ;
@@ -217,15 +228,12 @@
\nl
The `\_ea`\`\ignorept``\the<dimen>` expands to a decimal
number `\the<dimen>` but without `pt` unit.
- \nl
- The \`\ignoreit``<token>` just ignores the `<token>`.
\_cod -----------------------------
\_def\_removespaces #1 {\_isempty{#1}\_iffalse #1\_ea\_removespaces\_fi}
\_ea\_def \_ea\_ignorept \_ea#\_ea1\_detokenize{pt}{#1}
-\_def\_ignoreit#1{}
-\public \removespaces \ignorept \ignoreit ;
+\public \removespaces \ignorept ;
\_doc -----------------------------
You can use expandable \`\bp``{<dimen>}` convertor from
@@ -237,11 +245,11 @@
\endtt
You can use expandable \`\expr``{<expression>}` for analogical purposes.
It expands to the value of the `<expression>` at expand processor level
- with \`\_decdigits` digits after decimal point.
+ with \`\_decdigits` digits after the decimal point.
The `<expression>` can include `+-*/()` and decimal numbers in common syntax.
The usage of prefixed versions \`\_expr` or \`\_bp` is more recommended
- because user can re-define the control sequences `\expr` or `\bp`.
+ because a user can re-define the control sequences `\expr` or `\bp`.
\_cod -----------------------------
\_def\_decdigits{3} % digits after decimal point in \_bp and \_expr outputs.
@@ -257,7 +265,7 @@
\_doc ------------------
The pair {\`\_doc` ... \`\_cod`} is used for documenting macros and to
printing the technical documentation of the \OpTeX/. The syntax is:
- {\begtt
+ {\begtt \catcode`\<=13
\_doc <ignored text>
<documentation>
\_cod <ignored text>
diff --git a/macros/luatex/optex/base/multicolumns.opm b/macros/luatex/optex/base/multicolumns.opm
index 2305aacf5a..bf5b05f7db 100644
--- a/macros/luatex/optex/base/multicolumns.opm
+++ b/macros/luatex/optex/base/multicolumns.opm
@@ -1,19 +1,19 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \begmulti {Balanced columns <2020-03-26>} % preloaded in format
\_doc -----------------------------
This code is documented in detail in the \"\TeX/book naruby", pages 244--246,
free available, \url{http://petr.olsak.net/tbn.html}, but in Czech.
- Roughly speaking, macros complete all material between
+ Roughly speaking, macros complete all material between
\`\begmulti``<num-columns>` and \`\endmulti`
- into one `\vbox 6`. Then the macro measures the amount of free space at the current
- page using `\pagegoal` and `\pagtotal` and does `\vsplit` of `\vbox 6` to
- columns with height of such free space. This is done only if we have
- enought amount of material in `\vbox 6` to fill full page by columns.
- This is repeated in loop until we have less amount of material in `\vbox 6`.
- Then we run `\_balancecolumns` which balances the last part of columns.
- Each part of printed material is distributed to main vertical list as
+ into one `\vbox 6`. Then the macro measures the amount of free space at the current
+ page using `\pagegoal` and `\pagtotal` and does `\vsplit` of `\vbox 6` to
+ columns with a height of such free space. This is done only if we have
+ enough amount of material in `\vbox 6` to fill the full page by columns.
+ This is repeated in a loop until we have less amount of material in `\vbox 6`.
+ Then we run `\_balancecolumns` which balances the last part of the columns.
+ Each part of printed material is distributed to the main vertical list as
`\hbox{<columns>}` and we need not do any change in the output routine.
If you have paragraphs in `\begmulti`... `\endmulti` environment then
@@ -34,8 +34,8 @@
\_def\par{\_ifhmode\_endgraf\_global\_advance\_mullines by\_prevgraf\_fi}%
}
\_def\_endmulti{\_vskip-\_prevdepth\_vfil
- \_ea\_egroup\_ea\_baselineskip\_the\_baselineskip\_relax
- \_dimen0=.8\_maxdimen \_tmpnum=\_dimen0 \_divide\_tmpnum by\_baselineskip
+ \_ea\_egroup\_ea\_baselineskip\_the\_baselineskip\_relax
+ \_dimen0=.8\_maxdimen \_tmpnum=\_dimen0 \_divide\_tmpnum by\_baselineskip
\_splittopskip=\_baselineskip
\_setbox1=\_vsplit6 to0pt
%% \dimen1 := the free space on the page
@@ -53,7 +53,7 @@
\_doc -----------------------------
Splitting columns...
- \_cod -----------------------------
+ \_cod -----------------------------
\_def\_makecolumns{\_bgroup % full page, destination height: \dimen1
\_vbadness=20000 \_setbox1=\_hbox{}\_tmpnum=0
diff --git a/macros/luatex/optex/base/optex.ini b/macros/luatex/optex/base/optex.ini
index 96744b8e1c..9a4aeace8e 100644
--- a/macros/luatex/optex/base/optex.ini
+++ b/macros/luatex/optex/base/optex.ini
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
%% OpTeX ini file
%% Petr Olsak <project started from: Jan. 2020>
@@ -21,7 +21,7 @@
% OpTeX version
-\def\optexversion{Beta 0.18 Dec.2020}
+\def\optexversion{Beta 0.19 Jan.2021}
\def\fmtname{OpTeX}
% Engine testing:
diff --git a/macros/luatex/optex/base/optex.lua b/macros/luatex/optex/base/optex.lua
index 8201b8b306..9bc8d6f7d8 100644
--- a/macros/luatex/optex/base/optex.lua
+++ b/macros/luatex/optex/base/optex.lua
@@ -1,4 +1,4 @@
--- This is part of OpTeX project, see http://petr.olsak.net/optex
+-- This is part of the OpTeX project, see http://petr.olsak.net/optex
-- The basic lua functions and declarations used in \OpTeX/ are here
@@ -20,10 +20,9 @@ alloc = alloc or {}
--
-- An attribute allocator in Lua that cooperates with normal \OpTeX/ allocator.
local attributes = {}
-local attribute_max = registernumber("_maiattribute")
function alloc.new_attribute(name)
local cnt = tex.count["_attributealloc"] + 1
- if cnt > attribute_max then
+ if cnt > 65534 then
tex.error("No room for a new attribute")
else
tex.setcount("global", "_attributealloc", cnt)
@@ -33,6 +32,9 @@ function alloc.new_attribute(name)
end
end
--
+-- `provides_module` is needed by older version of luaotfload
+provides_module = function() end
+--
-- CALLBACKS
callback = callback or {}
--
@@ -341,6 +343,7 @@ end)
luatexbase = {
registernumber = registernumber,
attributes = attributes,
+ provides_module = provides_module,
new_attribute = alloc.new_attribute,
callback_descriptions = callback.callback_descriptions,
create_callback = callback.create_callback,
diff --git a/macros/luatex/optex/base/others.opm b/macros/luatex/optex/base/others.opm
index 225e54c37a..d96edc4dba 100644
--- a/macros/luatex/optex/base/others.opm
+++ b/macros/luatex/optex/base/others.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \uv {Miscenaleous <2020-05-22>} % preloaded in format
@@ -10,20 +10,18 @@
\_doc ----------------------------
The \`\lastpage` and \`\totalpages` get the information from the
- \^`\_currpage`. The \^`\_Xpage` from `.ref` file sets the \^`\_currpage`.
+ \^`\_currpage`. The \^`\_Xpage` from `.ref` file sets the \^`\_currpage`.
\_cod ----------------------------
-\_def\_totalpages {\_openref\_ea\_lastpageA\_currpage}
-\_def\_lastpage {\_openref\_ea\_lastpageB\_currpage}
-\_def\_lastpageA #1#2{#1}
-\_def\_lastpageB #1#2{#2}
+\_def\_totalpages {\_openref\_ea\_ignoresecond\_currpage}
+\_def\_lastpage {\_openref\_ea\_usesecond\_currpage}
\_def\_currpage {{0}{?}}
\_public \lastpage \totalpages ;
\_doc ----------------------------
We need \`\uv`, \`\clqq`, \`\crqq`, \`\flqq`, \`\frqq`, \`\uslang`, \`\ehyph`
- \`\chyph`, \`\shyph`, for backward compatibility with \csplain.
- Codes are set according to Unicode, because we are using Czech only in Unicode
+ \`\chyph`, \`\shyph`, for backward compatibility with \csplain.
+ Codes are set according to Unicode because we are using Czech only in Unicode
when \LuaTeX/ is used.
\_cod ----------------------------
@@ -36,18 +34,18 @@
\_def\uv#1{\clqq#1\crqq}
-\_let\uslang=\enlang \_let\ehyph=\enlang
+\_let\uslang=\enlang \_let\ehyph=\enlang
\_let\chyph=\cslang \_let\shyph=\sklang
\_let\csUnicode=\csPatt \_let\czUnicode=\csPatt \_let\skUnicode=\skPatt
\_doc ----------------------------
- The \`\letfont` was used in \csplain/ instead of `\fontlet`.
+ The \`\letfont` was used in \csplain/ instead of `\fontlet`.
\_cod ----------------------------
\_let \letfont = \_fontlet
\_doc ----------------------------
- Non breaking space in Unicode.
+ Non-breaking space in Unicode.
\_cod ----------------------------
\let ^^a0=~
@@ -63,7 +61,7 @@
We don't want to read `opmac.tex` unless `\input opmac` is specified.
\_cod ----------------------------
-\_def\OPmacversion{OpTeX}
+\_def\OPmacversion{OpTeX}
\_doc ----------------------------
We allow empty lines in math formulae. It is more comfortable.
@@ -76,29 +74,33 @@
for example `\lipsum[3]` or `\lipsum[112-121]`, max=150.
First usage of `\lipsum` reads the \LaTeX/ file `lipsum.ltd.tex`
+ by \`\_lipsumload`
and prints the selected paragraph(s). Next usages of `\lipsum`
prints the selected paragraph(s) from memory. This second and more
usages of `\lipsum` are fully expandable. If you want to have all
printings of `\lipsum` expandable, use dummy `\lipsum[0]` first.
+
+ `\lipsum` adds `\par` after each printed paragraph. If you don't need
+ such `\par` here, use \`\lipsumtext``[<number>]`.
+ This macro prints only one selected paragraph <number> and does not add `\par`.
\_cod ----------------------------
-\_def \_lipsum {%
- {\_long\_def\ProvidesFile##1[##2]##3{\_ifx\_par##3\_relax\_else \_ea##3\_fi}\_tmpnum=0
- \_def\NewLipsumPar{\_advance\_tmpnum by1
- \_afterassignment\_negativermnm \_sxdef{lips:\_the\_tmpnum}}%
- \_opinput {lipsum.ltd.tex}%
- \_global\_let \_lipsum=\_reallipsum
- }\_lipsum
-}
-\_def\_negativermnm{\_romannumeral-`\.}
-\_def\_reallipsum[#1]{\_lipsumA #1\_empty-\_empty\_end}
+\_def\_lipsumtext[#1]{\_lipsumload\_cs{_lip:#1}}
+\_def\_lipsum[#1]{\_lipsumA #1\_empty-\_empty\_end}
\_def\_lipsumA #1-#2\_empty#3\_end{%
- \_fornum #1..\_ifx^#2^#1\_else#2\_fi \_do {\_csname lips:##1\_endcsname \par}}
-
-\def\lipsum {\_lipsum}
-\def\lorem {\_lipsum}
+ \_fornum #1..\_ifx^#2^#1\_else#2\_fi \_do {\_lipsumtext[##1]\par}}
+\_def\_lipsumload{{%
+ \_setbox0=\_vbox{\_tmpnum=0 % vertical mode during \input lipsum.ltd.tex
+ \_def\ProvidesFile##1[##2]{}%
+ \_def\NewLipsumPar{\_advance\_tmpnum by1 \_sxdef{_lip:\_the\_tmpnum}}%
+ \_opinput {lipsum.ltd.tex}%
+ \_global\_let\_lipsumload=\_empty
+ }}}
+\_public \lipsum \lipsumtext ;
+\_let \lorem=\lipsum
\_endcode
+2021-01-04 \lipsumtext introduced
2020-05-22 \lipsum uses \fornum (expandable after first usage)
-2020-04-02 released \ No newline at end of file
+2020-04-02 released
diff --git a/macros/luatex/optex/base/outlines.opm b/macros/luatex/optex/base/outlines.opm
index 2f9a040881..d1082f9580 100644
--- a/macros/luatex/optex/base/outlines.opm
+++ b/macros/luatex/optex/base/outlines.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \outlines {PDF outlines <2020-03-12>} % preloaded in format
@@ -12,7 +12,7 @@
{\_let\_tocline=\_outlinesA
\_count0=0 \_count1=0 \_count2=0 \_count3=0 \_toclist % calculate numbers o childs
\_def\_outlinelevel{#1}\_let\_tocline=\_outlinesB
- \_tocrefnum=0 \_count0=0 \_count1=0 \_count2=0 \_count3=0
+ \_tocrefnum=0 \_count0=0 \_count1=0 \_count2=0 \_count3=0
\_toclist}% create outlines
\_fi
}
@@ -61,38 +61,38 @@ outlines. But we know only the level of each outline. The required data
should be calculated from TOC data. We use two steps over TOC data saved in
the `\_toclist` where each record is represented by one `\_tocline`.
-First step, the \`\outlines` macro sets `\_tocline` to \`\_outlinesA` and
-calculates the number of direct descendants of each record. Second step,
-the `\outlines` macro sets `\_tocline` to \`\_outlinesB` and it uses prepared
-data and create outlines.
+The first step, the \`\outlines` macro sets `\_tocline` to \`\_outlinesA` and
+calculates the number of direct descendants of each record. The second step,
+the `\outlines` macro sets `\_tocline` to \`\_outlinesB` and it uses prepared
+data and creates outlines.
-Each ouline is mapped to the control sequence of the type
+Each outline is mapped to the control sequence of the type
`\_ol:<num>` or `\_ol:<num>:<num>` or `\_ol:<num>:<num>:<num>` or etc.
-The first one is reserved for level 0, the second one for level 1 (chapters), third
-one for level 2 (sections) etc. The number of direct descentants will be stored
-in these macros after first step is finished. Each new outline of given level
-increases the `<num>` at given level. When the first step is processed then
-(above that) the `\_ol:..` sequence of the parent inceases its value too. The
+The first one is reserved for level 0, the second one for level 1 (chapters), the third
+one for level 2 (sections) etc. The number of direct descendants will be stored
+in these macros after the first step is finished. Each new outline of a given level
+increases the `<num>` at the given level. When the first step is processed then
+(above that) the `\_ol:..` sequence of the parent increases its value too. The
`_ol:...` sequences are implemented by `\_ol:\_count0:\_count1:\count2` etc.
For example, when section (level 2) is processed in the first step then we do:
\begtt
- \advance \count2 by 1
- % increases the mapping pointer of the type
- % \_ol:<\_count0:\_count1:\_count2> of this section
- \advance \<_ol:\_count0:\_count1> by 1
- % increases the number of descendants connected
+ \advance \count2 by 1
+ % increases the mapping pointer of the type
+ % \_ol:\_count0:\_count1:\_count2 of this section
+ \advance \_ol:\_count0:\_count1 by 1
+ % increases the number of descendants connected
% to the parent of this section.
\endtt
-When second step is processed, then we only read the stored data about the
-number of descentants. Ad we use it in `count` parameter of `\_pdfoutline`
+When the second step is processed, then we only read the stored data about the
+number of descendants. And we use it in `count` parameter of `\_pdfoutline`
primitive.
-For linking, we use the same links as in TOC, i.e. the `toc:\_the\_tocrefnum`
+For linking, we use the same links as in TOC, i.e. the `toc:\_the\_tocrefnum`
labels are used.
\`\insertoutline` `{<text>}` inserts one outline with zero direct descendants.
-It creates link destination of the type `oul:<num>` into the document
+It creates a link destination of the type `oul:<num>` into the document
(where \^`\insertoutline` is used) and the link itself is created too in the
outline.
diff --git a/macros/luatex/optex/base/output.opm b/macros/luatex/optex/base/output.opm
index b21144c300..8bf02af753 100644
--- a/macros/luatex/optex/base/output.opm
+++ b/macros/luatex/optex/base/output.opm
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \nopagenumbers {Output routine <2020-03-28>} % preloaded in format
\_doc -----------------------------
- \`\_optexoutput` is default output routine. You can create another...
+ \`\_optexoutput` is the default output routine. You can create another...
\_cod -----------------------------
\_output={\_optexoutput}
@@ -13,17 +13,17 @@
Default \`\_begoutput` and \`\_endoutput` is defined.
If you need another functionality implemented in the output routine, you can
\^`\addto``\_begoutput{...}` or \^`\addto``\_endoutput{...}`. The settings
- here is local in the `\output` group.
+ here are local in the `\output` group.
- The \`\_prepoffsets` can set `\hoffset` differently for left or right
+ The \`\_prepoffsets` can set `\hoffset` differently for the left or right
page. It is re-defined by the \^`\margins` macro..
The \^`\_regmark` tokens list includes accumulated `#2` from the \^`\regmacro`.
- Logos and another macros are re-defined here (locally) for their usage
+ Logos and other macros are re-defined here (locally) for their usage
in headlines or footlines.
\_cod -----------------------------
-\_def \_begoutput{\_incr\_gpageno
+\_def \_begoutput{\_incr\_gpageno
\_immediate\_wref\_Xpage{{\_the\_gpageno}{\_folio}}%
\_setxhsize \_prepoffsets \_the\_regmark}
\_def \_endoutput{\_advancepageno
@@ -34,40 +34,40 @@
\_doc -----------------------------
The `\hsize` value can be changed at various places in the document but
- we need to have constant value \`\_xhsize` in output routine
+ we need to have a constant value \`\_xhsize` in the output routine
(for headlines and footlines, for instance). This value is set
- from current value of `\hsize` when \`\_setxhsize` macro is called.
- This macro destroys itself, so the value is set only once. Typicaly it is
+ from the current value of `\hsize` when \`\_setxhsize` macro is called.
+ This macro destroys itself, so the value is set only once. Typically it is
done when first \^`\_optexoutput` routine is called (see \^`\_begoutput`).
- Or it is called at begining of the \^`\begtt`...`\endtt` environment before
- `\hsize` value is eventually changed by user in this environment.
+ Or it is called at the begining of the \^`\begtt`...`\endtt` environment before
+ `\hsize` value is eventually changed by the user in this environment.
\_cod -----------------------------
\_newdimen \_xhsize
\_def\_setxhsize {\_global\_xhsize=\_hsize \_global\_let\_setxhsize=\_relax}
\_doc -----------------------------
- \`\gpageno` counts pages from one in whole document
+ \`\gpageno` counts pages from one in the whole document
\_cod -----------------------------
\_newcount\_gpageno
\_public \gpageno ;
\_doc -----------------------------
- The \`\_completepage` is similar what plain \TeX/ does in its output routine.
+ The \`\_completepage` is similar to what plain \TeX/ does in its output routine.
New is only \`\_backgroundbox`. It is `\vbox` with zero height with its
- contents (from \^`\pgbackground`) llaped down. It is shifted directly to the
- left-upper corner of the paper.
+ contents (from \^`\pgbackground`) extended down. It is shifted directly to the
+ left-upper corner of the paper.
The \`\_ensureblack` sets the typesetting of its parameter locally to `\Black`
color. We needn't do this if colors are never used in the document. So,
- default value of the `\_ensureblack` macro is empty. But first usage of
+ the default value of the `\_ensureblack` macro is empty. But the first usage of
color macros in the document re-defines `\_ensureblack`.
- See the section~\ref[colors] for more details.
+ See the section~\ref[colors] for more details.
\_cod -----------------------------
\_def\_completepage{\_vbox{%
- \_istoksempty \_pgbackground
+ \_istoksempty \_pgbackground
\_iffalse \_ensureblack{\_backgroundbox{\_the\_pgbackground}}\_nointerlineskip \_fi
\_ensureblack{\_makeheadline}%
\_vbox to\_vsize {\_boxmaxdepth=\_maxdepth \_pagecontents}% \pagebody in plainTeX
@@ -78,11 +78,11 @@
\_def \_backgroundbox #1{\_moveleft\_hoffset\_vbox to\_zo{\_kern-\_voffset #1\_vss}}
\_doc -----------------------------
- \`\_makeheadline` creates `\vbox to0pt` with its contents (the \^`\headline`)
- shifted by \^`\headlinedist` up.
+ \`\_makeheadline` creates `\vbox to0pt` with its contents (the \^`\headline`)
+ shifted by \^`\headlinedist` up.
\_cod -----------------------------
-\_def\_makeheadline {\_istoksempty \_headline \_iffalse
+\_def\_makeheadline {\_istoksempty \_headline \_iffalse
\_vbox to\_zo{\_vss
\_baselineskip=\_headlinedist \_lineskiplimit=-\_maxdimen
\_hbox to\_xhsize{\_the\_headline}\_hbox{}}\_nointerlineskip
@@ -93,20 +93,20 @@
The \`\_makefootline` appends the \^`\footline` to the page-body box.
\_cod -----------------------------
-\_def\_makefootline{\_istoksempty \_footline \_iffalse
- \_baselineskip=\_footlinedist
+\_def\_makefootline{\_istoksempty \_footline \_iffalse
+ \_baselineskip=\_footlinedist
\_lineskiplimit=-\_maxdimen \_hbox to\_xhsize{\_the\_footline}
\_fi
}
\_doc -----------------------------
The \`\_pagecontents` is similar as in plain \TeX/. The only differnece is
- that the \`\_pagedest` is inserted at the top of `\_pagecontents` and
+ that the \`\_pagedest` is inserted at the top of `\_pagecontents` and
\^`\_ensureblack` is applied to the \^`\topins` and \^`\footins` material.\nl
The \`\_footnoterule` is defined here.
\_cod -----------------------------
-\_def\_pagecontents{\_pagedest % destination of the page
+\_def\_pagecontents{\_pagedest % destination of the page
\_ifvoid\_topins \_else \_ensureblack{\_unvbox\_topins}\_fi
\_dimen0=\_dp255 \_unvbox255 % open up \box255
\_ifvoid\_footins \_else % footnote info is present
@@ -115,7 +115,7 @@
\_kern-\_dimen0 \_vskip \_pgbottomskip
}
\_def \_pagedest {{\_def\_destheight{25pt}\_dest[pg:\_the\_gpageno]}}
-\_def \_footnoterule {\_kern-3pt \_hrule width 2truein \_kern 2.6pt }
+\_def \_footnoterule {\_kern-3pt \_hrule width 2truein \_kern 2.6pt }
\_doc -----------------------------
\`\pageno`, \`\folio`, \`\nopagenumbers`, \`\advancepageno`
@@ -130,7 +130,7 @@
\_def \_folio {\_ifnum\_pageno<0 \_romannumeral-\_pageno \_else \_number\_pageno \_fi}
\_def \_nopagenumbers {\_footline={}}
\_def \_advancepageno {%
- \_ifnum\_pageno<0 \_global\_advance\_pageno by-1 \_else \_incr\_pageno \_fi
+ \_ifnum\_pageno<0 \_global\_advance\_pageno by-1 \_else \_incr\_pageno \_fi
} % increase |pageno|
\_def \_raggedbottom {\_topskip=\_dimexpr\_topskip plus60pt \_pgbottomskip=0pt plus1fil\_relax}
\_def \_normalbottom {\_topskip=\_dimexpr\_topskip \_pgbottomskip=0pt\_relax}
@@ -140,10 +140,10 @@
\_doc -----------------------------
Macros for footnotes are the same as in plain \TeX. There is only one
difference: \`\vfootnote` is implemented as \`\_opfootnote` with empty
- parameter `#1`. This parameter should do a local settings inside
+ parameter `#1`. This parameter should do local settings inside
the \`\footins` group and it does it when `\fnote` macro is used.\nl
The `\_opfootnote` nor `\vfootnote` don't take the footnote text
- as a parameter. This is due to user can do catcode settings (like inline
+ as a parameter. This is due to a user can do catcode settings (like inline
verbatim) in the footnote text. This idea is adapted from plain \TeX.\nl
The \`\footnote` and \`\footstrut` is defined as in plain \TeX/.
\_cod -----------------------------
@@ -161,7 +161,7 @@
\_splittopskip=\_ht\_strutbox % top baseline for broken footnotes
\_splitmaxdepth=\_dp\_strutbox \_floatingpenalty=20000
\_textindent{#2}\_footstrut
- \_isnextchar \_bgroup
+ \_isnextchar \_bgroup
{\_bgroup \_aftergroup\_vfootA \_afterassignment\_ignorespaces \_let\_next=}{\_vfootB}%
}
\_def\_vfootA{\_unskip\_strut\_isnextchar\_colorstackpop\_closefncolor\_vfootF}
@@ -176,7 +176,7 @@
\footins \footnote \vfootnote \footstrut ;
\_doc -----------------------------
- The \`\topins` macros
+ The \`\topins` macros
\`\topinsert`, \`\midinsert`, \`\pageinsert`, \`\endinsert`
are the same as in plain \TeX/.
\_cod -----------------------------
@@ -205,8 +205,8 @@
\_public \topins \topinsert \midinsert \pageinsert \endinsert ;
\_doc -----------------------------
- The \`\draft` macro is an example of usage `\_pgbackground` to create
- water color marks.
+ The \`\draft` macro is an example of usage `\_pgbackground` to create
+ watercolor marks.
\_cod -----------------------------
\_def \_draft {\_pgbackground={\_draftbox{\_draftfont DRAFT}}%
@@ -214,7 +214,7 @@
\_global\_let\_draftfont=\_draftfont
}
\_def \_draftbox #1{\_setbox0=\_hbox{#1}%
- \_kern.5\_vsize \_kern4.5\_wd0
+ \_kern.5\_vsize \_kern4.5\_wd0
\_hbox to0pt{\_kern.5\_xhsize \_kern-1\_wd0
\_pdfsave \_pdfrotate{55}\_pdfscale{10}{10}%
\_hbox to0pt{\_localcolor\LightGrey \_box0\_hss}%
@@ -231,9 +231,9 @@ The output routine \^`\_optexoutput` is similar as in plain \TeX. It does:
\begitems
* \^`\_begoutput` which does:
\begitems
- * increments \^`\gpageno`,
- * prints `\_Xpage{<gpageno>}{<pageno>}` to the `.ref` file
- (if \^`\openref` is active),
+ * increments \^`\gpageno`,
+ * prints `\_Xpage{<gpageno>}{<pageno>}` to the `.ref` file
+ (if \^`\openref` is active),
* calculates `\hoffset`,
* sets local meaning of macros used in headlines/footlines (see \^`\regmacro`).
\enditems
@@ -243,14 +243,14 @@ The output routine \^`\_optexoutput` is similar as in plain \TeX. It does:
* headline box by \^`\_makeheadline`, if the \^`\headline` is nonempty,
* `\vbox to\vsize` of \^`\_pagecontents` which cosnists of --
\begitems
- * \^`\_pagedest`, the page destination `pg:<gpageno>` for hyperlinks is created here,
+ * \^`\_pagedest`, the page destination `pg:<gpageno>` for hyperlinks is created here,
* \^`\topins` box if non-empty (from \^`\topinsert`s),
* `\box255` with completed vertical material from main vertical mode,
* \^`\_footnoterule` and \^`\footins` box if nonempty (from \^`\fnote`, \^`\footnote`),
* \^`\pgbottomskip` (default is 0\,pt).
\enditems
* footline box by `\_makefootline`, if the \^`\footline` is nonempty
- \enditems
+ \enditems
* \^`\_endoutput` which does:
\begitems
* increments \^`\pageno` using \^`\advancepageno`
diff --git a/macros/luatex/optex/base/parameters.opm b/macros/luatex/optex/base/parameters.opm
index 75087be950..addc6e9b8e 100644
--- a/macros/luatex/optex/base/parameters.opm
+++ b/macros/luatex/optex/base/parameters.opm
@@ -1,6 +1,6 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \normalbaselineskip {Parameter settings <2020-03-17>} % preloaded in format
+\_codedecl \normalbaselineskip {Parameter settings <2020-03-17>} % preloaded in format
\_doc -----------------------------
\secc Primitive registers
@@ -9,7 +9,7 @@
\_parindent=20pt % indentation of paragraphs
\_pretolerance=100 % parameters used in paragraph breaking algorithm
-\_tolerance=200
+\_tolerance=200
\_hbadness=1000
\_vbadness=1000
\_doublehyphendemerits=10000
@@ -28,7 +28,7 @@
\_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
+\_predisplaypenalty=10000 % above display math
\_postdisplaypenalty=0 % below display math
\_delimiterfactor=901 % parameter for scaling delimiters
\_delimitershortfall=5pt
@@ -49,7 +49,7 @@
\_doc -----------------------------
Note that `\topskip` and `\splittopskip` are changed when first
- `\typosize` sets the main values (default font size and default
+ `\typosize` sets the main values (default font size and default
`\baselineskip`).
\_cod -----------------------------
@@ -80,10 +80,10 @@
\_def\_nonfrenchspacing{\_sfcode`\.=3000 \_sfcode`\?=3000 \_sfcode`\!=3000
\_sfcode`\:=2000 \_sfcode`\;=1500 \_sfcode`\,=1250 }
-\_public \normalbaselines \frenchspacing \nonfrenchspacing
- \smallskipamount \medskipamount \bigskipamount
+\_public \normalbaselines \frenchspacing \nonfrenchspacing
+ \smallskipamount \medskipamount \bigskipamount
\normalbaselineskip \normallineskip \normallineskiplimit
- \jot \interdisplaylinepenalty \interfootnotelinepenalty ;
+ \jot \interdisplaylinepenalty \interfootnotelinepenalty ;
\_doc -----------------------------
\secc Different settings than in plain \TeX/
@@ -91,8 +91,8 @@
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 the Europe.
+ 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 -----------------------------
@@ -100,14 +100,14 @@
\_normalbaselines % baseline setting, 10 pt font size
\_doc -----------------------------
- Different values than in plain \TeX/ have following primitive registers.
+ Different values than in plain \TeX/ have the following primitive registers.
We prohibit orphans, set more information for tracing boxes, set page origin
- to upper left corner of the paper (no at 1\,in, 1\,in coordinates)
+ 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 aparagraph building algoritmh
- % we need not to keep the compatibility with old documents
+\_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
@@ -118,10 +118,10 @@
\_tracinglostchars=2 % missing chracter warnings on terminal too
\_outputmode=1 % PDF ouput
-\_pdfvorigin=0pt % orgin is exatly at left upper corner
+\_pdfvorigin=0pt % orgin is exatly at left upper corner
\_pdfhorigin=0pt
\_hoffset=25mm % margins are 2.5cm, no 1in
-\_voffset=25mm
+\_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
@@ -134,13 +134,13 @@
\_def\_plaintexsetting{%
\_emergencystretch=0pt
- \_clubpenalty=150
+ \_clubpenalty=150
\_widowpenalty=150
\_pdfvorigin=1in
\_pdfhorigin=1in
\_hoffset=0pt
\_voffset=0pt
- \_hsize=6.5in
+ \_hsize=6.5in
\_vsize=8.9in
\_pagewidth=8.5 true in
\_pageheight=11 true in
@@ -151,27 +151,25 @@
\_doc -----------------------------
\secc[oparams] \OpTeX/ parameters
- The main principle how to configure \OpTeX/ is not to use only 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 important difference: all "string-like"
+ 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 user sets parameter by unprotected control sequence,
- an \OpTeX/ macro can read {\em the same data} using protected control sequence.
- If user re-defines such unprotected control sequence (because he/she does
- know about it) then nothing bad happens.
+ 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/ is able to find them). If you set non-empty value to
+ 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.
+ current directory and the image files are stored here.
\_cod -----------------------------
\_newtoks\_picdir
@@ -184,53 +182,53 @@
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 height is given, width is calculated. If both
+ 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 to set these
+ 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 another images. But there exist many
+ 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\_picwidth \_picwidth=0pt \_let\picw=\_picwidth
\_newdimen\_picheight \_picheight=0pt
\_public \picwidth \picheight ;
\_doc -----------------------------
- The \`\everytt` is token list used in
+ 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 scanner of verbatim text is started.
- Your macros should influence scanner (catcode settings) or printing
+ 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.
+ after `\begtt` locally only for this environment.
- The \`\everyintt` token list does similar work
+ The \`\everyintt` token list does similar work
but acts in the in-line verbatim
text processed by a pair of `\activettchar` characters or by `\code{<text>}`.
You can set `\everyintt={\Red}` for example if you want in-line verbatim
in red color.
\_cod -----------------------------
-\_newtoks\_everytt
+\_newtoks\_everytt
\_newtoks\_everyintt
\_public \everytt \everyintt ;
\_doc -----------------------------
- The \`\ttline` is used
+ 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 have numbered lines from `\ttline+1`. The `\ttline`
- register is re-set to new value after a code piece is printed, so next
+ 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
- shows the line numbers of inputted file. If `\ttline`\code{<-1}
+ show the line numbers of inputted file. If `\ttline`\code{<-1}
then no line numbers are printed.
\_cod -----------------------------
@@ -238,36 +236,36 @@
\_public \ttline ;
\_doc -----------------------------
- The \`\ttindent` gives default indentation
+ 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 right.
- Despite to the \^`\ttindent`, it does not shift the line numbers, only
+ 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 table of contents,
+ 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
+ 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`.
+ you should say `\ttindent=\parindent` and `\iindent=\parindent`.
\_cod -----------------------------
\_newdimen\_ttindent \_ttindent=\_parindent % indentation in verbatim
-\_newdimen\_ttshift
+\_newdimen\_ttshift
\_newdimen\_iindent \_iindent=\_parindent
\_public \ttindent \ttshift \iindent ;
\_doc -----------------------------
- The tabelator `^^I` has its category code like space: it behaves as a
- space in normal text. This is normal plain \TeX/ setting.
+ 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<dimen>` where `<dimen>`
- is the width of \`\tabspaces` spaces.
+ is the width of \`\tabspaces` spaces.
Default `\tabspaces=3` means
- that tabelator behaves like three spaces in multiline verbatim.
+ that tabulator behaves like three spaces in multiline verbatim.
\_cod -----------------------------
\_newcount \_tabspaces \_tabspaces=3
@@ -278,22 +276,22 @@
`\_hicolors<name>` declared in the file `hisyntax-<name>.opm`.
The user can give his/her preferences about colors for
syntax highlighting by this tokens list.
- Full color set must be declared here.
+ The full color set must be declared here.
\_cod -----------------------------
-\_newtoks\_hicolors
+\_newtoks\_hicolors
\_public \hicolors ;
\_doc -----------------------------
- The default item mark used between `\begitems` and `\enditems` is bullet.
- The \`\defaultitem` tokens list declare this default item mark.
+ 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 group is opened by
\nl
- The \`\ilevel` keeps the value of current nesting level of the items list.
+ The \`\everylist` tokens list is applied after the group is opened by
+ \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`.
@@ -317,7 +315,7 @@
The `\begmulti` `\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 definite result of columns width.
+ gives the definite result of the width of the columns.
\_cod ----------------------------
\_newdimen\_colsep \_colsep=20pt % space between columns
@@ -325,7 +323,7 @@
\_doc -----------------------------
Each line in the Table of contents is printed in a group.
- The \`\everytocline` tokens list is processed here before
+ The \`\everytocline` tokens list is processed here before
the internal `\_tocl:<num>` macro which starts printing the line.
\_cod -----------------------------
@@ -335,20 +333,25 @@
\_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 style file here or you can modify the
+ 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 a specific macros used in your `.bib` file.
+ 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.
+ Index item when printing the Index.
\_cod -----------------------------
\_newtoks\_everyii
@@ -358,21 +361,21 @@
The \`\everymnote` is used in the `\mnote` group before `\noindent` which
immediately precedes marginal note text.
\nl
- The \`\mnotesize` is horizontal size of the marginal notes.
+ 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
+\_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 follows. 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 empty list after the table is printed.
+ 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.
@@ -381,29 +384,29 @@
\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
+ 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
+ \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
+ \`\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
+ \`\tsize` is virtual unit of the width of paragraph-like table items when
`\table pxto<size>` is used.
\_cod -----------------------------
-\_newtoks\_everytable \_newtoks\_thistable
+\_newtoks\_everytable \_newtoks\_thistable
\_newtoks\_tabiteml \_newtoks\_tabitemr \_newtoks\_tabstrut
\_newdimen\_tablinespace \_newdimen\_vvkern \_newdimen\_hhkern \_newdimen\_tsize
-\_newskip\_tabskipl \_newskip\_tabskipr
+\_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}
@@ -412,26 +415,26 @@
\_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
+\_tabskipl=0pt\_relax % \tabskip used before first column
\_tabskipr=0pt\_relax % \tabskip used after the last column
-\_public \everytable \thistable \tabiteml \tabitemr \tabstrut \tablinespace
+\_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 this macro beahaves
- like in Plain \TeX. The \`\eqspace` is horizontal space put
- between equation systems if more columns in \^`\eqalign` is used.
+ 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}
+\_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 right matrix filler is directly set to `\hfil`.
+ value does centering because the right matrix filler is directly set to `\hfil`.
\_cod -----------------------------
\_newtoks \_lmfil \_lmfil={\_hfil}
@@ -458,15 +461,15 @@
\_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 bottom of
- page-text and `\footline` is \`\footlinedist`.
+ 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 first line in page-text have distance
+ 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 from plain \TeX/.
+ Default values are inspired by plain \TeX/.
\_cod -----------------------------
\_newdimen \_headlinedist \_headlinedist=14pt
@@ -474,8 +477,8 @@
\_public \headlinedist \footlinedist ;
\_doc -----------------------------
- The \`\pgbottomskip` is inserted to the page bottom
- in the output routine. You can set a less tolerance here than
+ 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 -----------------------------
@@ -489,8 +492,8 @@
processing. Example of usage:
\begtt
\headline={} \nexptages={\headline={\rmfixed \firstmark \hfil}}
- \endtt
- This example sets current page with empty headline, but next pages have
+ \endtt
+ This example sets current page with empty headline, but next pages have
non-empty headlines.
\_cod -----------------------------
@@ -518,15 +521,36 @@
\_newtoks \_ovalparams
\_newtoks \_circleparams
-%\_ovalparams={\_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+%\_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
+%\_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``{<data>}`.
+ \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, <cnv-to-html-data>}
+ \cnvinfo {type=markdown, <cnv-to-markdown-data>}
+ \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 %----------------------------------------------------
@@ -537,25 +561,25 @@ controlled by {\em parameters}. The parameters are
* registers declared and used by \OpTeX/ macros.
\enditems
Both groups of registers have their type: number, dimension, skip, token
-list.
+list.
The registers are represented by their names (control sequences). If the user
-re-defines such control sequence then the appropriate register exists
+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 such case. \OpTeX/ declares two control sequences
-for each register: prefixed and unprefixed. \OpTeX/ macros use only
-prefixed variants of control sequences. The user should use unprefixed variant
-with the same meaning and set or read values of registers using the
-unprefixed variant. If the user re-defines the unprefixed control sequence of
+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 is only few parameters declared by \OpTeX/ macros. All of them
-%are listed in this section. This is desired feature of the \OpTeX/.
+%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 wich cannot be controlled by parameters listed here then you
-%can copy the appropriate \OpTeX/ macro to your macro file and you
+%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 declares the design of the document.
+%macros which declare the design of the document.
\_endinput
diff --git a/macros/luatex/optex/base/pdfuni-string.opm b/macros/luatex/optex/base/pdfuni-string.opm
index a289aae731..f9e28582d5 100644
--- a/macros/luatex/optex/base/pdfuni-string.opm
+++ b/macros/luatex/optex/base/pdfuni-string.opm
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \pdfunidef {PDFunicode strings for outlines <2020-03-12>} % preloaded in format
\_doc -----------------------------
- The \`\_octalprint` is lua script which prints the character code in the
+ The \`\_octalprint` is a Lua script that prints the character code in the
octal notation.
\_cod -----------------------------
@@ -24,8 +24,8 @@
according to current values on selected macros from `\_regoul`. Then
\`\_removeoutmath` converts `..$x^2$..` to `..x^2..`, i.e removes dollars.
Then \`\_removeoutbraces` converts `..{x}..` to `..x..`.
- Finaly, the <text> is detokenized, spaces are preprocessed using \^`\replstring`
- and then the \`\_pdfunidefB` is repeated on each character. It calls the
+ Finally, the <text> is detokenized, spaces are preprocessed using \^`\replstring`
+ and then the \`\_pdfunidefB` is repeated on each character. It calls the
`\directlua` chunk to print octal numbers in the macro \^`\_octalprint`.
\_cod -----------------------------
@@ -50,11 +50,11 @@
\_ea\_def\_ea#1\_ea{\_out}
}
\_def\_pdfunidefB#1{%
- \_ifx^#1\_else
+ \_ifx^#1\_else
\_tmpnum=`#1
\_pdfunidefC{\_luaescapestring{#1}}%
\_ea\_pdfunidefB \_fi
-}
+}
\_def\_pdfunidefC #1{\_edef\_out{\_out \\\_ea\_octalprint\_ea{\_the\_tmpnum}{#1}}}
\_def\_removeoutbraces #1#{#1\_removeoutbracesA}
@@ -62,12 +62,12 @@
\_def\_removeoutmath #1$#2${#1\_ifx\_end#2\_else #2\_ea\_removeoutmath\_fi}
\_doc -----------------------------
- The \`\_prepinverb``<macro><separator>{<text>}`,
+ The \`\_prepinverb``<macro><separator>{<text>}`,
e.g.\ `\_prepinverb\tmpb|{aaa |bbb| cccc |dd| ee}`
does `\def\tmpb{<su>{aaa }bbb<su>{ cccc }dd<su>{ ee}}` where
<su> is `\scantextokens\unexpanded`. It means that in-line verbatim
are not argument of `\scantextoken`. First `\edef\tmpb` tokenizes again
- the <text> but not the parts which were in the the in-line verbatim.
+ the <text> but not the parts which were in the the in-line verbatim.
\_cod -----------------------------
\_def\_prepinverb#1#2#3{\_def#1{}%
@@ -92,21 +92,21 @@
\_endcode % --------------------------------
There are only two encodings for PDF strings (used in PDFoutlines, PDFinfo
-etc.). First one is PDFDocEncoding which is one-byte encoding, but most
+, etc.). The first one is PDFDocEncoding which is one-byte encoding, but most
Czech or Slovak characters are missing here.
-The second encoding is PDFunicode encoding wich is implemented in this file.
-This encoding is \TeX/-discomfortable, because it looks like
+The second encoding is PDFunicode encoding which is implemented in this file.
+This encoding is \TeX/-discomfortable because it looks like
\begtt
\376\377\000C\000v\000i\001\015\000e\000n\000\355\000\040\000j\000e\000\040
-\000z\000\341\000t\001\033\001\176
+\000z\000\341\000t\001\033\001\176
\endtt
-This example is real encoding of the string "Cvičení je zátěž". You can see
+This example is the real encoding of the string "Cvičení je zátěž". You can see
that this is UTF-16 encoding (two bytes per character) with two starting
bytes FEFF. Moreover, each byte is encoded by three octal digits preceded by
-backslash. The only exception is the visible ASCII character encoding: such
+a backslash. The only exception is the visible ASCII character encoding: such
a character is encoded by its real byte preceded by `\000`.
diff --git a/macros/luatex/optex/base/plain-macros.opm b/macros/luatex/optex/base/plain-macros.opm
index 7d8815f247..b4569ee969 100644
--- a/macros/luatex/optex/base/plain-macros.opm
+++ b/macros/luatex/optex/base/plain-macros.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \magstep {Macros from plain TeX <2020-02-14>} % preloaded in format
@@ -20,16 +20,16 @@
The shortcuts `\chardef\@one` is not defined in \OpTeX/. Use normal
numbers instead of such obscurities.
\nl
- The \`\magstep` and \`\magstephalf` are
+ The \`\magstep` and \`\magstephalf` are
defined with `\space`, (no `\relax`), in order to be expandable.
\_cod -----------------------------
-
+
\_def \_magstephalf{1095 }
\_def \_magstep#1{\_ifcase#1 1000\_or 1200\_or 1440\_or 1728\_or 2074\_or 2488\_fi\_space}
\_public \magstephalf \magstep ;
\_doc -----------------------------
- Plain \TeX/ basic macros and control sequences.
+ Plain \TeX/ basic macros and control sequences.
\`\endgraf`, \`\endline`.
The `^^L` is not defined in \OpTeX/ because it is obsolete.
\_cod -----------------------------
@@ -58,11 +58,11 @@
\_public \obeylines \obeyspaces ;
\_doc -----------------------------
- Spaces.
- \`\thinspace`, \`\negthinspace`, \`\enspace`, \`\enskip`,
- \`\quad`, \`\qquad`, \`\smallskip`,
+ Spaces.
+ \`\thinspace`, \`\negthinspace`, \`\enspace`, \`\enskip`,
+ \`\quad`, \`\qquad`, \`\smallskip`,
\`\medskip`, \`\bigskip`, \`\nointerlineskip`, \`\offinterlineskip`,
- \`\topglue`, \`\vglue`, \`\hglue`, \`\slash`.
+ \`\topglue`, \`\vglue`, \`\hglue`, \`\slash`.
\_cod -----------------------------
\_protected\_def\_thinspace {\_kern .16667em }
@@ -94,8 +94,8 @@
\_doc -----------------------------
Penalties macros:
- \`\break`, \`\nobreak`, \`\allowbreak`, \`\filbreak`, \`\goodbreak`,
- \`\eject`, \`\supereject`, \`\dosupereject`,
+ \`\break`, \`\nobreak`, \`\allowbreak`, \`\filbreak`, \`\goodbreak`,
+ \`\eject`, \`\supereject`, \`\dosupereject`,
\`\removelastskip`, \`\smallbreak`, \`\medbreak`, \`\bigbreak`.
\_cod -----------------------------
@@ -121,8 +121,8 @@
\_doc -----------------------------
Boxes.
- \`\line`, \`\leftline`, \`\rightline`, \`\centerline`, \`\rlap`, \`\llap`,
- \`\underbar`.
+ \`\line`, \`\leftline`, \`\rightline`, \`\centerline`, \`\rlap`, \`\llap`,
+ \`\underbar`.
\_cod -----------------------------
\_def \_line {\_hbox to\_hsize}
@@ -172,7 +172,7 @@
\_def \_itemitem {\_par\_indent \_hangindent2\_parindent \_textindent}
\_def \_narrower {\_advance\_leftskip\_parindent
\_advance\_rightskip\_parindent}
-\_def \_raggedright {\_rightskip=0pt plus2em
+\_def \_raggedright {\_rightskip=0pt plus2em
\_spaceskip=.3333em \_xspaceskip=.5em\_relax}
\_def \_ttraggedright {\_tt \_rightskip=0pt plus2em\_relax} % for use with \tt only
\_def \_leavevmode {\_unhbox\_voidbox} % begins a paragraph, if necessary
@@ -181,10 +181,10 @@
\_doc -----------------------------
Few character codes are set for backward compatibility. But old obscurities
- (from plain TeX) based on \`\mathhexbox`
- are not supported -- an error message and recommendation
- to directly using of the desired character is implemented by the
- \`\_usedirectly` macro).
+ (from plain TeX) based on \`\mathhexbox`
+ are not supported -- an error message and recommendation
+ to directly using the desired character is implemented by the
+ \`\_usedirectly` macro).
The user can re-define these control sequences of course.
\_cod -----------------------------
@@ -208,7 +208,7 @@
\_def\L{\_errmessage{\_usedirectly Ł}}
%\def\_{\_ifmmode \kern.06em \vbox{\hrule width.3em}\else _\fi} % obsolete
\_def\_{\_hbox{_}}
-\_def\dag{\_errmessage{\_usedirectly †}}
+\_def\dag{\_errmessage{\_usedirectly †}}
\_def\ddag{\_errmessage{\_usedirectly ‡}}
%\_def\copyright{\_errmessage{\_usedirectly ©}}
\_def\copyright{©} % << example, what to do
@@ -220,13 +220,13 @@
\_public \mathhexbox ;
\_doc -----------------------------
- Accents.
+ Accents.
The macros \`\ooalign`, \`\d`, \`\b`, \`\c`, \`\dots`,
are defined for backward compatibility.
\_cod -----------------------------
\_def \_oalign #1{\_leavevmode\_vtop{\_baselineskip=\_zo \_lineskip=.25ex
- \_ialign{##\_crcr#1\_crcr}}}
+ \_ialign{##\_crcr#1\_crcr}}}
\_def \_oalignA {\_lineskiplimit=\_zo \_oalign}
\_def \_ooalign {\_lineskiplimit=-\_maxdimen \_oalign} % chars over each other
\_def \_shiftx #1{\_dimen0=#1\_kern\_ea\_ignorept \_the\_fontdimen1\_font
@@ -240,11 +240,11 @@
\_public \oalign \ooalign \d \b \c \dots ;
\_doc -----------------------------
- The accents commands like `\v`, `\.`, `\H`, etc. are not defined. Use the
- accented characters directly -- it is best solution. But you can use the
+ The accent commands like `\v`, `\.`, `\H`, etc. are not defined. Use the
+ accented characters directly -- it is the best solution. But you can use the
macro \`\oldaccents` which defines accented macros.
\nl
- Much more usable is to define these control sequences to other purposes.
+ Much more usable is to define these control sequences for other purposes.
\_cod -----------------------------
\_def \_oldaccents {%
@@ -295,7 +295,7 @@
\_doc -----------------------------
The plain \TeX/ macros
- \`\hrulefill`, \`\dotfill`, \`\rightarrowfill`, \`\leftarrowfill`,
+ \`\hrulefill`, \`\dotfill`, \`\rightarrowfill`, \`\leftarrowfill`,
\`\downbracefill`, \`\upbracefill`.
The last four are used in non-Unicode variants of `\overrightarrow`,
`\overleftarrow`, `\overbrace` and `\underbrace` macros, see
@@ -331,7 +331,7 @@
\_def \_magnification {\_afterassignment \_magA \_count255 }
\_def \_magA {\_mag=\_count255 \_truedimen\_hsize \_truedimen\_vsize
- \_dimen\_footins=8truein
+ \_dimen\_footins=8truein
}
% only for backward compatibility, but \margins macro is preferred.
\_public \magnification ;
diff --git a/macros/luatex/optex/base/prefixed.opm b/macros/luatex/optex/base/prefixed.opm
index 8eb851cc2a..ff6dffa20a 100644
--- a/macros/luatex/optex/base/prefixed.opm
+++ b/macros/luatex/optex/base/prefixed.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \public {Prefixing and code syntax <2020-02-14>} % preloaded in format
@@ -18,7 +18,7 @@
\_doc ------------------
\`\ea` is useful shortcut for `\expandafter`. We recommend to use always the
- private form of \`\_ea`
+ private form of \`\_ea`
because there is high probability that `\ea` will be redefined by the user.
\nl
\`\public` `<sequence> <sequence> ... ;` does
@@ -47,10 +47,10 @@
\_doc -----------------------
Each macro file should begin with \`\_codedecl` `\macro {<info>}`.
If the `\macro` is defined already then the `\endpinput` protects to read
- such file more than one times. Else the <info> is printed to the terminal
+ such file more than once. Else the <info> is printed to the terminal
and the file is read.\nl
- The {\`\_endcode`} is defined as `\endinput` in the `optex.ini` file.
- \`\wterm` `{<text>}` prints `<text>`
+ The {\`\_endcode`} is defined as `\endinput` in the `optex.ini` file.
+ \`\wterm` `{<text>}` prints `<text>`
to the terminal and to the `.log` file (as in plain \TeX/).
\_cod -----------------------
@@ -100,7 +100,10 @@
}
\_def \_nspublic {\_xargs \_nspublicA}
-\_def \_nspublicA #1{\_ea\_let \_ea#1\_csname \_pkglabel _\_csstring #1\_endcsname}
+\_def \_nspublicA #1{%
+ \_unless\_ifx #1\_undefined
+ \_opwarning{\_ea\_ignoreit\_pkglabel\_space redefines the meaning of \_string#1}\_fi
+ \_ea\_let \_ea#1\_csname \_pkglabel _\_csstring #1\_endcsname}
\_def \_nsprivate {\_xargs \_nsprivateA}
\_def \_nsprivateA #1{\_ea\_let \_csname \_pkglabel _\_csstring #1\_endcsname =#1}
@@ -109,67 +112,67 @@
\_endcode %----------------------------------------------------
-\sec Concept of name spaces of control sequences
+\sec[prefixed] Concept of namespaces of control sequences
\secc Prefixing internal control sequences
-All control sequences used in \OpTeX/ are used and defined with `_` prefix.
+All control sequences used in \OpTeX/ are used and defined with `_` prefix.
The user can be sure that when he/she does `\def\foo` then internal macros of
\OpTeX/ nor \TeX/ primitives will be not damaged. For example
-`\def\if{...}` will not damage macros because \OpTeX/'s macros
+`\def\if{...}` will not damage macros because \OpTeX/'s macros
are using `\_if` instead of `\if`.
All \TeX/ primitives are initialized with two representative control
sequences: `\word` and `\_word`, for example `\hbox` and `\_hbox`.
-The first alternative is reserved for users or such control sequences
-can be re-defined by user.
+The first alternative is reserved for users or such control sequences
+can be re-defined by a user.
-\OpTeX/ sets the character `_` as letter, so it can be used in
-control sequences. When a control sequence begins with this character
+\OpTeX/ sets the character `_` as the letter, so it can be used in
+control sequences. When a control sequence begins with this character
then it means that it is a primitive or it is used in \OpTeX/ macros as
-internal. User can redefine such prefixed control sequence only
+internal. User can redefine such prefixed control sequence only
if he/she explicitly know what happens.
-We never change catcode of `_`, so internal macros can be
-redefined by user without problems if it is desired. We need not
+We never change catcode of `_`, so internal macros can be
+redefined by user without problems if it is desired. We need not
something like `\makealetter` from \LaTeX/.
-\OpTeX/ defines all new macros as prefixed. For public usage of such macros
-we need to set non-prefixed version. This is done by
+\OpTeX/ defines all new macros as prefixed. For public usage of such macros,
+we need to set non-prefixed version. This is done by
-\begtt
+\begtt \catcode`\<=13
\public <list of control sequences> ;
\endtt
For example \^`\public`` \foo \bar ;` does `\let\foo=\_foo`, `\let\bar=\_bar`.
At the end of each code segment in \OpTeX/, the `\_public` macro is used. You
-can see, what macros are defined for public usage in such code segment.
+can see, what macros are defined for public usage in this code segment.
The macro \^`\private` does a reverse job to `\public` with the same syntax.
For example `\private \foo \bar ;` does `\let\_foo=\foo`, `\let\_bar=\bar`.
-This should be used when unprefixed variant of control sequence is declared
+This should be used when an unprefixed variant of a control sequence is declared
already but we need the prefixed variant too.
In this documentation: if both variants of a control sequence are declared
(prefixed and unprefixed), then the accompanying text mentions only
-unprefixed variant. The code typically defines prefixed variant
+the unprefixed variant. The code typically defines the prefixed variant
and then the \^`\public` (or `\_public`) macro is used.
-\secc Name space of control sequences for users
+\secc Namespace of control sequences for users
-User can define or declare any control sequence with a name without any `_`.
+Users can define or declare any control sequence with a name without any `_`.
This does not make any problem. Only one exception is the reserved control
-sequence `\par`. It is generated by tokenizer (at empty lines)
+sequence `\par`. It is generated by tokenizer (at empty lines)
and used as internal in \TeX/.
User can define or declare control sequences with `_` character, for
example `\my_control_sequence`, but with the following exceptions:
\begitems
-* Control sequences which begin with `_` are reserved for \TeX/ primitives,
+* Control sequences which begin with `_` are reserved for \TeX/ primitives,
\OpTeX/ internal macros and packages internal macros.
-* Control sequences (terminated by non-letter) in the form
+* Control sequences (terminated by non-letter) in the form
`\<word>_` or `\<word>_<one-letter>`, where
<word> is a sequence of letters, are inaccessible, because they
are interpreted as `\<word>` followed by `_` or as `\<word>` followed by
@@ -181,24 +184,24 @@ example `\my_control_sequence`, but with the following exceptions:
\endtt
This feature is implemented using lua code at input processor level, see
the section~\ref[math-macros] for more details. You can deactivate this feature by
- \^`\mathsboff`. After this, you can still write
- `$`$\int$`_a^b$` (Unicode) or `$\int _a^b$` % $∫_a^b$ (Unicode) or $\int _a^b$
+ \^`\mathsboff`. After this, you can still write
+ `$`$\int$`_a^b$` (Unicode) or `$\int _a^b$` % $∫_a^b$ (Unicode) or $\int _a^b$
without problems but `\int``_a^b` yields to undefined control sequence
- `\int``_a`. You can activate this feature again by \^`\mathsbon`. The
+ `\int``_a`. You can activate this feature again by \^`\mathsbon`. The
effect will take shape from next line read from input file.
* Control sequences in the form `\_<pkg>_<word>` is intended for package
- writers as internal macros for a package with `<pkg>` identifier,
+ writers as internal macros for a package with `<pkg>` identifier,
see section~\ref[pkg-namespace].
\enditems
-The single letter control sequences like `\%`, `\$`, `\^` etc. are not used
-in internal macros. User can redefine them, but (of course) some classical
+The single-letter control sequences like `\%`, `\$`, `\^` etc. are not used
+in internal macros. Users can redefine them, but (of course) some classical
features can be lost (printing percent character by `\%` for example).
\secc Macro files syntax
Each segment of \OpTeX/ macros is stored in one file with `.opm` extension
-(means OPtex Macros). Your local macros should be in normal `*.tex` file.
+(means OPtex Macros). Your local macros should be in a normal `*.tex` file.
The code in macro files starts by \^`\_codedecl` and ends by \^`\_endcode`.
The \^`\_endcode` is equivalent for `\endinput`, so documentation can follow.
@@ -209,7 +212,7 @@ The \^`\_codedecl` has syntax:
\endtt
If the mentioned `\sequence` is defined, then \^`\_codedecl` does the same as
-`\endinput`: this protect from reading the file twice. We suppose, that
+`\endinput`: this protects from reading the file twice. We suppose, that
`\sequence` is defined in the macro file.
It is possible to use the \^`\_doc` ... \^`\_cod` pair between the macro lines.
@@ -217,36 +220,37 @@ The documentation text should be here. It is ignored when macros are read
but it can be printed using `doc.opm` macros like in this documentation.
-\secc[pkg-namespace] Name spaces for package writers
+\secc[pkg-namespace] Name spaces for package writers
Package writer should use internal names in the form `\_<pgk>_<sequence>`,
-where `<pkg>` is a package label. For example:
+where `<pkg>` is a package label. For example:
`\_qr_utfstring` from `qrcode.opm` package.
-The package writer needs not write repeatedly `\_pkg_foo` `\_pkg_bar`
+The package writer needs not to write repeatedly `\_pkg_foo` `\_pkg_bar`
etc.\ again and again in the macro file.\fnote
-{We have not adatped the idea from expl3 language:)}
-When the \^`\_namespace` `{<pkg>}`
+{We have not adopted the idea from expl3 language:)}
+When the \^`\_namespace` `{<pkg>}`
is declared at the beginning of the macro file then all occurrences of
`\.foo` will be replaced by `\_<pkg>_foo` at the input processor level.
-The macro writer can write (and backward can read his/her code) simply with
-`\.foo`, `\.bar` control sequences and `\_<pkg>_foo`, `\_<pkg>_bar`
+The macro writer can write (and backward can read his/her code) simply with
+`\.foo`, `\.bar` control sequences and `\_<pkg>_foo`, `\_<pkg>_bar`
control sequences are processed internally.
The scope of the \^`\_namespace` command ends at the \^`\_endnamespace` command
or when another \^`\_namespace` is used. This command checks
if the same package label is not declared by the \^`\_namespace` twice.
The \^`\_nspublic` macro does `\let\foo = \_<pkg>_foo` when
-\^`\_namespace{<pkg>}` is declared. And the \^`\_nsprivate` macro does reverse
-operation to it. Example: you can define `\def\.macro{...}` and then
+\^`\_namespace{<pkg>}` is declared. Moreover, it prints a warning if `\foo` is
+defined already. The \^`\_nsprivate` macro does reverse
+operation to it without warnings. Example: you can define `\def\.macro{...}` and then
set it to the user name space by `\_nspublic \macro;`.
-Don't load another packages (which are using their own name space) inside your
-name space. Do load them before your \^`\_namespace`~`{<pkg>}` is
-initialized. Or close your name space by \^`\_endnamespace` and open it again
+Don't load other packages (which are using their own namespace) inside your
+namespace. Do load them before your \^`\_namespace`~`{<pkg>}` is
+initialized. Or close your namespace by \^`\_endnamespace` and open it again
(after other packages are loaded) by \^`\_resetnamespace`~`{<pkg>}`.
-If the package writer needs to declare a control
+If the package writer needs to declare a control
sequence by \^`\newif`, then there is an exception of the rule described above. Use
\^`\_newifi\_if<pkg>_bar`, for example `\_newifi\_ifqr_incorner`.
Then the control sequences `\_qr_incornertrue` and
@@ -256,35 +260,35 @@ and `\.incornerfalse` when `\_namespace{qr}` is used).
\secc Summary about rules for external macro files published for \OpTeX/
-If you are writting a macro file which is intended to be published for
+If you are writing a macro file that is intended to be published for
\OpTeX/, then you are greatly welcome. You should follow these rules:
\begitems
-* Don't use a control sequences from user name space in the macro
- bodies if there is not explicit and documented reason to do this.
-* Don't declare control sequences in the user name space if there is not
- explicit and documented reason to do this.
-* Use control sequences from \OpTeX/ and primitive name space
- in read only mode if there is not explicit and documented reason to
- redefine them.
-* Use `\_<pkg>_<name>` for your internal macros or `\.<name>` if the
+* Don't use control sequences from the user namespace in the macro
+ bodies if there is not explicit and documented reason to do this.
+* Don't declare control sequences in the user namespace if there are not
+ explicit and documented reasons to do this.
+* Use control sequences from \OpTeX/ and primitive namespace
+ in read-only mode, if there is not an explicit and documented reason to
+ redefine them.
+* Use `\_<pkg>_<name>` for your internal macros or `\.<name>` if the
\^`\_namespace{<pkg>}` is declared. See section~\ref[pkg-namespace].
-* Use \^`\load` (or better: `\_load`) for loading more external macros
- if you need them. Don't use `\_input` explicitly in such cases.
- The reason is: the external macro file is not loaded
- twice if another macro or the user needs it explicitly too.
-* Use \^`\_codedecl` as your first command in the macro file and
+* Use \^`\load` (or better: `\_load`) for loading more external macros
+ if you need them. Don't use `\_input` explicitly in such cases.
+ The reason is: the external macro file is not loaded
+ twice if another macro or the user needs it explicitly too.
+* Use \^`\_codedecl` as your first command in the macro file and
\^`\_endcode` to close the text of macros.
* Use \^`\_doc` ... \^`\_cod` pairs for documenting the code pieces and/or write
more documentation after the \^`\_endcode` command.
\enditems
-If the macro file accepts these recommendations then it should be
-named by `<filename>.opm` where `<filename>` differs from file names
-used directly in \OpTeX/ and from other published macros.
-This extension `opm` has a precedence before `.tex` when
+If the macro file accepts these recommendations then it should be
+named by `<filename>.opm` where `<filename>` differs from file names
+used directly in \OpTeX/ and from other published macros.
+This extension `opm` has precedence before `.tex` when
the \^`\load` macro is used.
-The `qrcode.opm` is first example how an external macro file for \OpTeX/
+The `qrcode.opm` is the first example of how an external macro file for \OpTeX/
can look like.
diff --git a/macros/luatex/optex/base/print-unimath.opm b/macros/luatex/optex/base/print-unimath.opm
index a1a3ceb106..2b1a07f30a 100644
--- a/macros/luatex/optex/base/print-unimath.opm
+++ b/macros/luatex/optex/base/print-unimath.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \_undefined {Printing Unicode-math table \string<2020-06-08>}
@@ -38,15 +38,15 @@
\_endmulti
\_medskip\_goodbreak
- Codes U+10001 \_dots\ U+1EEF1 \_let\UnicodeMathSymbol=\UnicodeMathSymbolA
- \_begmulti 4
+ Codes U+10001 \_dots\ U+1EEF1 \_let\UnicodeMathSymbol=\UnicodeMathSymbolA
+ \_begmulti 4
\_input unimath-table.opm
\_endmulti
\_endgroup
\_endcode
-This file can be used for testing your Unicode Math font
+This file can be used for testing your Unicode-math font
and/or for printing \TeX/ sequences which can be used in math.
Load Unicode math font first (for example by `\fontfam[termes]` or by
diff --git a/macros/luatex/optex/base/ref-file.opm b/macros/luatex/optex/base/ref-file.opm
index c5fa396524..fd7c1101d7 100644
--- a/macros/luatex/optex/base/ref-file.opm
+++ b/macros/luatex/optex/base/ref-file.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \openref {File for references <2020-02-14>} % preloaded in format
@@ -13,16 +13,16 @@
\_def\_inputref {%
\_isfile{\_jobname.ref}\_iftrue
\_input {\_jobname.ref}
- \_gfnotenum=0 \_lfnotenum=0 \_mnotenum=0
+ \_gfnotenum=0 \_lfnotenum=0 \_mnotenum=0
\_openrefA{\_string\_inputref}%
\_fi
}
\_doc --------------------------
- If the file does not exists then it is not created by default. It means that if you
+ If the file does not exist then it is not created by default. It means that if you
process a document without any forward references then no `\jobname.ref`
- file is created because it is unusable. The \^`\_wref` macro is dummy in
- such case.
+ file is created because it is unusable. The \^`\_wref` macro is a dummy in
+ this case.
\_cod --------------------------
\_def\_wrefrelax#1#2{}
@@ -31,10 +31,10 @@
\_doc ---------------------
If a macro needs to create and to use `.ref` file then such macro must use
\`\openref`. When the file is created (using internal \`\_openrefA`) then
- the \`\_wref` `\<macro>{<data>}` is redefined in order to
+ the \`\_wref` `\<macro>{<data>}` is redefined in order to
save the line `\<macro><data>` to the `.ref` file using asynchronous
- `\write` primitive. Finally, the `\_openref` destroys itself, because we
- need not to open the file again.
+ `\write` primitive. Finally, the `\_openref` destroys itself, because we
+ need not open the file again.
\_cod ---------------------
\_def\_openref {%
@@ -42,25 +42,25 @@
\_gdef\_openref{}%
}
\_def\_openrefA #1{%
- \_immediate\_openout\_reffile="\_jobname.ref"\_relax
- \_gdef\_wref ##1##2{\_write\_reffile{\_string##1##2}}%
+ \_immediate\_openout\_reffile="\_jobname.ref"\_relax
+ \_gdef\_wref ##1##2{\_write\_reffile{\_bslash\_csstring##1##2}}%
\_immediate\_write\_reffile {\_pcent\_pcent\_space OPTeX <\_optexversion> - REF file (#1)}%
\_immediate\_wref \Xrefversion{{\_REFversion}}%
}
\def\openref{\_openref}
\_doc ----------------------
- We are using convention that the macros used in `.ref` file are named
- `\_X<foo>`. If there is a new version of \OpTeX/ with different collection
- of such macros then we don't want to read the `.ref` files produced by an
- old version of \OpTeX/ or by OPmac. So first line of `.ref` file is in
+ We are using the convention that the macros used in `.ref` file are named
+ `\_X<foo>`. If there is a new version of \OpTeX/ with a different collection
+ of such macros then we don't want to read the `.ref` files produced by an
+ old version of \OpTeX/ or by OPmac. So the first line of `.ref` file is in
the form
\begtt \catcode`\<=13
\Xrefversion{<version>}
- \endtt
+ \endtt
We can check the version compatibility by this macro.
- Because OPmac does not understand `\_Xrefversion` we use
- \`\Xrefversion` (with different number of `<version>` form OPmac) here.
+ Because OPmac does not understand `\_Xrefversion` we use
+ \`\Xrefversion` (with a different number of `<version>` form OPmac) here.
The result: OPmac skips the `.ref` files produced by \OpTeX/ and vice
versa.
\_cod ----------------------
@@ -83,13 +83,13 @@
\def\Xfig#1#2#3{\addto\toflist{\tofline{#1}{#2}{#3}}}
}
\endtt
- We must read `<definition of your ref macros>` when catcode of `#` is 12
- because we needn't to duplicate each `#` in the `.ref` file.
+ We must read `<definition of your ref macros>` when the catcode of `#` is 12
+ because we needn't duplicate each `#` in the `.ref` file.
\_cod \_fin -----------------
\_def\_refdecl{\_bgroup \_catcode`\#=12 \_refdeclA}
\_def\_refdeclA #1{\egroup\_openref
- \_immediate\_write\_reffile {\_pcent\_space \_string \refdecl:}%
+ \_immediate\_write\_reffile {\_pcent\_space \_string \refdecl:}%
\_immediate\_write\_reffile {\_detokenize{#1}}%
}
\_public \refdecl ;
@@ -97,10 +97,10 @@
\_endcode % ================================================
-The `.ref` file has the name `\jobname.ref` and
-it saves information about references, TOC lines, etc.
+The `.ref` file has the name `\jobname.ref` and
+it saves information about references, TOC lines, etc.
All data needed in next \TeX/ run are saved here.
-\OpTeX/ reads this file at the beginning of the document
+\OpTeX/ reads this file at the beginning of the document
(using `\everyjob`) if such file exists.
The `.ref` file looks like:
@@ -116,22 +116,22 @@ The `.ref` file looks like:
...
\endtt
%
-where <gpageno> is internal page number globally numbered from one and
-`<pageno>` is a page number (`\the\pageno`) used in pagination (they may be differ).
+where <gpageno> is internal page number globally numbered from one and
+`<pageno>` is a page number (`\the\pageno`) used in pagination (they may differ).
Each page begins with \^`\_Xpage`.
The `<label>` is a label used by user in `\label[<label>]` and `<text>` is a
text which should be referenced (the number of section or table, for
-example `2.3.14`). The `<title>` is a title of the chapter (`<level>`=1,
-`<type>`=`chap`), section (`<level>`=2, `<type>`=`sec`), subsection
-(`<level>`=3, `<type>`=`secc`). The \^`\_Xpage` is written at begining of each
+example `2.3.14`). The `<title>` is the title of the chapter (`<level>`=1,
+`<type>`=`chap`), section (`<level>`=2, `<type>`=`sec`), subsection
+(`<level>`=3, `<type>`=`secc`). The \^`\_Xpage` is written at the beginning of each
page, the `\_Xtoc` is written when chapter or section or subsection title
exists on the page and `\_Xlabel` when labeled object prefixed by
-`\label[<label>]` exists on the page.
+`\label[<label>]` exists on the page.
The `.ref` file is read when the processing of the document starts using
-`\everyjob`. It is read, removed and opened to writing immediately.
-But the `.ref` file should be missing. If none forward references are needed
+`\everyjob`. It is read, removed, and opened to writing immediately.
+But the `.ref` file should be missing. If none forward references are needed
in the document then `.ref` file is not created. For example, you only want
to test a simple plain \TeX/ macro, you create `test.tex` file, you do
-`optex test` and you don't need to see empty `test.ref` file in your directory.
+`optex test` and you don't need to see an empty `test.ref` file in your directory.
diff --git a/macros/luatex/optex/base/references.opm b/macros/luatex/optex/base/references.opm
index 3640879703..27e4f8d632 100644
--- a/macros/luatex/optex/base/references.opm
+++ b/macros/luatex/optex/base/references.opm
@@ -1,16 +1,16 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \ref {References <2020-03-03>} % preloaded in format
\_doc ----------------------------
- \`\_Xpage` `{<gpageno>}{<pageno>}` saves the parameter pair into \`\_currpage`.
+ \`\_Xpage` `{<gpageno>}{<pageno>}` saves the parameter pair into \`\_currpage`.
Resets `\_lfnotenum`; it is used if footnotes are numbered from one at each page.
\_cod ----------------------------
\_def\_Xpage#1#2{\_def\_currpage{{#1}{#2}}\_lfnotenum=0 }
\_doc ----------------------------
- Counter for number of unresolved references \`\_unresolvedrefs`.
+ Counter for the number of unresolved references \`\_unresolvedrefs`.
\_cod ----------------------------
\_newcount\_unresolvedrefs
@@ -25,12 +25,12 @@
\_def\_bracketspg#1#2{[pg:#1]{#2}}
\_doc ----------------------------
- \`\label``[<label>]` saves the decalred label to `\_lastlabel` and
- \`\wlabel``{<text>}` uses the `\_lastlabel` and activates
+ \`\label``[<label>]` saves the decalred label to `\_lastlabel` and
+ \`\wlabel``{<text>}` uses the `\_lastlabel` and activates
`\wref\_Xlabel{<label>}{<text>}`.
\_cod ----------------------------
-\_def\_label[#1]{\_isempty{#1}\_iftrue \_global\_let \_lastlabel=\_undefined
+\_def\_label[#1]{\_isempty{#1}\_iftrue \_global\_let \_lastlabel=\_undefined
\_else \_isdefined{l0:#1}%
\_iftrue \_opwarning{duplicated label [#1], ignored}\_else \_xdef\_lastlabel{#1}\_fi
\_fi \_ignorespaces
@@ -49,9 +49,9 @@
\_doc ----------------------------
\`\ref``[<label>]` uses saved `\_lab:<label>` and prints (linked) `<text>`.
- If the reference is backwarded then we know `\lab:<label>` without any need
+ If the reference is backward then we know `\lab:<label>` without any need
to read REF file. On the other hand, if the reference is forwarded, then we
- doesn't know `\_lab:<label>` in first run of \TeX/ and we print warning and
+ doesn't know `\_lab:<label>` in the first run of \TeX/ and we print a warning and
do `\_openref`.
\nl
\`\pgref``[<label>]` uses `{<gpageno>}{<pageno>}` from `\_pgref:<label>` and
diff --git a/macros/luatex/optex/base/sections.opm b/macros/luatex/optex/base/sections.opm
index 0bfcb8e74e..66dc9cd9e0 100644
--- a/macros/luatex/optex/base/sections.opm
+++ b/macros/luatex/optex/base/sections.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \chap {Titles, chapters, sections, subsections <2020-03-28>} % preloaded in format
@@ -7,7 +7,7 @@
\`\_titfont`, \`\_chapfont`, \`\_secfont` and \`\_seccfont`.
They are scaled from main fonts size
of the document, which is declared by first `\typosize[<fo-size>/<b-size>]`
- command.
+ command.
\_cod ---------------------------
\_def \_titfont {\_scalemain\_typoscale[\_magstep4/\_magstep5]\_boldify}
@@ -16,10 +16,10 @@
\_def \_seccfont {\_scalemain\_typoscale[\_magstep1/\_magstep1]\_boldify}
\_doc ---------------------------
- The \`\tit` macro is defined using \^`\scantoeol` and \`\_printtit`.
+ The \`\tit` macro is defined using \^`\scantoeol` and \`\_printtit`.
It means that the parameter is
separated by end of line and inline verbatim is allowed. The same
- principle is used in the \^`\chap`, \^`\sec` and \^`\secc` macros.
+ principle is used in the \^`\chap`, \^`\sec`, and \^`\secc` macros.
\_cod ---------------------------
\_def\_printtit #1{\_vglue\_titskip
@@ -32,38 +32,38 @@
\_public \tit ;
\_doc ---------------------------
- You can re-define \`\_printchap`, \`\_printsec` or \`\_printsecc` macros if
- another design of section titles is needed. These macros gets the
+ You can re-define \`\_printchap`, \`\_printsec` or \`\_printsecc` macros if
+ another design of section titles is needed. These macros get the
`<title>` text in its parameter. The common recommendations for these macros are:
\begitems
* Use \^`\_abovetitle``{<penaltyA>}{<skipA>}` and \^`\_belowtitle``{<skipB>}`
for inserting vertical material above and below the section title.
The arguments of these macros are normally used, i.\,e.\ \^`\_abovetitle`
- inserts `<penaltyA><skipA>` and \^`\_belowtitle` inserts `<skipB>`.
+ inserts `<penaltyA><skipA>` and \^`\_belowtitle` inserts `<skipB>`.
But there is an
exception: if \^`\_belowtitle``{<skipB>}` is immediately followed by
- \^`\_abovetitle``{<penaltyA>}{<skipA>}` (for example section title is
- immediately followed by subsection title), then only `<skipA>` is generated,
+ \^`\_abovetitle``{<penaltyA>}{<skipA>}` (for example section title is
+ immediately followed by subsection title), then only `<skipA>` is generated,
i.\,e.\ `<skipB><penaltyA><skipA>` is reduced only to `<skipA>`.
- The reason of such behavior: we don't want to duplicate vertical skip
- and we don't want to use negative penalty in such cases.
+ The reason for such behavior: we don't want to duplicate vertical skip
+ and we don't want to use the negative penalty in such cases.
Moreover, \^`\_abovetitle``{<penaltyA>}{<skipA>}` takes previous whatever
- vertical skip (other than from `\_belowtitle`) and generates only
- greater from this pair of skips. It means that `<whatever-skip><penaltyA><skipA>`
- is transformed to `<penaltyA>`max(`<whatever-skip><skipA>`).
- The reason of such behavior: we don't want to
+ vertical skip (other than from `\_belowtitle`) and generates only
+ greater from this pair of skips. It means that `<whatever-skip><penaltyA><skipA>`
+ is transformed to `<penaltyA>`max(`<whatever-skip><skipA>`).
+ The reason for such behavior: we don't want to
duplicate vertical skips (from `\_belowlistskip`, for example) above the title.
- * Use \^`\_printrefnum``[<pre>@<post>]` in horizontal mode. It prints
+ * Use \^`\_printrefnum``[<pre>@<post>]` in horizontal mode. It prints
`<pre><ref-num><post>`. The `<ref-num>` is \^`\_thechapnum` or \^`\_thesecnum`
or \^`\_theseccnum` depending on what type o title is processed.
- If \^`\nonum` prefix is used then \^`\_printrefnum` prints nothing.
- The macro \^`\_printrefnum` does more work: it creates destination of hyperlinks
- (if \^`\hyperlinks``{}{}` is used) and saves references from label (if
- \^`\label``[<label>]` precedes) and saves references for table of contents
+ If \^`\nonum` prefix is used then \^`\_printrefnum` prints nothing.
+ The macro \^`\_printrefnum` does more work: it creates destination of hyperlinks
+ (if \^`\hyperlinks``{}{}` is used) and saves references from the label (if
+ \^`\label``[<label>]` precedes) and saves references for the table of contents
(if \^`\maketoc` is used).
* Use \^`\nbpar` for closing the paragraph for printing title. This
command inserts `\_nobreak` between each line of such paragraph, so
- the title cannot be broken to more pages.
+ the title cannot be broken into more pages.
* You can use \^`\_firstnoindent` in order to the first paragraph after
the title is not indented.
\enditems
@@ -74,19 +74,19 @@
{\_chapfont \_noindent \_mtext{chap} \_printrefnum[@]\_par
\_nobreak\_smallskip
\_noindent \_raggedright #1\_nbpar}\_mark{}%
- \_nobreak \_belowtitle{\_bigskip}%
+ \_nobreak \_belowtitle{\_bigskip}%
\_firstnoindent
}
-\_def\_printsec#1{\_par
+\_def\_printsec#1{\_par
\_abovetitle{\_penalty-400}\_bigskip
{\_secfont \_noindent \_raggedright \_printrefnum[@\_quad]#1\_nbpar}\_insertmark{#1}%
- \_nobreak \_belowtitle{\_medskip}%
+ \_nobreak \_belowtitle{\_medskip}%
\_firstnoindent
}
-\_def\_printsecc#1{\_par
+\_def\_printsecc#1{\_par
\_abovetitle{\_penalty-200}{\_medskip\_smallskip}
{\_seccfont \_noindent \_raggedright \_printrefnum[@\_quad]#1\_nbpar}%
- \_nobreak \_belowtitle{\_medskip}%
+ \_nobreak \_belowtitle{\_medskip}%
\_firstnoindent
}
@@ -107,33 +107,33 @@
}
\_doc --------------------------
- The \`\_chapx` initializes counters used in chapters,
+ The \`\_chapx` initializes counters used in chapters,
the \`\_secx` initializes counters in sections
and \`\_seccx` initializes counters in subsections.
If you have more types of numbered objects in your document then you can
- declare appropriate counters and do `\addto\_chapx{\yourcounter=0 }`
- for example. If you have another concept of numbering objects used in your
+ declare appropriate counters and do `\addto\_chapx{\yourcounter=0 }`
+ for example. If you have another concept of numbering objects used in your
document, you can re-define these macros. All settings here are global
because it is used by `{\_globaldefs=1 \_chapx}`.
- Default concept: Tables, figuers and display maths are numbered
- from one in each section -- subsetions doesn't reset these counters.
+ Default concept: Tables, figures, and display maths are numbered
+ from one in each section -- subsections don't reset these counters.
Footnotes declared by \^`\fnotenumchapters` are numbered in each chapter
from one.
- The `\_the*` macros
- \`\_thechapnum`, \`\_thesecnum`, \`\_theseccnum`,
+ The `\_the*` macros
+ \`\_thechapnum`, \`\_thesecnum`, \`\_theseccnum`,
\`\_thetnum`, \`\_thefnum` and \`\_thednum`
include the format of numbers used when the object
is printing. If chapter is never used in the document then `\_chapnum=0`
and \`\_othe``\_chapnum.` expands to empty. Sections have numbers <num> and
subsections <num>.<num>. On the other hand, if chapter is used in the
- document then `\_chapnum>0` and sections have numbers` <num>.<num>`
- and subsections have numbers `<num>.<num>.<num>`.
+ document then `\_chapnum>0` and sections have numbers` <num>.<num>`
+ and subsections have numbers `<num>.<num>.<num>`.
\_cod --------------------------
-\_newcount \_chapnum % chapters
+\_newcount \_chapnum % chapters
\_newcount \_secnum % sections
\_newcount \_seccnum % subsections
\_newcount \_tnum % table numbers
@@ -142,7 +142,7 @@
\_def \_chapx {\_secx \_secnum=0 \_lfnotenum=0 }
\_def \_secx {\_seccx \_seccnum=0 \_tnum=0 \_fnum=0 \_dnum=0 \_resetABCDE }
-\_def \_seccx {}
+\_def \_seccx {}
\_def \_thechapnum {\_the\_chapnum}
\_def \_thesecnum {\_othe\_chapnum.\_the\_secnum}
@@ -166,12 +166,12 @@
\_public \notoc \nonum ;
\_doc ----------------------------
- The \`\chap`, \`\sec` and \`\secc` macros are implemented here.
- The \`\_inchap`, \`\_insec` and \`\_insecc` macros does the real work,
+ The \`\chap`, \`\sec`, and \`\secc` macros are implemented here.
+ The \`\_inchap`, \`\_insec` and \`\_insecc` macros do the real work,
First, we read the optional parameter `[<label>]`, if it exists.
The `\chap`, `\sec` and `\secc` macro reads its parameter using
\^`\scantoeol`. This causes that they cannot be used inside other macros.
- Use \`\_inchap`, \`\_insec` and \`\_insecc` macros directly in such case.
+ Use \`\_inchap`, \`\_insec`, and \`\_insecc` macros directly in such case.
\_cod ----------------------------
\_optdef\_chap[]{\_trylabel \_scantoeol\_inchap}
@@ -208,13 +208,13 @@
The \`\_wtotoc` `{<level>}{<info>}{<ref-num>}{<title-text>}`
macro expands its parameters and does \^`\_wref`.
- Note that the `<tite-text>` is `\detokenize`d before `\_wref`, so the
- problem of \"fragile macros" from old \LaTeX/ never occurs.
+ Note that the `<tite-text>` is `\detokenize`d before `\_wref`, so the
+ problem of \"fragile macros" from old \LaTeX/ never occurs.
\_cod ----------------------------
\_def \_printrefnum [#1@#2]{\_leavevmode % we must be in horizontal mode
\_ifnonum \_else #1\_therefnum #2\_fi
- \_wlabel \_therefnum % references, if `\label[<label>]` is declared
+ \_wlabel \_therefnum % references, if `\label[<label>]` is declared
\_ifnotoc \_else \_incr \_tocrefnum
\_dest[toc:\_the\_tocrefnum]%
\_wtotoc{\_the\_sectionlevel}{\_secinfo}%
@@ -225,20 +225,20 @@
\_def \_wtotocA #1#2#3#4{\_wref\_Xtoc{{#1}{#2}{#3}#4}}
\_doc -----------------------------
- The \`\_abovetitle``{<penaltyA>}{<skipA>}` and \`\_belowtitle``{<skipB>}` pair
- communicates using a special penalty 11333 in vertical mode.
- The `\_belowtitle` puts the vertical skip (its value is saved in
+ The \`\_abovetitle``{<penaltyA>}{<skipA>}` and \`\_belowtitle``{<skipB>}` pair
+ communicates using a special penalty 11333 in vertical mode.
+ The `\_belowtitle` puts the vertical skip (its value is saved in
`\_savedtitleskip`) followed by this special penalty.
The `\_abovetitle` reads `\lastpenalty` and if it has this special value
- then it removes the skip used before and don't use the parameter.
+ then it removes the skip used before and doesn't use the parameter.
The `\abovetitle` creates `<skipA>` only if whatever previous skip is less
or equal than `<skipA>`. We must save `<whatever-skip>`, remove it,
- create `<penaltyA>` (if `\_belowtitle` does not preceded) and create
+ create `<penaltyA>` (if `\_belowtitle` does not precede) and create
<whatever-skip> or `<skipA>` depending on what is greater.
The amount of `<skipA>` is measured using `\setbox0=\vbox`.
\_cod -----------------------------
-\_newskip \_savedtitleskip
+\_newskip \_savedtitleskip
\_newskip \_savedlastskip
\_def\_abovetitle #1#2{\_savedlastskip=\_lastskip % <whatever-skip>
\_ifdim\_lastskip>\_zo \_vskip-\_lastskip \_fi
@@ -251,7 +251,7 @@
\_doc -----------------------------
\`\nbpar` sets `\interlinepenaty` value.
- \`\nl` is \"new line" in text (or titles), but space in toc or headlines or outlines.
+ \`\nl` is \"new line" in the text (or titles), but space in toc or headlines or outlines.
\_cod -----------------------------
\_def\_nbpar{{\_interlinepenalty=10000\_endgraf}}
@@ -272,17 +272,17 @@
\_def \_firstnoindent {\_global\_everypar={\_wipeepar \_setbox7=\_lastbox}}
\_def \_wipeepar {\_global\_everypar={}}
- \_doc -----------------------------
+ \_doc -----------------------------
The `\mark` (for running heads) is used in `\_printsection` only. We
- suppose that chapters will be printed after `\vfil\break`, so user can
+ suppose that chapters will be printed after `\vfil\break`, so users can
implement chapter titles for running headers directly by macros, no
`\mark` mechanism is needed. But sections need `\mark`s. And they can be
- mixed with chapter's running heads, of course.
+ mixed with chapter's running heads, of course.
The \`\_insertmark``{<title text>}` saves `\mark` in the format
`{<title-num>} {<title-text>}`, so it can be printed \"as is" in
`\headline` (see the space between them), or you can define a formating
- macro with two parameters for processing these data, if you need it.
+ macro with two parameters for processing these data, if you need it.
\_cod -----------------------------
\_def\_insertmark#1{\_mark{{\_ifnonum\_else\_therefnum\_fi} {\_unexpanded{#1}}}}
@@ -298,16 +298,36 @@
\hfil \ea\formathead\firstmark{}{}%
\else
Chapter: \runningchap \hfil
- \fi
+ \fi
}
\endtt
- The \`\caption``/<letter>` uses `\_<letter>num` counter.
+
+ The \`\secl``<number> <title-text><eol>`
+ should be used for various levels of sections (for example, when
+ converting from Markdown to \OpTeX/). `\secl1` is `\chap`, `\secl2` is `\sec`,
+ `\secl3` is `\secc` and all more levels (for <number>$>3$)
+ are printed by the common \`\_seclp` macro. It declares only a simple design.
+ If there is a requirement to use such more levels then the book designer can
+ define something different here.
+ \_cod -----------------------------
+
+\_def\_secl{\_afterassignment\_secla \_sectionlevel=}
+\_def\_secla{\_ifcase\_sectionlevel
+ \_or\_ea\_chap\_or\_ea\_sec\_or\_ea\_secc\_else\_ea\_seclp\_fi}
+\_eoldef\_seclp#1{\_par \_ifnum\_lastpenalty=0 \_removelastskip\_medskip\_fi
+ \_noindent{\_bf #1}\_vadjust{\_nobreak}\_nl\_ignorepars}
+\_def\_ignorepars{\_isnextchar\_par{\_ignoresecond\_ignorepars}{}}
+
+\_public \secl ;
+
+ \_doc -----------------------------
+ The \`\caption``/<letter>` uses `\_<letter>num` counter.
The group opened by `\caption` is finalized by first `\par` from
- empty line or from `\vskip` or from `\endinsert`.
+ an empty line or from `\vskip` or from `\endinsert`.
The `\_printcaption<letter>` is called, it starts with
printing of the caption.\nl
- The \`\cskip` macro inserts nobreakable vertical space between caption and
- the object.
+ The \`\cskip` macro inserts nonbreakable vertical space between the caption and
+ the object.
\_cod -----------------------------
\_def\_caption/#1{\_def\_tmpa{#1}\_nospaceafter \_capA}
@@ -317,8 +337,7 @@
\_else \_opwarning{Unknown caption /\_tmpa}\_fi
\_edef\_thecapnum {\_csname _the\_tmpa num\_endcsname}%
\_edef\_thecaptitle{\_mtext{\_tmpa}}%
- \_ifcsname _everycaption\_tmpa\_endcsname
- \_ea\_the \_csname _everycaption\_tmpa\_endcsname \_fi
+ \_ea\_the \_csname _everycaption\_tmpa\_endcsname
\_def\_par{\_nbpar\_egroup}\_let\par=\_par
\_cs{_printcaption\_tmpa}%
}
@@ -344,26 +363,26 @@
\_let \_printcaptionf = \_printcaptiont % caption of figures = caption of tables
\_doc -----------------------------
- The default format of `\caption` text is paragraph in block narrower by
- `\_iindent` and with the last line is centered. This setting is done by
- the \`\_narrowlastlinecentered` macro.
+ The default format of `\caption` text is a paragraph in block narrower by
+ `\_iindent` and with the last line is centered. This setting is done by
+ the \`\_narrowlastlinecentered` macro.
\_cod -----------------------------
\_def\_narrowlastlinecentered#1{%
\_leftskip=#1plus1fil
\_rightskip=#1plus-1fil
- \_parfillskip=0pt plus2fil
+ \_parfillskip=0pt plus2fil\_relax
}
\_doc -----------------------------
\`\eqmark` is processed in display mode (we add `\eqno` primitive)
- or in internal mode when `\eqaligno` is used (we don't add `\eqno`).
+ or in internal mode when `\eqaligno` is used (we don't add `\eqno`).
\_cod -----------------------------
\_optdef\_eqmark []{\_trylabel \_ineqmark}
\_def\_ineqmark{\_incr\_dnum
- \_ifinner\_else\_eqno \_fi
- \_wlabel\_thednum \_thednum
+ \_ifinner\_else\_eqno \_fi
+ \_wlabel\_thednum \_hbox{\_thednum}%
}
\_public \eqmark ;
@@ -371,7 +390,7 @@
The \`\numberedpar` `<letter>{<name>}` is implemented here.
\_cod -----------------------------
-\_newcount\_counterA \_newcount\_counterB \_newcount\_counterC
+\_newcount\_counterA \_newcount\_counterB \_newcount\_counterC
\_newcount\_counterD \_newcount\_counterE
\_def\_resetABCDE {\_counterA=0 \_counterB=0 \_counterC=0 \_counterD=0 \_counterE=0 }
@@ -395,7 +414,7 @@
it if you need another design.
`\_printnumberedpar` needs not to be re-defined if you only want to print
- Theorems in italic and to insert vertical skips (for example). You can do this
+ Theorems in italic and to insert vertical skips (for example). You can do this
by the following code:
\begtt
\def\theorem {\medskip\bgroup\it \numberedpar A{Theorem}}
@@ -413,6 +432,8 @@
\_endcode % -------------------------------------
+2021-01-11 \secl introduced
+2021-01-05 \_thednum printed in text mode in its both occurences.
2020-04-28 \_secfonts etc: \_boldify is last.
2020-04-22 \_chapx, \_secx, \_seccx rewritten
2020-03-14 introduced
diff --git a/macros/luatex/optex/base/slides.opm b/macros/luatex/optex/base/slides.opm
index dff62e5931..deba85c746 100644
--- a/macros/luatex/optex/base/slides.opm
+++ b/macros/luatex/optex/base/slides.opm
@@ -1,9 +1,9 @@
-% This is part of OpTeX project, see http://petr.olsak.net/optex
+% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \slideshow {Slides style for OpTeX <2020-03-19>} % loaded on demand by \slides
\_doc -----------------------------
- Default margins and design is declared here.
+ Default margins and design is declared here.
The `\_ttfont` is scaled by `mag1.15` in order to balance the
ex height of Helvetica (Heros) and LM fonts Typewriter.
The `\begtt`...`\endtt` verbatim is printed by smaller text.
@@ -31,11 +31,11 @@
\_onlyrgb % RGB color space is better for presentations
\_doc -----------------------------
- The bottom margin is set to 3\,mm. If we use 1\,mm, then baseline of
- `\footline` is 2\,mm from the bottom page. This is depth of the `\Grey`
+ The bottom margin is set to 3\,mm. If we use 1\,mm, then the baseline of
+ `\footline` is 2\,mm from the bottom page. This is the depth of the `\Grey`
rectangle used for page numbers. It is r-lapped to `\hoffset` width because left
margin = `\hoffset` = right margin. It is 14\,mm for narrow pages or
- 16\,mm for wide pages.
+ 16\,mm for wide pages.
\_cod -----------------------------
\_footlinedist=1mm
@@ -52,13 +52,13 @@
\_doc -----------------------------
The \`\pshow``<num>` prints the text in invisible
- (transparent) font when \^`\layernum`\code{<}`<num>`.
- The trasparency is set by by `\pdfpageresoyrces` primitive.
+ (transparent) font when \^`\layernum`\code{<}`<num>`.
+ The transparency is set by `\pdfpageresoyrces` primitive.
\_cod -----------------------------
-\pdfpageresources{/ExtGState << /Invisible << /Type /ExtGState /ca 0 /CA 0 >>
+\pdfpageresources{/ExtGState << /Invisible << /Type /ExtGState /ca 0 /CA 0 >>
/Visible << /Type /ExtGState /ca 1 /CA 1 >> >>}
-\addto\_morepgresources{/Invisible << /Type /ExtGState /ca 0 /CA 0 >>
+\addto\_morepgresources{/Invisible << /Type /ExtGState /ca 0 /CA 0 >>
/Visible << /Type /ExtGState /ca 1 /CA 1 >>}
\def\Invisible {\_pdfliteral{/Invisible gs}}
\def\Visible {\_pdfliteral{/Visible gs}}
@@ -68,13 +68,13 @@
\_def\_pshow#1{\_use{=#1}\Red \_use{<#1}\Transparent \_ignorespaces}
\_doc -----------------------------
- The main level list of items is activated here. The `\_item:X` and
+ The main level list of items is activated here. The `\_item:X` and
`\_item:x` are used and are re-defined here.
- If we are in nested level of items and `\pg+` is used then
+ If we are in a nested level of items and `\pg+` is used then
`\egroups` macro expands to the right number of `\egroup`s
- in order to close page correctly. The level of nested item lists
- is saved to the `\_ilevel` register and used when we start again
- the next text after `\pg+`.
+ to close the page correctly. The level of nested item lists
+ is saved to the `\_ilevel` register and used when we start again
+ the next text after `\pg+`.
\_cod -----------------------------
\_newcount\_gilevel
@@ -101,10 +101,10 @@
The \`\_endslides` is defined as `\_end` primitive, but
slide-designer can redefine it. For example,
\ulink[http://petr.olsak.net/optex/optex-tricks.html\#slider]{OpTeX trick 0029}
- shows how to define a clickable navigation to the pages and how to check
- the data integrity at the end of document using `\_endslides`.
+ shows how to define clickable navigation to the pages and how to check
+ the data integrity at the end of the document using `\_endslides`.
- The `\bye` macro is re-defined here as an alternative to `\pg.`.
+ The `\bye` macro is redefined here as an alternative to `\pg.`.
\_cod -----------------------------
\_def\_endslides{\_end}
@@ -113,7 +113,7 @@
\_doc -----------------------------
We need no numbers and no table of contents when using slides.
The \^`\_printsec` macro is redefined in order the title is centered
- and typeset in `\Blue`.
+ and typeset in `\Blue`.
\_cod -----------------------------
\_def\_titfont{\_typosize[42/60]\_bf \Blue}
@@ -121,27 +121,27 @@
\_def\_secfont{\_typosize[25/30]\_bf \Blue}
\_nonum \_notoc \_let\_resetnonumnotoc=\_relax
-\_def\_printsec#1{\_par
+\_def\_printsec#1{\_par
\_abovetitle{\_penalty-400}\_bigskip
- {\_secfont \_noindent \_leftskip=0pt plus1fill \_rightskip=\_leftskip
+ {\_secfont \_noindent \_leftskip=0pt plus1fill \_rightskip=\_leftskip
\_printrefnum[@\_quad]#1\_nbpar}\_insertmark{#1}%
- \_nobreak \_belowtitle{\_medskip}%
+ \_nobreak \_belowtitle{\_medskip}%
}
\_doc -----------------------------
- When \`\slideshow` is active then each page is opened
+ When \`\slideshow` is active then each page is opened
by `\setbox\_slidepage=\vbox\bgroup` (roughly speaking)
and closed by `\egroup`. The material is
`\unvbox`ed and saved for the usage in the next usage if `\pg+` is in process.
The \`\_slidelayer` is incremented instead `\pageno` if `\pg+`.
This counter is equal to `\count1`, so it is printed to the terminal and
- log file next to `\pageno`.
+ log file next to `\pageno`.
The code is somewhat more complicated when \^`\layers` is used. Then
`<layered-text>` is saved to the \`\_layertext` macro, the material before
it is in \`\_slidepage` box and the material after it is in `\_slidepageB`
box. The pages are completed in the `\loop` which increments the
- \`\layernum` register.
+ \`\layernum` register.
\_cod -----------------------------
\_newbox\_slidepage \_newbox\_slidepageB
@@ -159,20 +159,20 @@
}
\_def\_destboxslide{\_def\_destbox[##1:##2]{\_isequal{##1}{ref}\_iffalse \_destboxori[##1:##2]\_fi}}
-\_def\_openslide{\_setbox\_slidepage=\_vbox\_bgroup \_setilevel
+\_def\_openslide{\_setbox\_slidepage=\_vbox\_bgroup \_setilevel
\_ifvoid\_slidepage \_else \_unvbox\_slidepage \_nointerlineskip\_lastbox \_fi}
\_def\_setilevel{\_loop \_decr\_gilevel \_ifnum\_gilevel<0 \_else \_begitems \_repeat}
-\_def\_closepage{\_egroups
+\_def\_closepage{\_egroups
\_ifnum \_maxlayers=0 \_unvcopy\_slidepage \_vfil\_break
- \_else \_begingroup \_setwarnslides \_layernum=0
- \_loop
+ \_else \_begingroup \_setwarnslides \_layernum=0
+ \_loop
\_ifnum\_layernum<\_maxlayers \_advance\_layernum by1
\_printlayers \_vfil\_break
- \_ifnum\_layernum<\_maxlayers \_incr\_slidelayer \_decr\_pageno \_fi
+ \_ifnum\_layernum<\_maxlayers \_incr\_slidelayer \_decr\_pageno \_fi
\_repeat
\_global\_maxlayers=0
- \_incr\_layernum \_global\_setbox\_slidepage=\_vbox{\_printlayers}%
+ \_incr\_layernum \_global\_setbox\_slidepage=\_vbox{\_printlayers}%
\_endgroup
\_fi}
\_def\_resetpage{%
@@ -217,10 +217,10 @@
\_doc -----------------------------
We must to redefine \`\fnotenumpages` because the data from `.ref` file
- are less usable for implementing such feature: the
- footnote should be in more layers repeatedly. But we can suppose that
+ are less usable for implementing such a feature: the
+ footnote should be in more layers repeatedly. But we can suppose that
each page starts by `\pg;` macro, so we can reset the footnote counter by
- this macro.
+ this macro.
\_cod -----------------------------
\_def \_fnotenumpages {\_def\_fnotenum{\_the\_lfnotenum}\_pgfnotefalse
diff --git a/macros/luatex/optex/base/styles.opm b/macros/luatex/optex/base/styles.opm
index c9ee386959..8df96f795d 100644
--- a/macros/luatex/optex/base/styles.opm
+++ b/macros/luatex/optex/base/styles.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \report {Basic styles of OpTeX <2020-03-28>} % preloaded in format
@@ -17,7 +17,7 @@
\_def\_boxlinesE{\_ifhmode\_egroup\_empty\_fi}%
\_def\_nl{\_boxlinesE}%
\_bgroup \_lccode`\~=`\^^M\_lowercase{\_egroup\_let~}\_boxlinesE
- \_everypar{\_setbox0=\_lastbox\_endgraf
+ \_everypar{\_setbox0=\_lastbox\_endgraf
\_hbox\_bgroup \_catcode`\^^M=13 \_let\par=\_nl \_aftergroup\_boxlinesC}%
}
\_def\_boxlinesC{\_futurelet\_next\_boxlinesD}
@@ -29,7 +29,7 @@
The \`\report` and \`\letter` style initialization macros are defined here.
\nl
The `\letter` defines \`\address` and \`\subject` macros.
- \_cod -----------------------------
+ \_cod -----------------------------
\_def\_report{
\_typosize[11/13.2]
@@ -89,18 +89,18 @@ The example of `\letter` style document follows:
Vážený pane řediteli
-na základě Vašeho dopisu č.j.~123456/78-dat a elektronické výzvy si dovoluji
-Vás požádat o prozkoumání mé možnosti další možnosti.
+na základě Vašeho dopisu č.j.~123456/78-dat a elektronické výzvy si dovoluji
+Vás požádat o prozkoumání mé možnosti další možnosti.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
-commodo consequat.
+commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
-esse cillum dolore eu fugiat nulla pariatur.
+esse cillum dolore eu fugiat nulla pariatur.
S úctou
diff --git a/macros/luatex/optex/base/table.opm b/macros/luatex/optex/base/table.opm
index d129ba5a02..09ece437ea 100644
--- a/macros/luatex/optex/base/table.opm
+++ b/macros/luatex/optex/base/table.opm
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \table {Basic macros for OpTeX <2020-05-26>} % preloaded in format
\_doc -----------------------------
- The result of the \`\table``{<declaration>}{<data>}` macro is inserted into
- `\_tablebox`. You can change default value if you want by
+ The result of the \`\table``{<declaration>}{<data>}` macro is inserted into
+ `\_tablebox`. You can change default value if you want by
`\let\_tablebox=\vtop` or `\let\_tablebox=\relax`.
\_cod -----------------------------
@@ -12,20 +12,20 @@
\_doc -----------------------------
We save the `to<size>` or `pxto<size>` to `#1` and \`\_tableW` sets the
- `to<size>` to the \`\_tablew` macro.
+ `to<size>` to the \`\_tablew` macro.
If `pxto<size>` is used then `\_tablew` is empty and `\_tmpdim` includes
given <size>. The `\_ifpxto` returns true in this case.
The `\table` continues by reading `{<declaration>}` in the \^`\_tableA` macro.
- Catcodes (for example the `|` character) have to be normal when reading
+ Catcodes (for example the `|` character) have to be normal when reading
`\table` parameters. This is the reason why we use `\catcodetable` here.
\_cod -----------------------------
\_newifi \_ifpxto
-\_def\_table#1#{\_tablebox\_bgroup \_tableW#1\_empty\_end
+\_def\_table#1#{\_tablebox\_bgroup \_tableW#1\_empty\_end
\_bgroup \_catcodetable\_optexcatcodes \_tableA}
-\_def\_tableW#1#2\_end{\_pxtofalse
- \_ifx#1\_empty \_def\_tablew{}\_else
+\_def\_tableW#1#2\_end{\_pxtofalse
+ \_ifx#1\_empty \_def\_tablew{}\_else
\_ifx#1p \_def\_tablew{}\_tableWx#2\_end \_else \_def\_tablew{#1#2}\_fi\_fi}
\_def\_tableWx xto#1\_end{\_tmpdim=#1\_relax \_pxtotrue}
\_public \table ;
@@ -36,8 +36,9 @@
`\_lineskip=-2\_tablinespace`. Normal table rows (where no `\hrule` is
between them) have normal baseline distance.\nl
The \`\_tableA``{<declaration>}` macro scans the `<declaration>` by
- `\_scantabdata#1\_relax` and continues by reading `{<data>}` by
- the \^`\_tableB` macro.
+ `\_scantabdata#1\_relax` and continues by processing `{<data>}` by \^`\_tableB`.
+ The trick `\_tmptoks={<data>}\_edef\_tmpb{\_the\_tmptoks}`
+ is used here in order to keep the hash marks in the <data> unchanged.
\_cod -----------------------------
\_def\_tableA#1{\_egroup
@@ -45,22 +46,22 @@
\_ea\_ifx\_ea^\_the\_tabstrut^\_setbox\_tstrutbox=\_null
\_else \_setbox\_tstrutbox=\_hbox{\_the\_tabstrut}%
\_setbox\_tstrutbox=\_hbox{\_vrule width\_zo
- height\_dimexpr\_ht\_tstrutbox+\_tablinespace
+ height\_dimexpr\_ht\_tstrutbox+\_tablinespace
depth\_dimexpr\_dp\_tstrutbox+\_tablinespace}%
\_offinterlineskip
\_lineskip=-2\_tablinespace
\_fi
- \_colnum=0 \_let\_addtabitem=\_addtabitemx
+ \_colnum=0 \_let\_addtabitem=\_addtabitemx
\_def\_tmpa{}\_tabdata={\_colnum1\_relax}\_scantabdata#1\_relax
- \_the\_everytable \_tableB
+ \_the\_everytable \_bgroup \_catcode`\#=12 \_tableB
}
\_doc -----------------------------
- The \`\_tableB``{<data>}` saves `<data>` to `\_tmpb`
+ The \`\_tableB` saves `<data>` to `\_tmpb`
and does four \^`\replstring`s to prefix each macro \^`\crl` (etc.)
- by `\_crcr`. The reason is: we want to use macros which scan its parameter
- to the delimeiter written in right part of table item declaration.
- See \^`\fS` for example. The `\crcr` cannot be hidden in other macro in such case.
+ by `\_crcr`. The reason is: we want to use macros that scan its parameter
+ to the delimiter written in the right part of the table item declaration.
+ See \^`\fS` for example. The `\crcr` cannot be hidden in another macro in this case.
The `\tabskip` value is saved for places between columns
into the \`\_tabskipmid` macro. Then it runs
@@ -68,30 +69,33 @@
\tabskip=\tabskipl \halign{<converted declaration>\tabskip=\tabskipr \cr <data>\crcr}
\endtt
This sets the desired boundary values of `\tabskip`. The
- \"between-columns" values are set as `\tabskip=`\^`\_tabskipmid` in the
+ \"between-columns" values are set as `\tabskip=`\^`\_tabskipmid` in the
`<converted declaration>` immediately after each column declarator.
If `pxto` keyword was used, then we set the virtual unit \^`\tsize` to
`\hsize` first. Then the first attempt of the table is created in box 0.
- Then the \^`\tsize` is re-calculated using `\wd0` and the real table is
- printed by `\halign` in the second pass.
+ Then the \^`\tsize` is re-calculated using `\wd0` and the real table is
+ printed by `\halign` in the second pass.
If no `pxto` keyword was used, then we print the table using `\halign`
directly. The \^`\_tablew` macro is nonempty if the `to` keyword was used.
Because the color selector with `\aftergroup` can be used inside the
- table item, we must to create second real group for each table item.
+ table item, we must create the second real group for each table item.
This is reason why we start `<converted declaration>` by `\bgroup` and we
end it by `\egroup` in the \`\_tableC` macro. Each `&` character
- is stored as `\egroup&\bgroup` in `<converted declaration>`. The
+ is stored as `\egroup&\bgroup` in `<converted declaration>`. The
`\halign\_tablew\_tableC` really does:
\begtt \catcode`\<=13
\halign\_tablew{\bgroup<converted declaration>\egroup\tabskip=\tabskipr \cr<data>\crcr}
\endtt
\relax
+ The <data> are re-tokenized by `\_scantextokens` in order to be more
+ robust to catcode changing inside the <data>. But inline verbatim cannot
+ work in special cases here like \code{`\{`} for example.
\_cod -----------------------------
-\_def\_tableB#1{\_def\_tmpb{#1}%
+\_def\_tableB #1{\_egroup \_def\_tmpb{#1}%
\_replstring\_tmpb{\crl}{\_crcr\crl}\_replstring\_tmpb{\crll}{\_crcr\crll}%
\_replstring\_tmpb{\crli}{\_crcr\crli}\_replstring\_tmpb{\crlli}{\_crcr\crlli}%
\_replstring\_tmpb{\crlp}{\_crcr\crlp}%
@@ -104,21 +108,22 @@
\_halign\_tablew \_tableC
\_fi \_egroup
}
-\_def\_tableC{\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_tabskip=\_tabskipr\_cr\_tmpb\_crcr}}
+\_def\_tableC{\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_tabskip=\_tabskipr\_cr
+ \_scantextokens\_ea{\_tmpb\_crcr}}}
\_newbox\_tstrutbox % strut used in table rows
\_newtoks\_tabdata % the \halign declaration line
\_doc -----------------------------
- The \`\_scantabdata` macro converts `\table`'s `<declaration>` to
+ The \`\_scantabdata` macro converts `\table`'s `<declaration>` to
`\halign` `<converted declaration>`.
- The result is stored into \`\_tabdata` tokens list.
- For example, the
+ The result is stored into \`\_tabdata` tokens list.
+ For example, the
following result is generated when `<declaration>=|cr||cl|`.
\begtt
- tabdata: \_vrule\_the\_tabiteml\_hfil#\_unsskip\_hfil\_the\_tabitemr\_tabstrutA
- &\_the\_tabiteml\_hfil#\_unsskip\_the\_tabitemr
- \_vrule\_kern\_vvkern\_vrule\_tabstrutA
+ tabdata: \_vrule\_the\_tabiteml\_hfil#\_unsskip\_hfil\_the\_tabitemr\_tabstrutA
+ &\_the\_tabiteml\_hfil#\_unsskip\_the\_tabitemr
+ \_vrule\_kern\_vvkern\_vrule\_tabstrutA
&\_the\_tabiteml\_hfil#\_unsskip\_hfil\_the\_tabitemr\_tabstrutA
&\_the\_tabiteml#\_unsskip\_hfil\_the\_tabitemr\_vrule\_tabstrutA
ddlinedata: &\_dditem &\_dditem\_vvitem &\_dditem &\_dditem
@@ -141,10 +146,10 @@
\_else \_def\_next{\_ea\_scantabdataA\_csname _tabdeclare#1\_endcsname}%
\_fi\_fi\_fi\_fi\_fi\_fi \_next
}
-\_def\_scantabdataA#1{\_addtabitem
- \_ea\_addtabdata\_ea{#1\_tabstrutA \_tabskip\_tabskipmid}\_scantabdata}
+\_def\_scantabdataA#1{\_addtabitem
+ \_ea\_addtabdata\_ea{#1\_tabstrutA \_tabskip\_tabskipmid\_relax}\_scantabdata}
\_def\_scantabdataB#1#2{\_addtabitem
- \_ea\_addtabdata\_ea{#1{#2}\_tabstrutA \_tabskip\_tabskipmid}\_scantabdata}
+ \_ea\_addtabdata\_ea{#1{#2}\_tabstrutA \_tabskip\_tabskipmid\_relax}\_scantabdata}
\_def\_scantabdataC {\_def\_tmpb{}\_afterassignment\_scantabdataD \_tmpnum=}
\_def\_scantabdataD#1{\_loop \_ifnum\_tmpnum>0 \_advance\_tmpnum by-1 \_addto\_tmpb{#1}\_repeat
\_ea\_scantabdata\_tmpb}
@@ -155,18 +160,18 @@
The \`\_addtabitemx` adds the boundary code (used between columns)
to the <converted declaration>. This code is
`\egroup &\bgroup \colnum=<value>\relax`. You can get the current number of
- column from the \`\colnum` register, but you cannot write
- `\the\colnum` as the first object in a <data> item because `\halign`
+ column from the \`\colnum` register, but you cannot write
+ `\the\colnum` as the first object in a <data> item because `\halign`
first expands the front of the item and the left part of the declaration
is processed after this. Use `\relax\the\colnum` instead. Or you can
- write:
+ write:
\begtt
\def\showcolnum{\ea\def\ea\totcolnum\ea{\the\colnum}\the\colnum/\totcolnum}
\table{ccc}{\showcolnum & \showcolnum & \showcolnum}
\endtt
This example prints 1/3 \ 2/3 \ 3/3, because the value of the `\colnum` is
equal to the total number of columns before left part of the column declaration
- is processed.
+ is processed.
\_cod -----------------------------
\_newcount\_colnum % number of current column in the table
@@ -196,7 +201,7 @@
The default \"declaration letters" `c`, `l`, `r` and `p` are declared
by setting \`\tabdeclarec`, \`\tabdeclarel`, \`\tabdeclarer` and
\`\paramtabdeclarep` macros. In general, define
- `\def\_tabdeclare<letter>{...}` for a non-parametric
+ `\def\_tabdeclare<letter>{...}` for a non-parametric
letter and `\def\_paramtabdeclare<letter>{...}` for a letter with a parameter.
The double hash `##` must be in the definition, it is replaced by a real table item data.
You can declare more such \"declaration letters" if you want.
@@ -206,42 +211,42 @@
\_def\_tabdeclarel{\_the\_tabiteml\_relax##\_unsskip\_hfil\_the\_tabitemr}
\_def\_tabdeclarer{\_the\_tabiteml\_hfil##\_unsskip\_the\_tabitemr}
\_def\_paramtabdeclarep#1{\_the\_tabiteml
- \_vtop{\_hsize=#1\_relax \_baselineskip=\_normalbaselineskip
+ \_vtop{\_hsize=#1\_relax \_baselineskip=\_normalbaselineskip
\_lineskiplimit=\_zo \_noindent##\_unsskip
\_ifvmode\_vskip\_dp\_tstrutbox \_else\_lower\_dp\_tstrutbox\_hbox{}\_fi}\_the\_tabitemr}
\_doc -----------------------------
- User puts optional spaces around the table item typically, i.e.\ he/she writes
- `& text &` instead `&text&`. The left space is ignored by internal \TeX/ algorithm but
+ Users put optional spaces around the table item typically, i.e.\ they write
+ `& text &` instead `&text&`. The left space is ignored by the internal \TeX/ algorithm but
the right space must be removed by macros. This is a reason why we recommend to
use \`\_unsskip` after each `##` in your definition of \"declaration letters".
- This macro isn't only the primitive `\unskip` because we allow usage of plain \TeX/
+ This macro isn't only the primitive `\unskip` because we allow usage of plain \TeX/
`\hideskip` macro: `&\hideskip text\hideskip&`.
\_cod -----------------------------
\_def\_unsskip{\_ifmmode\_else\_ifdim\_lastskip>\_zo \_unskip\_fi\_fi}
\_doc -----------------------------
- The \`\fL`, \`\fR`, \`\fC` and \`\fX` macros only does a special parameters settings
+ The \`\fL`, \`\fR`, \`\fC` and \`\fX` macros only do special parameters settings
for paragraph building algorithm. The \`\fS` prints the paragraph into
box 0 first, measures the number of lines by the `\prevgraf` primitive
- and use (or don't use) `\hfil` (for centering) before the first line.
+ and use (or don't use) `\hfil` (for centering) before the first line.
\_cod -----------------------------
-\_let\_fL=\_raggedright
-\_def\_fR{\_leftskip=0pt plus 1fill \_relax}
-\_def\_fC{\_leftskip=0pt plus1fill \_rightskip=0pt plus 1fill \_relax}
-\_def\_fX{\_leftskip=0pt plus1fil \_rightskip=0pt plus-1fil \_parfillskip=0pt plus2fil \_relax}
+\_let\_fL=\_raggedright
+\_def\_fR{\_leftskip=0pt plus 1fill \_relax}
+\_def\_fC{\_leftskip=0pt plus1fill \_rightskip=0pt plus 1fill \_relax}
+\_def\_fX{\_leftskip=0pt plus1fil \_rightskip=0pt plus-1fil \_parfillskip=0pt plus2fil \_relax}
\_long\_def\_fS #1\_unsskip{\_noindent \_setbox0 =\_vbox{\_noindent #1\_endgraf \_ea}%
\_ifnum\_prevgraf=1 \_hfil \_fi #1\_unsskip
}
\_public \fL \fR \fC \fX \fS ;
\_doc -----------------------------
- The family of `\_cr*` macros
- \`\crl`, \`\crll`, \`\crli`, \`\crlli`, \`\crlp` and
- \`\tskip` `<dimen>` is implemented here.
- The \`\_zerotabrule` is used in order to suppress the negative `\lineskip`
+ The family of `\_cr*` macros
+ \`\crl`, \`\crll`, \`\crli`, \`\crlli`, \`\crlp` and
+ \`\tskip` `<dimen>` is implemented here.
+ The \`\_zerotabrule` is used to suppress the negative `\lineskip`
declared by \^`\tablinespace`.
\_cod -----------------------------
@@ -249,7 +254,7 @@
\_def\_crll{\_crcr\_noalign{\_hrule\_kern\_hhkern\_hrule}}
\_def\_zerotabrule {\_noalign{\_hrule height\_zo width\_zo depth\_zo}}
-\_def\_crli{\_crcr \_zerotabrule \_omit
+\_def\_crli{\_crcr \_zerotabrule \_omit
\_gdef\_dditem{\_omit\_tablinefil}\_gdef\_vvitem{\_kern\_vvkern\_vrule}\_gdef\_vvitemA{\_vrule}%
\_vvleft\_tablinefil\_ddlinedata\_crcr \_zerotabrule}
\_def\_crlli{\_crli\_noalign{\_kern\_hhkern}\_crli}
@@ -262,7 +267,7 @@
\_vvleft\_crlpD\_ddlinedata \_global\_tmpnum=0 \_crcr \_zerotabrule}
\_def\_crlpA#1,{\_ifx\_end#1\_else \_crlpB#1-\_end,\_expandafter\_crlpA\_fi}
\_def\_crlpB#1#2-#3,{\_ifx\_end#3\_xdef\_crlplist{\_crlplist#1#2,}\_else\_crlpC#1#2-#3,\_fi}
-\_def\_crlpC#1-#2-#3,{\_tmpnum=#1\_relax
+\_def\_crlpC#1-#2-#3,{\_tmpnum=#1\_relax
\_loop \_xdef\_crlplist{\_crlplist\_the\_tmpnum,}\_ifnum\_tmpnum<#2\_advance\_tmpnum by1 \_repeat}
\_def\_crlpD{\_global\_advance\_tmpnum by1
\_edef\_tmpa{\_noexpand\_isinlist\_noexpand\_crlplist{,\_the\_tmpnum,}}%
@@ -270,7 +275,7 @@
\_def\_tskip{\_afterassignment\_tskipA \_tmpdim}
\_def\_tskipA{\_gdef\_dditem{}\_gdef\_vvitem{}\_gdef\_vvitemA{}\_gdef\_tabstrutA{}%
- \_vbox to\_tmpdim{}\_ddlinedata \_crcr
+ \_vbox to\_tmpdim{}\_ddlinedata \_crcr
\_zerotabrule \_noalign{\_gdef\_tabstrutA{\_copy\_tstrutbox}}}
\_public \crl \crll \crli \crlli \crlp \tskip ;
@@ -281,7 +286,7 @@
convert `<declaration>` from `\table` syntax to `\halign` syntax.
\_cod -----------------------------
-\_def\_mspan{\_omit \_tabdata={\_tabstrutA}\_let\_tmpa=\_relax \_afterassignment\_mspanA \_mscount=}
+\_def\_mspan{\_omit \_afterassignment\_mspanA \_mscount=}
\_def\_mspanA[#1]#2{\_loop \_ifnum\_mscount>1 \_cs{_span}\_omit \_advance\_mscount-1 \_repeat
\_count1=\_colnum \_colnum=0 \_def\_tmpa{}\_tabdata={}\_scantabdata#1\_relax
\_colnum=\_count1 \_setbox0=\_vbox{\_halign\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_cr#2\_cr}%
@@ -291,18 +296,18 @@
\_public \mspan ;
\_doc -----------------------------
- The \`\vspan``{<number>}{<text>}` implementaiton is here.
+ The \`\vspan``{<number>}{<text>}` implementation is here.
We need to lower the box by
\begtt \catcode`\<=13
(<number>-1)*(\ht+\dp of \tabstrut) / 2.
\endtt
- The `#1` parameter must be one-digit number. If you want to set more digits
- then use braces.
+ The `#1` parameter must be a one-digit number. If you want to set more digits
+ then use braces.
\_cod -----------------------------
\_def\_vspan#1#2{\_vtop to\_zo{\_hbox{\_lower \_dimexpr
#1\_dimexpr(\_ht\_tstrutbox+\_dp\_tstrutbox)/2\_relax
- -\_dimexpr(\_ht\_tstrutbox+\_dp\_tstrutbox)/2\_relax \_hbox{#2}}\_vss}}
+ -\_dimexpr(\_ht\_tstrutbox+\_dp\_tstrutbox)/2\_relax \_hbox{#2}}\_vss}}
\_public \vspan ;
\_doc -----------------------------
@@ -369,43 +374,43 @@ If the boundary declarator `:` is not used then
the boundaries of columns are just before each column declarator
with exception of the first one.
For example, the declaration `{|c||c(xx)(yy)c}`
-should be written more exactly using the boundary declarator `:`
+should be written more exactly using the boundary declarator `:`
by `{|c||:c(xx)(yy):c}`. But you can set these boundaries to
-another places using the boundary declarator~`:` explicitly,
-for example `{|c:||c(xx):(yy)c}`. The boundary declarator `:`
-can be used only once between each two column declarators.
+other places using the boundary declarator~`:` explicitly,
+for example `{|c:||c(xx):(yy)c}`. The boundary declarator `:`
+can be used only once between each pair of column declarators.
-Each table item has its own group. The `(<cmd>)` are parts of the given
+Each table item has its group. The `(<cmd>)` are parts of the given
table item (depending on the boundary declarator position).
-If you want to apply a special setting for given column, you can do this by
-`(<setting>)` followed by column declarator. But if such column is not
+If you want to apply a special setting for a given column, you can do this by
+`(<setting>)` followed by column declarator. But if the column is not
first, you must use `:(<setting>)`. Example. We have three centered columns,
-the second one have to be in bold font and the third one have to be in red:
+the second one have to be in bold font and the third one have to be in red:
`\table{c:(\bf)c:(\Red)c}{<data>}`
\secc Usage of the \code{\\tabskip} primitive
The value of `\tabskip` primitive is used between all columns of the table.
-It is glue-type, so it can be stretchable or shrinkable, see next
+It is glue-type, so it can be stretchable or shrinkable, see next
section~\ref[table.w].
By default, `\tabskip` is 0\,pt. It means that only \^`\tabiteml`,
\^`\tabitemr` and `(<cmds>)` can generate visual spaces between columns. But they
-are not real spaces between columns because they are in fact the part of
-the total column width.
+are not real spaces between columns because they are in fact the part of
+the total column width.
The `\tabskip` value declared before the \^`\table` macro (or in
-\^`\everytable` or in \^`\thistable`) is used between all columns in the table.
-This value is equal for all spaces between columns. But you can set each such space
-individualy if you use `(\tabskip=<value>)` in the <declaration> immediately
+\^`\everytable` or in \^`\thistable`) is used between all columns in the table.
+This value is equal to all spaces between columns. But you can set each such space
+individually if you use `(\tabskip=<value>)` in the <declaration> immediately
before boundary character. The boundary character represents the column pair for
-which the `\tabskip` have individual value. For example
-`c(\tabskip=5pt):r` gives `\tabskip` value betwen `c` and `r` columns.
-You need not to use boundary character explicitly, so `c(\tabskip=5pt)r` gives
+which the `\tabskip` has individual value. For example
+`c(\tabskip=5pt):r` gives `\tabskip` value between `c` and `r` columns.
+You need not use boundary character explicitly, so `c(\tabskip=5pt)r` gives
the same result.
-The space before first column is given by the \^`\tabskipl`
-and the space after last column is equal to \^`\tabskipr`.
+Space before the first column is given by the \^`\tabskipl`
+and space after the last column is equal to \^`\tabskipr`.
Default values are 0\,pt.
Use nonzero `\tabskip` only in special applications. If `\tabskip` is
@@ -421,9 +426,9 @@ There are two possibilities how to create tables to given width:
* `\table to<size>{<declaration>}{<data>}` uses stretchability or
shrinkability of all spaces between columns generated by `\tabskip` value and
eventually by \^`\tabskipl`, \^`\tabskipr` values. See example below.
-* `\table pxto<size>{<declaration>}{<data>}` expands the columns declared
+* `\table pxto<size>{<declaration>}{<data>}` expands the columns declared
by `p{<size>}`, if the `<size>` is given by a virtual \^`\tsize` unit.
- See example below.
+ See the example below.
\enditems
Example of `\table to<size>`:
@@ -433,11 +438,11 @@ Example of `\table to<size>`:
\table to\hsize {lr}{<data>}
\endtt
%
-This table has its width `\hsize`. First column starts at the left boundary of
-this table and it is justified left (to the boundary). Second column ends at
+This table has its width `\hsize`. The first column starts at the left boundary of
+this table and it is justified left (to the boundary). The second column ends at
the right boundary of the table and it is justified right (to the boundary).
-The space between them are stretchable and shrinkable in order to reach
-given width `\hsize`.
+The space between them is stretchable and shrinkable to reach
+the given width `\hsize`.
\medskip
Example of `\table pxto<size>` (means \"{\bf p}aragraphs e{\bf x}panded {\bf to}"):
@@ -445,7 +450,7 @@ Example of `\table pxto<size>` (means \"{\bf p}aragraphs e{\bf x}panded {\bf to}
\begtt
\table pxto\hsize {|c|p{\tsize}|}{\crl
aaa & Ddkas jd dsjds ds cgha sfgs dd fddzf dfhz xxz
- dras ffg hksd kds d sdjds h sd jd dsjds ds cgha
+ dras ffg hksd kds d sdjds h sd jd dsjds ds cgha
sfgs dd fddzf dfhz xxz. \crl
bb ddd ggg & Dsjds ds cgha sfgs dd fddzf dfhz xxz
ddkas jd dsjds ds cgha sfgs dd fddzf. \crl }
@@ -453,26 +458,26 @@ Example of `\table pxto<size>` (means \"{\bf p}aragraphs e{\bf x}panded {\bf to}
\noindent\table pxto\hsize {|c|p{\tsize}|}{\crl
aaa & Ddkas jd dsjds ds cgha sfgs dd fddzf dfhz xxz
- dras ffg hksd kds d sdjds h sd jd dsjds ds cgha
+ dras ffg hksd kds d sdjds h sd jd dsjds ds cgha
sfgs dd fddzf dfhz xxz. \crl
bb ddd ggg & Dsjds ds cgha sfgs dd fddzf dfhz xxz
ddkas jd dsjds ds cgha sfgs dd fddzf. \crl }
\medskip
-The first `c` colum is variable width (it gets the width of most wide item)
+The first `c` column is variable width (it gets the width of the most wide item)
and the resting space to given `\hsize` is filled by the `p` column.
-You can declare more than one `p{<coefficient>\tsize}` columns in the table
-when `pxto` keyword is used. The total sum of <coefficinets> must be exactly one.
-For example,
+You can declare more than one `p{<coefficient>\tsize}` columns in the table
+when `pxto` keyword is used. The total sum of <coefficinets> must be exactly one.
+For example,
\begtt \catcode`\<=13
-\table pxto13cm {r p{.3\tsize} p{.5\tsize} p{.2\tsize} l}{<data>}
+\table pxto13cm {r p{.3\tsize} p{.5\tsize} p{.2\tsize} l}{<data>}
\endtt
%
This gives the ratio of widths of individual paragraphs in the table.
-\secc `\eqbox`: boxes with equal width acros the whole document
+\secc `\eqbox`: boxes with equal width across the whole document
The \^`\eqbox` `[<label>]{<text>}` behaves like `\hbox{<text>}` in the first
run of \TeX. But the widths of all boxes with the same label are saved to
@@ -486,12 +491,12 @@ labeled by the same `[<label>]`. The documentation of the \LaTeX/ package
The \^`\eqboxsize` `[<label>]{<dimen>}` expands to <dim:label> if this value is known,
else it expands to the given <dimen>.
-The optional parameter `r` or `l` can be writen before `[<label>]` (for example
+The optional parameter `r` or `l` can be written before `[<label>]` (for example
`\eqbox r[label]{text}`) if you want to put the text to the right or to the
left side of the box width.
Try the following example and watch what happens after first \TeX/ run and
-after second one.
+after the second one.
\begtt
\def\leftitem#1{\par
@@ -511,7 +516,7 @@ after second one.
\vspan implemented.
2020-05-19 \fL, \fR ets defined.
\table to, \table pxto implemented.
-2020-05-10 \bgroup &\egroup added to tabdata (in order to \aftergroup from colors)
+2020-05-10 \bgroup &\egroup added to tabdata (in order to \aftergroup from colors)
boundary declarator : introduced
\_unsskip: \ifmmode added.
2020-04-10 second group for items in order to \localcolors
diff --git a/macros/luatex/optex/base/uni-lcuc.opm b/macros/luatex/optex/base/uni-lcuc.opm
index f5cb977f57..2a99f52d66 100644
--- a/macros/luatex/optex/base/uni-lcuc.opm
+++ b/macros/luatex/optex/base/uni-lcuc.opm
@@ -1,8 +1,8 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% Preloaded in format. A copy o uni-lcuc.tex fom csplain is here:
-% uni-lcuc.tex -- sets \lccodes and \uccodes for Unicode chars, nothing more
+% uni-lcuc.tex -- sets \lccodes and \uccodes for Unicode chars, nothing more
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Petr Olsak, Jul. 2014
diff --git a/macros/luatex/optex/base/unimath-codes.opm b/macros/luatex/optex/base/unimath-codes.opm
index 58e4fed8c6..21a9b1caeb 100644
--- a/macros/luatex/optex/base/unimath-codes.opm
+++ b/macros/luatex/optex/base/unimath-codes.opm
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \_ncharrmA {Uni math codes <2020-11-13>} % preloaded on demand by \loadmath
\_doc -----------------------------
The control sequences for `\alpha`, `\beta` etc are redefined here.
- The `\alpha` expands to the character with unicode `"03B1`, this is normal
- character $α$. You can type it directly in your editor, if you know how
+ The `\alpha` expands to the character with Unicode `"03B1`, this is a normal
+ character $α$. You can type it directly in your editor if you know how
to do this.
\_cod -----------------------------
@@ -110,8 +110,8 @@
\_protected\_def\_inmath#1{\_relax \_ifmmode#1\_fi} % to keep off \loop processing in text mode
% You can redefine these macros to follow your wishes.
-% For example you need upgright lowercase greek letters, you don't need
-% \bf and \bi behaves as sans serif in math, ...
+% For example, you need upright lowercase greek letters, you don't need
+% \bf and \bi behave as sans serif in math, ...
\_protected\_def\_rm {\_tryloadrm \_tenrm \_inmath{\_rmvariables \_rmdigits}}
\_protected\_def\_it {\_tryloadit \_tenit \_inmath{\_itvariables}}
@@ -135,7 +135,7 @@
the file `mathclass.txt` which is copied to `mathclass.opm` The file
has the following format:
{\vitt{mathclass.opm}\verbinput (70-85) mathclass.opm }
- We have to read this information and convert it to the `\Umathcode`s.
+ We have to read this information and convert it to the `\Umathcode`s.
\_cod -----------------------------
\_begingroup % \input mathclass.opm (which is a copy of MathClass.txt):
@@ -146,7 +146,7 @@
\_loop
\_pset{\_umathnumA}{#4}%
\_ifnum\_umathnumA<"#2 \_advance\_umathnumA by1
- \_repeat
+ \_repeat
\_fi
}
\_def\_pB#1{\_if#1L1\_fi \_if#1B2\_fi \_if#1V2\_fi \_if#1R3\_fi \_if#1N0\_fi \_if#1U0\_fi
@@ -163,9 +163,9 @@
\_doc -----------------------------
Each math symbol has its declaration in the file `unicode-math-table.tex`
- which is copied to `unimath-table.opm`. The file has following format:
+ which is copied to `unimath-table.opm`. The file has the following format:
{\vitt{unimath-table.opm}\verbinput (70-85) unimath-table.opm }
- We have to read this information and convert it to the Unicode math codes.
+ We have to read this information and convert it to the Unicode math codes.
\_cod -----------------------------
\_begingroup % \input unimath-table.opm (it is a copy of unicode-math-table.tex):
@@ -185,7 +185,7 @@
\_global\_Udelcode`<=1 "027E8 % these characters have different meaning
\_global\_Udelcode`>=1 "027E9 % as normal and as delimeter
-\_mit % default math alphapbets setting
+\_mit % default math alphabets setting
\_Umathcode `- = 2 1 "2212
%\_Umathcode`: = 3 1 "3A % mathclass defines it as 6 1 "3A (punctuation)
@@ -200,14 +200,14 @@
\_def\_intwithnolimits#1#2 {\_ifx#1\_relax \_else
\_ea\_let\_csname\_csstring#1op\_endcsname=#1%
\_ea\_def\_ea #1\_ea{\_csname\_csstring#1op\_endcsname \_nolimits}%
- \_bgroup \_lccode`\~=#2 \_lowercase{\_egroup \_mathcode`~="8000 \_let ~=#1}%
+ \_bgroup \_lccode`\~=#2 \_lowercase{\_egroup \_mathcode`~="8000 \_let ~=#1}%
\_ea \_intwithnolimits \_fi
}
-\_intwithnolimits \int "0222B \iint "0222C \iiint "0222D
- \oint "0222E \oiint "0222F \oiiint "02230
- \intclockwise "02231 \varointclockwise "02232 \ointctrclockwise "02233
+\_intwithnolimits \int "0222B \iint "0222C \iiint "0222D
+ \oint "0222E \oiint "0222F \oiiint "02230
+ \intclockwise "02231 \varointclockwise "02232 \ointctrclockwise "02233
\sumint "02A0B \iiiint "02A0C \intbar "02A0D \intBar "02A0E \fint "02A0F
- \pointint "02A15 \sqint "02A16 \intlarhk "02A17 \intx "02A18
+ \pointint "02A15 \sqint "02A16 \intlarhk "02A17 \intx "02A18
\intcap "02A19 \intcup "02A1A \upint "02A1B \lowint "02A1C \_relax "0
\_protected\_def \vert {\_Udelimiter 0 1 "07C }
@@ -235,13 +235,14 @@
\_let\|=\Vert
\_mathcode`\_="8000
-\_global\_Umathcode "22EF = 0 1 "22EF % mathclass.txt says that it is Rel
+\_global\_Umathcode "22EF = 0 1 "22EF % mathclass says that it is Rel
+\_global\_Umathcode "002E = 0 1 "002E % mathclass says that dot is Punct
\_global\_Umathchardef \unicodecdots = 0 1 "22EF
\_global\_Umathcode `/ = 0 1 `/ % mathclass says that / is Bin, Plain TeX says that it is Ord.
\_doc -----------------------------
- Aliases are declared here. They are names not menitioned in the `unimath-table.opm` file
+ Aliases are declared here. They are names not mentioned in the `unimath-table.opm` file
but commonly used in \TeX.
\_cod -----------------------------
@@ -272,36 +273,36 @@
\_let \hksearow=\hksearrow
\_let \hkswarow=\hkswarrow
-\_let \upalpha=\mupalpha
-\_let \upbeta=\mupbeta
-\_let \upgamma=\mupgamma
-\_let \updelta=\mupdelta
-\_let \upepsilon=\mupvarepsilon
+\_let \upalpha=\mupalpha
+\_let \upbeta=\mupbeta
+\_let \upgamma=\mupgamma
+\_let \updelta=\mupdelta
+\_let \upepsilon=\mupvarepsilon
\_let \upvarepsilon=\mupvarepsilon
-\_let \upzeta=\mupzeta
-\_let \upeta=\mupeta
-\_let \uptheta=\muptheta
-\_let \upiota=\mupiota
-\_let \upkappa=\mupkappa
-\_let \uplambda=\muplambda
-\_let \upmu=\mupmu
-\_let \upnu=\mupnu
-\_let \upxi=\mupxi
-\_let \upomicron=\mupomicron
-\_let \uppi=\muppi
+\_let \upzeta=\mupzeta
+\_let \upeta=\mupeta
+\_let \uptheta=\muptheta
+\_let \upiota=\mupiota
+\_let \upkappa=\mupkappa
+\_let \uplambda=\muplambda
+\_let \upmu=\mupmu
+\_let \upnu=\mupnu
+\_let \upxi=\mupxi
+\_let \upomicron=\mupomicron
+\_let \uppi=\muppi
\_let \uprho=\muprho
-\_let \upvarrho=\mupvarrho
-\_let \upvarsigma=\mupvarsigma
-\_let \upsigma=\mupsigma
-\_let \uptau=\muptau
-\_let \upupsilon=\mupupsilon
-\_let \upvarphi=\mupvarphi
-\_let \upchi=\mupchi
-\_let \uppsi=\muppsi
-\_let \upomega=\mupomega
-\_let \upvartheta=\mupvartheta
-\_let \upphi=\mupphi
-\_let \upvarpi=\mupvarpi
+\_let \upvarrho=\mupvarrho
+\_let \upvarsigma=\mupvarsigma
+\_let \upsigma=\mupsigma
+\_let \uptau=\muptau
+\_let \upupsilon=\mupupsilon
+\_let \upvarphi=\mupvarphi
+\_let \upchi=\mupchi
+\_let \uppsi=\muppsi
+\_let \upomega=\mupomega
+\_let \upvartheta=\mupvartheta
+\_let \upphi=\mupphi
+\_let \upvarpi=\mupvarpi
\_doc -----------------------------
The \`\not` macro is redefined here. If the `\_not!<char>` is defined
@@ -316,15 +317,15 @@
}}}
\_def\_negationof #1#2{\_ea\_let \_csname _not!\_csstring#1\_endcsname =#2}
-\_negationof = \neq
-\_negationof < \nless
+\_negationof = \neq
+\_negationof < \nless
\_negationof > \ngtr
\_negationof \gets \nleftarrow
\_negationof \simeq \nsime
-\_negationof \equal \ne
-\_negationof \le \nleq
-\_negationof \ge \ngeq
-\_negationof \greater \ngtr
+\_negationof \equal \ne
+\_negationof \le \nleq
+\_negationof \ge \ngeq
+\_negationof \greater \ngtr
\_negationof \forksnot \forks
\_negationof \in \notin
\_negationof \mid \nmid
@@ -370,45 +371,29 @@
\_doc -----------------------------
Newly declared public control sequences are used in internal macros by
- \OpTeX/. We need to get new meanings of these control sequences in
- private name space.
+ \OpTeX/. We need to get new meanings for these control sequences in
+ the private namespace.
\_cod -----------------------------
-\_private
- \ldotp \cdotp \bullet \triangleleft \trianglerigt \mapstochar \rightarrow
+\_private
+ \ldotp \cdotp \bullet \triangleleft \trianglerigt \mapstochar \rightarrow
\prime \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
\Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
\longrightarrow \Longleftrightarrow \vdots \ddots ;
\_endcode
-\secc A few observations
+\secc More Unicode-math examples
-{\bf 1.} You can combine more fonts in math, if you register them to another
-math families (5, 6, 7, etc.) in the \^`\normalmath` macro.
+Example of using additional math font is in section 5.3 in the
+\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]{\tt optex-math.pdf} documentation
-The default value of \^`\normalmath` shows a combination of base Unicode Math
-font with 8bit Math font at family 4. See definition of the `\script` macro where
-`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font
-accepts only codes less than 255.
-
-\medskip\noindent{\bf 2.}
-XITSmath-bold needs correction: the norm symbol $\|x\|$ is missing here.
-So, you can define:
-
-\begtt
-\def\_boldmath{%
- \loadumathfamily 1 {[xitsmath-bold]}{} % Base font
- \loadmathfamily 4 rsfs % script
- \loadumathfamily 5 {[xitsmath-regular]}{}
- \def\|{\Udelimiter 0 5 "02016 }% % norm delimiter from family 5
- \setmathdimens
-}
-\endtt
-
-\noindent{\bf 3.} You can combine more Unicode math fonts in single formula using
+You can combine more Unicode math fonts in single formula simply
+by the `\addUmathfont` macro, see
\ulink[http://petr.olsak.net/optex/optex-tricks.html#addumathfont]{\OpTeX/ trick 0030}.
+See \url{http://tex.stackexchange.com/questions/308749}
+for technical details about Unicode-math.
\_endinput
diff --git a/macros/luatex/optex/base/usebib.opm b/macros/luatex/optex/base/usebib.opm
index e278774c97..fbf4300356 100644
--- a/macros/luatex/optex/base/usebib.opm
+++ b/macros/luatex/optex/base/usebib.opm
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \MakeReference {Reading bib databases <2020-03-13>} % loaded on demand by \usebib
@@ -43,7 +43,7 @@
\_let\_citeI=\_relax \_xdef\_citelist{\_citelist\_citelistB}%
\_global\_let\_addcitelist=\_writeXcite
\_def\_tmp##1[*]##2\_relax{\_def\_tmp{##2}}\_expandafter\_tmp\_citelist[*]\_relax
- \_ifx\_tmp\_empty\_else % there was \nocite[*] used.
+ \_ifx\_tmp\_empty\_else % there was \nocite[*] used.
\_setbox0=\_vbox{\_hsize=\_maxdimen \_def\_citelist{}\_adef@{\_readbibentry}%
\_input #3.bib
\_expandafter}\_expandafter\_def\_expandafter\_citelist\_expandafter{\_citelist}%
@@ -91,7 +91,7 @@
\_def\lb@compare#1\lb@eoe#2\lb@eoe{% SpecialSort:
\_ifx\lb@sorttype\lb@namestring
\_ifx\_sortfield\_undefined \lb@compareA#1\lb@eoe#2\lb@eoe
- \_else
+ \_else
\_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb@entrykey\lb@temp
\_ifx\lb@temp\_empty \_toks1={#1\lb@eoe}\_else \_toks1=\_ea{\lb@temp\lb@eoe}\_fi
\_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb@currententry\lb@temp
@@ -113,7 +113,7 @@
\_catcode`\@=\_tmpnum
\_doc -----------------------------
- Main action per every entry.
+ Main action per each entry.
\_cod -----------------------------
\_def\MakeReference{\_par \_bibskip
@@ -123,33 +123,33 @@
\_bibmark=\_ea{\_tmpb}%
\_else \_bibmark={}\_fi
\_edef\_tmpb{\EntryKey}%
- \_noindent \_dest[cite:\_the\_bibnum]\_printlabel\EntryKey
- \_printbib
- {%
+ \_noindent \_dest[cite:\_the\_bibnum]\_printlabel\EntryKey
+ \_printbib
+ {%
\_RetrieveFieldIn{entrytype}\_entrytype
\_csname _print:BEGIN\_endcsname
- \_isdefined{_print:\_entrytype}\_iftrue
+ \_isdefined{_print:\_entrytype}\_iftrue
\_csname _print:\_entrytype\_endcsname
- \_else
+ \_else
\_ifx\_entrytype\_empty \_else
\_opwarning{Entrytype @\_entrytype\_space from [\EntryKey] undefined}%
\_csname _print:misc\_endcsname
\_fi\_fi
\_csname _print:END\_endcsname
- \_ifx\_wref\_wrefrelax\_else
+ \_ifx\_wref\_wrefrelax\_else
\_immediate\_wref\_Xbib{{\EntryKey}{\_the\_bibnum}{\_the\_bibmark}}\_fi
}\_par
}
\_doc -----------------------------
- The \`\_bprinta`, \`\_bprintb`, \`\_bprintc`, \`\_bprintv`
+ The \`\_bprinta`, \`\_bprintb`, \`\_bprintc`, \`\_bprintv`
commands used in the style files:
\_cod -----------------------------
\_def\_bprinta {\_bprintb*}
\_def\_bprintb #1[#2#3]{%
\_def\_bibfieldname{#2#3}%
- \_if!#2\_relax
+ \_if!#2\_relax
\_def\_bibfieldname{#3}%
\_RetrieveFieldIn{#3}\_bibfield
\_ifx\_bibfield\_empty\_else
@@ -177,12 +177,12 @@
\_def\_bprintvA #1,{%
\_if^#1^\_tmpb\_else
\_RetrieveFieldIn{#1}\_tmp
- \_ifx \_tmp\_empty
+ \_ifx \_tmp\_empty
\_else \_tmpa \_def\_tmpb{}\_def\_tmpa{}%
\_fi
\_ea \_bprintvA
\_fi
-}
+}
\_sdef{_pp:author}{\_letNames\_authorname}
\_sdef{_pp:editor}{\_letNames\_editorname}
\_def\_letNames{\_let\_Firstname=\Firstname \_let\_Lastname=\Lastname
@@ -190,7 +190,7 @@
}
\_doc -----------------------------
- Various macros + multilinguas. Note that \`\_nobibwarnlist` is used in
+ Various macros + multilingual. Note that \`\_nobibwarnlist` is used in
\`\_bibwarning` and it is set by \^`\nobibwarning` macro.
\_cod -----------------------------
@@ -205,7 +205,7 @@
The file `usebib.opm` implements the command
\~`\usebib/<sorttype> (<style>) <bibfiles>`
where `<sorttype>` is one letter `c` (references ordered by citation order in
-the text) or `s` (references ordered by key in the style file),
+the text) or `s` (references ordered by key in the style file),
`<style>` is the part of the name `bib-<style>.opm` of the style file
and `<bibfiles>` are one or more `.bib` file names without suffix separated by
comma without space. Example:
@@ -215,31 +215,31 @@ comma without space. Example:
\endtt
This command reads the `<bibfiles>` directly and creates the list of
-bibliographics references (only those declared by by \~`\cite[]` or
+bibliographic references (only those declared by \~`\cite[]` or
\~`\nocite[]` in the text). The formatting of such references is defined in the style
file.
The principle \"first entry wins" is used. Suppose `\usebib/s (simple) local,global`.
If an entry with the same label is declared in `local.bib` and in
-`global.bib` too then the first wins. So, you can set an exceptions in your
+`global.bib` too then the first wins. So, you can set exceptions in your
`local.bib` file for your document.
The `bib-<style>.opm` declares entry types (like `@BOOK`, `@ARTICLE`) and declares
-their mandatory and optionals fields (like `author`, `title`). When
-mandatory field is missing in an entry in the `.bib` file then warning is printed on the
+their mandatory and optional fields (like `author`, `title`). When
+a mandatory field is missing in an entry in the `.bib` file then a warning is printed on the
terminal about it. You can suppress such warnings by command
-\^`\nobibwarning`~`[<bib-labels>]`, where <bib-labels> is comma separated list
+\^`\nobibwarning`~`[<bib-labels>]`, where <bib-labels> is a comma-separated list
of labels (without spaces) where missing mandatory fields will be no warned.
-Old `.bib` files may use obscure notation for accents like `{\"o}`.
+Old `.bib` files may use the obscure notation for accents like `{\"o}`.
Recommendation: convert such old files to Unicode encoding. If you are
unable to do this then you can set \^`\bibtexhook={`\^`\oldaccents}`.
-\secc Notes for bib style writers
+\secc Notes for bib-style writers
The `.bib` files include records in the format:
-\begtt
+\begtt \catcode`\<=13
@<entry-type>{<label>,
<field-name> = "<field-data>",
<field-name> = "<field-data>",
@@ -255,22 +255,22 @@ reading by \LaTeX. It has worked with a set of <entry-types>, see the www
page \url{http://en.wikipedia.org/wiki/BibTeX}. The set of entry types
listed on this www page is de facto the Bib\TeX/ standard. The \OpTeX/ bib
style writer must \"declare" all such entry types and more non-standard
-entry types can be declared too, if there is a good reason for doing it. The
-word \"declare" used in previous sentence means that bib style writer must
+entry types can be declared too if there is a good reason for doing it. The
+word \"declare" used in the previous sentence means that a bib-style writer must
define the printing rules for each <entry-type>.
The printing rules for <entry-type> include: which fields will be printed, in
-what oder, by what format they will printed on (italic, caps, etc.),
-which fields are mandatory, which are optional and which are ingnored in
+what order, by what format they will be printed on (italic, caps, etc.),
+which fields are mandatory, which are optional, and which are ignored in
`.bib` records.
-The style writer can be inspired by two styles alredy done: `bib-simple.opm`
+The style writer can be inspired by two styles already done: `bib-simple.opm`
and `bib-iso690.opm`. The second one is documented in detail in
section~\ref[isobib].
The printing rules for each <entry-type> must be declared by
`\_sdef{_print:<entry-type>}` in `bib-<style>.opm` file.
-The `<entry-type>` have to be lowercase here. \OpTeX/ supports following
-macros for more comfortable setting of printing rules:
+The `<entry-type>` has to be lowercase here. \OpTeX/ supports following
+macros for a more comfortable setting of printing rules:
\begitems
* \^`\_bprinta` `[<field-name>] {<if defined>} {<if not defined>}`. The part <if defined>
@@ -285,7 +285,7 @@ macros for more comfortable setting of printing rules:
parameter can be used more than once and can be enclosed in nested
braces. The `*` parameter can be used at most once and cannot be enclosed
in braces. Warning: if the `\_bprintb` commands are nested (`\_bprintb` in
- `\_bprintb`), then you need to write `####1` parameter for internal `\_bprintb`.
+ `\_bprintb`), then you need to write the `####1` parameter for internal `\_bprintb`.
But if `\_bprinta` commands are nested then the parameter is not duplicated.
* \^`\_bprintc` `\macro {<if non-empty>}`. The <if non-empty> part is executed if
`\macro` is non-empty. The `*` parameter can be used, it is replaced by
@@ -293,45 +293,45 @@ macros for more comfortable setting of printing rules:
* \^`\_bprintv` `[<field1>,<field2>,...] {<if defined>} {<if not defined>}`.
The part <if defined> is executed if <field1> or <filed2> or ...
is defined, else the second part <if not defined> is executed.
- There is one filed name or the list field names separated by commas.
- The parts cannot include any parameter.
+ There is one filed name or the list field names separated by commas.
+ The parts cannot include any parameters.
\enditems
There are two special field-names: `!author` and `!editor`. The processed list of
authors or editors are printed here instead of raw data, see the commands
\~`\_authorname` and \~`\_editorname` below.
-The bib style writer can define `_print:BEGIN` and/or `_print:END`.
-They are executed at the begin or
+The bib-style writer can define `_print:BEGIN` and/or `_print:END`.
+They are executed at the beginning or
end of each `<entry-type>`. The formatting does not solve the numbering and
paragraph indentation of the entry. This is processed by \^`\_printbib` macro
used in \OpTeX/ (and may be redefined by the author or document designer).
The \^`\bibmark={something}` can be declared, for instance in the `_print:END` macro.
-Such bibmark is saved to the `.ref` file and used in next \TeX/ run as
+Such \"bibmark" is saved to the `.ref` file and used in next \TeX/ run as
`\cite` marks when `\nonumcitations` is set.
-Moreover, the bib style writer must declare the format of
-printing of special fields `author` and `editor`. These fields include a
+Moreover, the bib-style writer must declare the format of
+special fields `author` and `editor`. These fields include a
list of names, each name is precessed individually in a loop. The
-\^`\_authorname` or \^`\_editorname` is called for each name in the list.
-The bib style writer must define
+\^`\_authorname` or \^`\_editorname` is called for each name on the list.
+The bib-style writer must define
the \`\_authorname` and \`\_editorname` commands
in order to declare the format of printing each individual name.
The following control sequences can be used in these macros:
\begitems
-* `\_NameCount`: the number of currently processed author in the list
+* `\_NameCount`: the number of the currently processed author in the list
* `\_namecont`: the total number of the authors in the list
* `\_Lastname`, `\_Firstname`, `\_Von`, `\_Junior`: the parts of the name.
\enditems
-The whole style file is read in the group during `\usebib` command is executed
+The whole style file is read in the group during the `\usebib` command is executed
before typesetting the reference list. Each definition or setting is local
here.
The auto-generated phrases (dependent on current language) can be used in
-bib style files by `\_mtext{bib.<identifier>}`, where <ident> is an identifier of
+bib-style files by `\_mtext{bib.<identifier>}`, where <ident> is an identifier of
the phrase and the phrase itself is defined by
`\_sdef{_mt:bib.<identifier>:<language>}{<phrase>}`. See section~\ref[langphrases]
for more detail. Phrases for <identifiers>:
@@ -339,12 +339,12 @@ and, etal, edition, citedate, volume, number, prepages, postpages, editor,
editors, available, availablealso, bachthesis, masthesis, phdthesis
are defined already, see the end of section~\ref[langphrases].
-If you are using non-standard field-names in .bib database and bib style,
+If you are using non-standard field-names in .bib database and bib-style,
you have to declare them by `\_CreateField {<fieldname>}`.
You can declare `\_SortingOrder` in the manner documented by librarian package.
-User or author of the bib style can create the hidden field which has a
+User or author of the bib-style can create the hidden field which has a
precedence while sorting names. Example:
\begtt
@@ -361,7 +361,7 @@ sortedby = "Hzzadima Jan",
Now, this author is sorted between H and I, because the Ch digraph in this
name has to be sorted by this rule.
-If you need (for example) to place the autocitations before other citations,
+If you need (for example) to place the auto-citations before other citations,
then you can mark your entries in `.bib` file by `sortedby = "@"`, because this
character is sorted before `A`.
@@ -392,5 +392,5 @@ Feb. 2018: \input librarian does not create \jobname.lbr
% \input opmac-bib
% before using the command \usebib.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end
diff --git a/macros/luatex/optex/base/verbatim.opm b/macros/luatex/optex/base/verbatim.opm
index 028f544f7c..dc701c96eb 100644
--- a/macros/luatex/optex/base/verbatim.opm
+++ b/macros/luatex/optex/base/verbatim.opm
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_codedecl \begtt {Verbatim <2020-11-13>} % preloaded in format
\_doc ----------------------------
- The internal parameters
+ The internal parameters
\`\_ttskip`, \`\_ttpenalty`, \`\_viline`, \`\_vifile` and \`\_ttfont`
- for verbatim macros are set.
+ for verbatim macros are set.
\_cod ----------------------------
\_def\_ttskip{\_medskip} % space above and below \begtt, \verbinput
@@ -21,7 +21,7 @@
does the real work.
The \`\_printinverbatim``{<text>}` macro is used for `\code{<text>}` printing and for
- \code{`}<text>\code{`} printing. It is defined as `\hbox`, so the in-verbatim <text>
+ \code{`}<text>\code{`} printing. It is defined as `\hbox`, so the in-verbatim <text>
will be never broken. But you can re-define this macro.
When `\code` occurs in PDF outlines then it does the same as `\detokenize`.
@@ -29,12 +29,12 @@
\^`\_regoul` token list before `\edef`.
The `\code` is not `\proteced` because we want it expands to
- `\unexpanded{\code<space>{<text>}}` in `\write` parameters. This protect the
+ `\unexpanded{\code<space>{<text>}}` in `\write` parameters. This protect the
expansions of the `\code` parameter (like `\\`, `\^` etc.).
\_cod ----------------------------
\_def\_code#1{\_unexpanded\_ea{\_csname _code \_endcsname{#1}}}
-\_protected\_sdef{_code }#1{{\_escapechar=-1 \_ttfont \_the\_everyintt \_relax
+\_protected\_sdef{_code }#1{{\_escapechar=-1 \_ttfont \_the\_everyintt \_relax
\_ea\_printinverbatim\_ea{\_detokenize{#1}}}}
\_def\_printinverbatim#1{\_leavevmode\_hbox{#1}}
@@ -42,7 +42,7 @@
\_public \code ;
\_doc ----------------------------
- The \`\_setverb` macro sets all catcodes to \"verbatim mode". It should be used only
+ The \`\_setverb` macro sets all catcodes to \"verbatim mode". It should be used only
in a group, so we prepare a new catcode table with \"verbatim" catcodes and we define
it as\nl `\_catcodetable`\`\_verbatimcatcodes`. After the group is finished then
original catcode table is restored.
@@ -51,7 +51,7 @@
\_newcatcodetable \_verbatimcatcodes
\_def\_setverb{\_begingroup
\_def\do##1{\_catcode`##1=12 }
- \_dospecials
+ \_dospecials
\_savecatcodetable\_verbatimcatcodes % all characters are normal
\_endgroup
}
@@ -62,9 +62,9 @@
\`\activettchar``<char>` saves original catcode of previously declared `<char>` (if
such character was declared) using \`\_savedttchar` and \`\_savedttcharc`
values. Then new such values are stored. The declared character is activated
- by `\_adef` as a macro (active character) which opens a group,
- does `\_setverb` and other settings and reads its parameter until second the same
- character. This is done by the \`\_readverb` macro. Finally it prints scanned
+ by `\_adef` as a macro (active character) which opens a group,
+ does `\_setverb` and other settings and reads its parameter until second the same
+ character. This is done by the \`\_readverb` macro. Finally, it prints scanned
`<text>` by \^`\_printinverbatim` and closes group. Suppose that `\activettchar"` is
used. Then the following work is schematically done:
\begtt
@@ -85,13 +85,16 @@
\_public \activettchar ;
\_doc ----------------------------
- \`\begtt` is defined only as public. We don't need private `\_begtt` variant.
- This macro is defined by `\eoldef`, so user can put a parameter at the
- same line where `\begtt` is. This `#1` parameter is used after `\_everytt`
- parameters settings, so user can change them locally.
-
- The `\begtt` macro opens group, does \^`\_setverb` and another preprocessing, sets
- `\endlinechar` to `^^J` and reads the following text in verbatim mode
+ \`\begtt` is defined only as public. We don't need a private `\_begtt` variant.
+ This macro opens a group and sets `%` as an active character (temporary).
+ This will allow it to be used as the comment character at the same line after
+ `\begtt`. Then \`\_begtti` is run. It is defined by \^`\eoldef`,
+ so users can put a parameter at the
+ same line where `\begtt` is. This `#1` parameter is used after \^`\everytt`
+ parameters settings, so users can change them locally.
+
+ The \^`\_begtti` macro does \^`\_setverb` and another preprocessing, sets
+ `\endlinechar` to `^^J` and reads the following text in verbatim mode
until \`\endtt` occurs. This scanning is done by \`\_startverb` macro which is
defined as:
\begtt \adef/{\bslash}
@@ -99,25 +102,25 @@
\endtt
We must to ensure that the backslash in `\endtt` has category 12 (this is a
reason of the `\ea` chain in real code).
- The `#2` is something between `\endtt` and end of the same line and it is simply
+ The `#2` is something between `\endtt` and the end of the same line and it is simply
ignored.
The `\_startverb` puts the scanned data to \`\_prepareverbdata`. It sets the data
to `\_tmpb` without changes by default, but you should re-define it in order
- to do special changes, if you want. (For example, \^`\hisyntax` redefines
+ to do special changes if you want. (For example, \^`\hisyntax` redefines
this macro.) The scanned data have `^^J` at each end of line and all spaces are
- active characters (defined as {\visiblesp`\ `}).
- Other characters have normal category 11 or 12.
+ active characters (defined as {\visiblesp`\ `}).
+ Other characters have normal category 11 or 12.
When `\_prepareverbdata` finishes then `\_startverb` runs `\_printverb` loop
over each line of the data and does a final work: last skip plus `\noindent`
- in the next paragraph.
+ in the next paragraph.
\_cod ---------------------------
-\_eoldef \begtt#1{\_par \_wipeepar \_setxhsize
+\_def\begtt{\_par \_begingroup \_adef\%##1\_relax{\_relax}\_begtti}
+\_eoldef \_begtti#1{\_wipeepar \_setxhsize
\_vskip\_parskip \_ttskip
- \_begingroup
- \_setverb
+ \_setverb
\_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
\_adef{ }{\_dsp}\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
\_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
@@ -141,14 +144,17 @@
`\begtt...\endtt` and from `\verbinput` too.
The \^`\_testcommentchars` replaces the following `\_iftrue` to
- `\_iffalse` by default unless the \~`\commentchars` are set. So, main body
- of the loop is written in `\_else` part of the `\_iftrue` condition.
+ `\_iffalse` by default unless the \~`\commentchars` are set. So, the main body
+ of the loop is written in the `\_else` part of the `\_iftrue` condition.
The \^`\_printverbline``{<line>}` is called here.
The \`\_printverbline``{<line>}` expects that it starts in vertical mode and it must
- do `\par` in order to return the vertical mode. The \`\_printverblinenum`
+ do `\par` to return the vertical mode. The \`\_printverblinenum`
is used here: it does nothing when `\_ttline`\code{<0} else it prints the line
number using `\_llap`.
+
+ \`\_putttpenalty` puts \^`\_ttpenalty` before second and next lines, but
+ not before first line in each `\begtt...\endtt` environment.
\_cod ----------------------------
\_def\_printverb #1^^J#2{%
@@ -168,19 +174,19 @@
\_ifx\_end#2 \_let\_next=\_relax \_else \_def\_next{\_printverb#2}\_fi
\_next
}
-\_def\_printverbline#1{\_penalty \_ttpenalty
- \_indent \_printverblinenum \_kern\_ttshift #1\par}
+\_def\_printverbline#1{\_putttpenalty \_indent \_printverblinenum \_kern\_ttshift #1\par}
\_def\_initverblinenum{\_tenrm \_thefontscale[700]\_ea\_let\_ea\_sevenrm\_the\_font}
\_def\_printverblinenum{\_llap{\_sevenrm \_the\_ttline\_kern.9em}}
+\_def\_putttpenalty{\_def\_putttpenalty{\_penalty\_ttpenalty}}
\_doc ----------------------------
Macro \`\verbinput` uses a file read previously or opens the given file. Then
it runs the parameter scanning by \`\_viscanparameter` and \`\_viscanminus`.
- Finally the \`\_doverbinput` is run. At begining of `\_doverbinput`, we have
+ Finally the \`\_doverbinput` is run. At the beginning of `\_doverbinput`, we have
`\_viline`= number of lines already read using previous `\verbinput`,
`\_vinolines`= the number of lines we need to skip and `\_vidolnes`= the
number of lines we need to print.
- Similar preparation is done as in `\begtt` after the group is opened. Then
+ A similar preparation is done as in `\begtt` after the group is opened. Then
we skip \`\_vinolines` lines in a loop a and we read \`\_vidolines` lines. The
read data is accumulated into `\_tmpb` macro. The next steps are equal to
the steps done in \^`\_startverb` macro: data are processed via
@@ -250,7 +256,7 @@
\_ifnum\_vidolines=0 \_tmpnum=-1 \_fi
\_ifeof\_vifile \_tmpnum=\_vidolines\_space \_fi
\_loop \_ifnum\_tmpnum<\_vidolines\_space
- \_vireadline
+ \_vireadline
\_ifnum\_vidolines=0 \_else\_advance\_tmpnum by1 \_fi
\_ifeof\_vifile \_tmpnum=\_vidolines\_space \_else \_visaveline \_fi %% save line
\_repeat
@@ -271,13 +277,13 @@
\_doc -----------------------------
If the language of your code\label[commentchars]\wlabel{}
printed by \^`\verbinput` supports the
- format of comments started by two characters from beginning of the
+ format of comments started by two characters from the beginning of the
line then you can set these characters by \^`\commentchars``<first><second>`.
- Such comments are printed in non-verbatim mode without these two
- characters and they look like the verbatim printing is interrupred
+ Such comments are printed in the non-verbatim mode without these two
+ characters and they look like the verbatim printing is interrupted
at the places where such comments are.
See the section~\ref[lua] for good illustration.
- The file `optex.lua` is read by single command
+ The file `optex.lua` is read by a single command
`\verbinput (4-) optex.lua` here and the `\commentchars --` was set before it.
If you need to set a special character by \^`\commentchars` then you must
@@ -290,10 +296,10 @@
\endtt
There is one limitation when \TeX/ interprets the comments declared by
- \^`\commentchars`. Each block of comments are accummulated to one line
+ \^`\commentchars`. Each block of comments is accumulated to one line
and then it is re-interpreted by \TeX. So, the ends of lines in the
comments block are lost. You cannot use macros which
- need to scan end of lines, for example `\begtt...\endtt` inside comments
+ need to scan end of lines, for example `\begtt...\endtt` inside the comments
block does not work. The character `%` is ignored in comments but you can use `\%`
for printing or `%` alone for de-activating `\_endpar` from empty
comment lines.
@@ -301,7 +307,7 @@
Implementation: The \`\commentchars``<first><second>` redefines the \`\_testcommentchars`
used in \^`\_printverb` in order to it removes the following `\_iftrue`
and returns `\_iftrue` or `\_iffalse` depending on the fact that
- the comment characters are or aren't present at the beginning ot tested line.
+ the comment characters are or aren't present at the beginning of tested line.
If it is true (`\ifnum` expands to `\ifnum 10>0`) then the rest of the
line is added to the \`\_vcomments` macro.
@@ -311,7 +317,7 @@
The accumulated comments are printed whenever the non-comment line
occurs. This is done by \`\_printcomments` macro.
- You can re-define it, but main idea must be kept: it is printed in the
+ You can re-define it, but the main idea must be kept: it is printed in the
group, `\_reloding \_rm` initializes normal font, `\catcodetable0`
returns to normal catcode table used before `\verbinput` is started, and
the text accumulated in `\_vcomments` must be printed by
@@ -351,11 +357,12 @@
\_public \visiblesp ;
-\_endcode
+\_endcode
\_endinput
History:
+2020-12-30 ... \secc followed by \begtt must be unbreakable
2020-11-13 ... \commentchars implemented
2020-04-22 ... \ttshift introduced
2020-04-06 ... \visiblesp added
diff --git a/macros/luatex/optex/demo/op-demo.tex b/macros/luatex/optex/demo/op-demo.tex
index ea1dd5b65d..c116682e59 100644
--- a/macros/luatex/optex/demo/op-demo.tex
+++ b/macros/luatex/optex/demo/op-demo.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\fontfam[LMfonts] % Default font family: Latin Modern
@@ -8,7 +8,7 @@
\hyperlinks \Blue\Blue % active hyperlinks
\activettchar` % in-text verbatim by `...`
\everyintt={\Red} % in-text verbatim Red
-\enquotes % use \"text" for English quotation
+\enquotes % use \"text" for English quotation
\tit Demonstration
@@ -37,7 +37,7 @@ The subsection text\dots
\sec References
-There is a numbered equation.
+There is a numbered equation.
The number is auto-generated by `\eqmark` sequence.
$$\label[my-eq]
a^2 + b^2 = c^2 \eqmark
@@ -53,17 +53,17 @@ is on page~\pgref[my-pic].
You can refer to \url{http://petr.olsak.net} using `\url`.
Or use `\ulink` if the raw URL needs to be hidden:
\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}.
-The parameter text is colorized and it becomes
+The parameter text is colorized and it becomes
an active link if the `\hyperlinks` sequence
is used at the beginning of the document.
Internal links are activated too.
-\sec[tab-sec] Tables
+\sec[tab-sec] Tables
-The `\table` sequence can be used
+The `\table` sequence can be used
instead of \"low level" `\halign`.
-The following table is framed by `\frame` sequence
-in order to get a double frame.
+The following table is framed by the `\frame` sequence
+to get a double frame.
\bigskip
\caption/t [my-tab] Testing table.
@@ -76,8 +76,8 @@ in order to get a double frame.
\sec Images
-The images (PDF, JPG, PNG, TIFF) can be inserted
-by `\inspic` sequence. The `\caption`
+The images (PDF, JPG, PNG, TIFF) can be inserted
+by `\inspic` sequence. The `\caption`
can be added if you need to refer to a figure.
\label[my-pic]
@@ -95,7 +95,7 @@ by `\begtt` and `\endtt` sequences
This is verbatim.
All characters are printed $$, \, # etc.
\endtt
-or it can be included by `\verbinput` from external file.
+or it can be included by `\verbinput` from an external file.
\verbinput (98-100) op-demo.tex
@@ -106,7 +106,7 @@ The Math alphabets
are provided. For example:
$$
{\bi A} = \pmatrix {\cal C & \script C \cr
- \frak M & \bbchar R }.
+ \frak M & \bbchar R }.
$$
Hundreds of AMS symbols are available:
$\sphericalangle, \boxplus, \Cup, \Cap, \ldots$
@@ -117,11 +117,11 @@ The `\fontfam` command selects a desired family of fonts.
The `\typosize` or `\typoscale` sequences set the size
and baselineskip of used fonts (including math fonts).
The `\fnote` generates a footnote\fnote{Like this} and
-`\mnote` generates a margin note.
+`\mnote` generates a margin note.
The `\margins` sets margins and paper dimensions.
The `\cite` sequence can be used for bibliographic citations.
-The `\bib` sequence creates one bibliography record. Or
-you can use `\usebib` for direct access to the {\tt.bib} files.
+The `\bib` sequence creates one bibliography record. Or
+you can use `\usebib` for direct access to the {\tt.bib} files.
The list of features does not end here\dots
\bye
diff --git a/macros/luatex/optex/demo/op-letter-cs.tex b/macros/luatex/optex/demo/op-letter-cs.tex
index 1b5d722d3b..b6883cb74c 100644
--- a/macros/luatex/optex/demo/op-letter-cs.tex
+++ b/macros/luatex/optex/demo/op-letter-cs.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\letter % \letter OpTeX style activated
\fontfam[bonum]
diff --git a/macros/luatex/optex/demo/op-letter-en.tex b/macros/luatex/optex/demo/op-letter-en.tex
index a7f19c43d4..0154e48c01 100644
--- a/macros/luatex/optex/demo/op-letter-en.tex
+++ b/macros/luatex/optex/demo/op-letter-en.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\useOpTeX
\letter % \letter OpTeX style activated
diff --git a/macros/luatex/optex/demo/op-slides.tex b/macros/luatex/optex/demo/op-slides.tex
index c46a337524..8c9bca24fc 100644
--- a/macros/luatex/optex/demo/op-slides.tex
+++ b/macros/luatex/optex/demo/op-slides.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\slides % OpTeX slides style activated
@@ -27,7 +27,7 @@
* The the simple document looks like:
-\begtt
+\begtt
\slides % style initialized
%\wideformat % 16:9
\slideshow % partially uncovering ideas
@@ -41,12 +41,12 @@ text
\pg.
\endtt
-* If `\slideshow` is missing or commented out then
- \"partially uncovering ideas" (see later) are deactivated. It is useful
+* If `\slideshow` is missing or commented out then
+ \"partially uncovering ideas" (see later) are deactivated. It is useful
for printing.
* The `\slideshow` must be the last command in the declaration part of the
document.
-* By default, the slides have A5 landscape format.
+* By default, the slides have A5 landscape format.
You can declare `\wideformat`. Then the height is the same
but width is 263\,mm, i.\,e.~the ratio width:height is 16:9.
@@ -58,31 +58,31 @@ text
by `\tit Title` (terminated by end of line).
* The `\subtit Author name etc.`\ (terminated by end of line)
can be used after `\tit` at the first slide.
-* You can use `\nl` for new line in paragraphs or titles.
+* You can use `\nl` for a new line in paragraphs or titles.
\sec Default design
* The paragraph texts are ragged right.
-* Titles, subtitles and section titles are centered.
+* Titles, subtitles, and section titles are centered.
* The `\sec` and `\secc` are printed without numbers.
* No paragraph indentation, a little vertical space between paragraphs.
-* The Heros font family (aka Helvetica) is initialized as default.\nl
+* The Heros font family (aka Helvetica) is initialized as default.\nl
Sans-serif FiraMath font for math typesetting is used.\nl
If `\fontfam[<famname>]` precedes `\slides` then it rewrites default.
-* The items in lists are started by blue square (`\type X` and `\type x` ).
+* The items in lists are started by a blue square (`\type X` and `\type x` ).
\pg; %------------------------------------------------------------------
\sec One slide (one page)
-* Top level item list is activated by default. The asterisk `*` opens
- new item at the top level list.
+* Top-level item list is activated by default. The asterisk `*` opens
+ new item at the top-level list.
* Nested items lists (second and more level) should be created in
the `\begitems`\dots`\enditems` environments.
* Each slide (page) must be terminated by `\pg;` command.
* The last slide must be terminated by `\pg.` command or by `\bye`.
-\begtt
+\begtt
\sec My ideas
* First idea
@@ -94,7 +94,7 @@ text
* Final idea
\endtt
-* Note: each page is processed in a group, so: put your own definitions
+* Note: each page is processed in a group, so: put your own definitions
(if~exist) before `\slideshow` or use `\global` assignment.
\pg; %------------------------------------------------------------------
@@ -106,14 +106,14 @@ text
* the character `;` -- normal next page,\pg+
* the character `.` -- the end of the document,\pg+
* the character `+` -- next page keeps the same text
- and a next text is added (usable for partially uncovering of ideas).\pg+
+ and a next text is added (usable for partially uncovering of ideas).\pg+
\enditems
* Summary:
\begtt
\pg; ... next page
\pg. ... the end of the document
-\pg+ ... uncover next text at the same page
+\pg+ ... uncover next text on the same page
\endtt
\pg+
@@ -140,9 +140,9 @@ The previous page was created by:
* Summary
...
-* When `\slideshow` is not declared
+* When `\slideshow` is not declared
then `\pg+` is deactivated.\pg+
-* The `\pg+` creates a new \"virtual page",
+* The `\pg+` creates a new \"virtual page",
so the current paragraph is terminated.
\pg;
\endtt
@@ -151,16 +151,16 @@ The previous page was created by:
\sec Notes
-* When `\slideshow` is active then you cannot reference sections by
+* When `\slideshow` is active then you cannot reference sections by
hyperlinked `\ref`. Only `\pgref` works (and goes to the last layer
of the referenced page).
* If the text overfull the page (slide) then it follows to the next page without
- saying explicitly `\pg;`. But `\slideshow` cannot work in such case.\pg+
+ saying explicitly `\pg;`. But `\slideshow` cannot work in this case.\pg+
\sec More about design
-* You can use `\backgroundpic{<image-file>}` for putting an image to the backgroud.
-* You can re-declare `\footline` or re-define internal macros for design as
+* You can use `\backgroundpic{<image-file>}` for putting an image to the background.
+* You can re-declare `\footline` or re-define internal macros for design as
you wish.
* You can put the images or text wherever using `\putimege` or `\puttext`
macros...
@@ -182,14 +182,14 @@ The previous page was created by:
prints red HELLO, as shown here.\pg+
* `\putpic <right> <up> <width> <height> {<image-file>}`
- puts the image with desired <width> and <height> at the position like
+ puts the image with desired <width> and <height> at the position like
`\puttext` puts the text.
\putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
-* The ring above is the result of
+* The ring above is the result of
\begtt
-\putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
+\putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
\endtt
%
used at beginning of this paragraph.\pg+
@@ -204,22 +204,22 @@ The previous page was created by:
a~group.
* The exception is the nested environment `\begitems...\enditems`.
* The `\pg+` always finalizes the current paragraph.
- It is impossible to hide only a part of horizontal mode.\pg+
+ It is impossible to hide only a part of the horizontal mode.\pg+
\sec The \code{\\layers}\,...\code{\\endlayers} environment
-If you really need something unsupported by `\pg+` then you can use
+If you really need something unsupported by `\pg+` then you can use
\begtt \catcode`\<=13
\layers <number>
<layered text>
\endlayers
-\endtt
+\endtt
* The <layered text> should include conditions like
- `\ifnum\layernum...` or `\ifcase\layernum`.
+ `\ifnum\layernum...` or `\ifcase\layernum`.
It is printed <number> times to more slide pages (layers) with the same
- surrounding text. See next page...
+ surrounding text. See next page...
\pg; %------------------------------------------------------------------
@@ -240,7 +240,7 @@ The transparent (invisible) text is used in other cases.
The following dance:
\layers 3
-{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
+{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
\endlayers
\pg+
@@ -248,13 +248,13 @@ was generated by
\begtt
\layers 3
-{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
+{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
\endlayers
\endtt
\pg+
-* The <layered text> is treated as macro parameter. So, you cannot use verbatim
- nor `\sec` titles here. Maximal one `\layers` environment can be per one
+* The <layered text> is treated as a macro parameter. So, you cannot use verbatim
+ nor `\sec` titles here. Maximal one `\layers` environment can be per one
page (terminated by `\pg+` or `\pg;` or `\pg.`
\pg; %------------------------------------------------------------------
@@ -264,15 +264,15 @@ was generated by
The \LaTeX{} package {\bf\Blue Beamer} gives much more features and many themes
are prepared for Beamer, {\bf\Red but}
\pg+
-* the user of Beamer is forced to {\em program} his/her document using
+* the user of Beamer is forced to {\em program} his/her document using
dozens of \code{\\begin{foo}} and \code{\\end{foo}} and many another
programming constructions,\pg+
-* plain \TeX{} gives you a possibility to simply
+* plain \TeX{} gives you a possibility to simply
{\em write} your document with minimal markup. The result is more compact.
- You can concentrate to the contents of your document, not to the
+ You can concentrate on the contents of your document, not on the
programming syntax.\pg+
* User needs to read 250 pages of doc for understanding Beamer,\pg+
-* on the other hand, you need to read only ten
+* on the other hand, you need to read only ten
slides\fnote{this eleventh slide isn't counted}
and you are ready to use {\bf\Blue\OpTeX/ slides}.
diff --git a/macros/luatex/optex/doc/optex-doc.pdf b/macros/luatex/optex/doc/optex-doc.pdf
index 2c54019fe3..aacd564a60 100644
--- a/macros/luatex/optex/doc/optex-doc.pdf
+++ b/macros/luatex/optex/doc/optex-doc.pdf
Binary files differ
diff --git a/macros/luatex/optex/doc/optex-doc.tex b/macros/luatex/optex/doc/optex-doc.tex
index 227718cc29..4ce127f903 100644
--- a/macros/luatex/optex/doc/optex-doc.tex
+++ b/macros/luatex/optex/doc/optex-doc.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% Run optex optex-doc
% (three times) to generate OpTeX documentation including references and the index.
@@ -20,9 +20,9 @@
\tit Format Based on Plain \TeX/ and OPmac\fnotemark1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\hfill Version 0.18
+\hfill Version 0.19
-\centerline{\it Petr Olšák, 2020}
+\centerline{\it Petr Olšák, 2020, 2021}
\bigskip
\centerline{\url{http://petr.olsak.net/optex}}
@@ -45,7 +45,7 @@ The main goal of \OpTeX/ is:
\begitems
* \OpTeX/ keeps the simplicity (like in Plain \TeX/ and OPmac macros).
-* There is no old obscurities concerning with various 8-bit encodings and
+* There is no old obscurities concerning various 8-bit encodings and
various engines.
* \OpTeX/ provides a powerful Fonts Selection System (for Unicode font
families, of course).
@@ -56,20 +56,20 @@ The main goal of \OpTeX/ is:
\fnotetext{All these features are implemented by \TeX/ macros, no external
program is needed.}
* Macros are documented in the same place where code is.
-* User name space of control sequences is separated from internal name space
- of \OpTeX/ and primitives (`\foo` versus `\_foo`). The name spaces for
- macro writers are designed too.
+* User namespace of control sequences is separated from the internal namespace
+ of \OpTeX/ and primitives (`\foo` versus `\_foo`).
+ The namespaces for macro writers are designed too.
\enditems
If you need to customize your document or you need to use something
very specific, then you can copy relevant parts of \OpTeX/ macros into your macro
-file and do changes of these macros here. This is significant difference from
-\LaTeX/ or ConTeXt, which are an attempt to create a new user level with a
+file and do changes to these macros here. This is a significant difference from
+\LaTeX/ or ConTeXt, which is an attempt to create a new user level with a
plenty of non-primitive parameters and syntax hiding \TeX/ internals.
The macros from \OpTeX/ are simple and straightforward because they solve only
-what is explicitly needed, they does not create a new user level for
-controlling your document. We have \TeX.
-You can use \OpTeX/ macros, understand them an modify them.
+what is explicitly needed, they do not create a new user level for
+controlling your document. We are using \TeX/ directly in this case.
+You can use \OpTeX/ macros, understand them, and modify them.
\OpTeX/ offers a markup language for authors of texts (like \LaTeX),
i.\,e.\ the fixed set of tags to define the structure of the document. This
@@ -80,7 +80,7 @@ The manual includes two parts: user documentation and technical
documentation. The second part is generated directly from the sources of
\OpTeX/. There are many hyperlinks from one part to second and vice versa.
-This manual describes \OpTeX/ features only. We suppose that user knows \TeX/
+This manual describes \OpTeX/ features only. We suppose that the user knows \TeX/
basics. They are described in many books. You can see a short
document \ulink[http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf]
{\TeX/ in nutshell} too.
diff --git a/macros/luatex/optex/doc/optex-math.tex b/macros/luatex/optex/doc/optex-math.tex
index 29f56f6822..c36459f74e 100644
--- a/macros/luatex/optex/doc/optex-math.tex
+++ b/macros/luatex/optex/doc/optex-math.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% Run optex optex-math (two times) to generate this document
% or look at PDF here: http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf
@@ -52,24 +52,24 @@
\author Petr Olšák
-This document is a brief summary about typesetting math. It describes \TeX/,
+This document is a brief summary of typesetting math. It describes \TeX/,
Plain \TeX/ and \OpTeX/ features concerned to math. The first two types of
-features are documented in \TeX/book in chapters 16, 17 and 18, but it is
+features are documented in \TeX/book in chapters 16, 17, and 18, but it is
summarized here in short again in order to give a complete guide about math
typesetting for \OpTeX/ users.
\new {}
The \OpTeX/ features which differs from standard \TeX/ or Plain \TeX/ are
documented with the red triangle at the margin (like in this paragraph).
-Reader can simply distinguish between \"standard" features (given by
+Reader can simply distinguish between \"standard" features (given by
\TeX/ or Plain \TeX/) and new \OpTeX/ features.
There are more types of extensions: e\TeX, lua\TeX/, Unicode math and
-\OpTeX/ macros. The appropriate label (e\TeX, Lua\TeX/, Unicode, \OpTeX/)
+\OpTeX/ macros. The appropriate label (e\TeX, Lua\TeX/, Unicode, \OpTeX/)
is appended to the red triangle to inform you about the extension type.
-Nevertheless, \OpTeX/ user doesn't have to worry about it, all extensions
+Nevertheless, \OpTeX/ user doesn't have to worry about it, all extensions
are available if Unicode Math font is loaded (e.g., by the command
-`\fonfam[lmfonts]`). See section 1.3.3 in \OpTeX/ documentation about
+`\fonfam[lmfonts]`). See section 1.3.3 in \OpTeX/ documentation about
loading Unicode math fonts.
{\iindent=2em
@@ -82,46 +82,46 @@ loading Unicode math fonts.
\secc General rules and terminology
The \ii in-line/math in-line math (in the paragraph) is created by `$<math list>$`. The
-\ii display/math display math (standalone line between paragraphs) is created by `$$<math list>$$`.
-More than one line can be here if appropriate macro is used. In-line math is
+\ii display/math display math (a standalone line between paragraphs) is created by `$$<math list>$$`.
+More than one line can be here if an appropriate macro is used. In-line math is
processed in a \TeX/ group in \ii in-line/math/mode {\em in-line math mode}. The display math is
processed in a \TeX/ group in \ii display/math/mode {\em display math mode}. Spaces are
ignored in math modes, so `$x+y$` and `$x + y$` gives the same result: $x+y$.
-The \ii math/list <math list> is a sequence of \ii math/atom,atom {\em math atoms} and
-\ii other/material {\em other material}.
-The math atoms are \ii single/math/object {\em single math objects} or
+The \ii math/list <math list> is a sequence of \ii math/atom,atom {\em math atoms} and
+\ii other/material {\em other material}.
+The math atoms are \ii single/math/object {\em single math objects} or
\ii composed/math/atom composed math atoms.
\begitems \hfuzz=.6pt
* The single math object is a single character to be printed in math mode
like `x`, `+`, `\int`.
-* The math atom is constructed in genereal by `{<math list 1>}^{<math list 2>}_{<math list 3>}`.
- It consists from \ii nucleus {\em nucleus} <math list 1>, \ii exponent exponent <math list 2>
+* The math atom is constructed in general by `{<math list 1>}^{<math list 2>}_{<math list 3>}`.
+ It consists from \ii nucleus {\em nucleus} <math list 1>, \ii exponent exponent <math list 2>
and \ii subscript subscript <math list 3>. Each part of the atom should be empty.
If <math list 2> or <math list 3> is empty, we need not to write brackets and
the prefix `^` or `_`.
If the <math list 1> or <math list 2> or <math list 3>
- consist only from a single math object then we need not to use brackets.
+ consist only from a single math object then we need not use brackets.
For example
- `x^2` is a math atom with `x` in nucleus, `2` in exponent and with empty subscript.
- Or `a_{i,j}` is a math atom with `a` in nucleus, empty exponent and `i,j` in subscript.%
+ `x^2` is a math atom with `x` in the nucleus, `2` in the exponent, and with empty subscript.
+ Or `a_{i,j}` is a math atom with `a` in the nucleus, empty exponent, and `i,j` in the subscript.%
\fnote{In \OpTeX/, the character `_` can be interpreted as a part of
- control sequence name, not as the subscript constructor. But in common cases,
- constructions of math atoms are interpreded exactly as in plain \TeX. See sections
+ the control sequence name, not as the subscript constructor. But in common cases,
+ constructions of math atoms are interpreted exactly as in plain \TeX. See sections
2.2.2 and 2.14 of \OpTeX/ documentation for more details. If you want to
- be sure that `_` is only subscript constructor in \OpTeX/ then you can set \code{\\catcode`\\_=8}
+ be sure that `_` is just a subscript constructor in \OpTeX/ then you can set \code{\\catcode`\\_=8}
but after this, you cannot use control sequences with `_` character.}
- The constructors for exponent `^` and for subscript `_` can be used in arbitrary order
- after the nucleus, for example `z_1^{x+y}` is the same math atom as
+ The constructors for exponent `^` and subscript `_` can be used in arbitrary order
+ after the nucleus, for example, `z_1^{x+y}` is the same math atom as
`z^{x+y}_1`. The single math objects not followed by `^` nor `_` are
- considered as math atoms with this object in nucleus and with empty
- exponent and subscript (this is very common case).
+ considered as math atoms with this object in the nucleus and with empty
+ exponent and subscript (this is a very common case).
\TeX/ assigns the \ii class {\em class} for each math atom, see section~\ref[class].
-* Other material can be \TeX/ box or glue (space) or `\kern` or `\vrule` etc.
+* Other material can be \TeX/ box or glue (space) or `\kern` or `\vrule` etc.
\enditems
-Example: The `Z = \int``_\Omega x^{2y} + z\, dx` generates
+Example: The `Z = \int``_\Omega x^{2y} + z\, dx` generates
$Z = \int_\Omega x^{2y} + z\, dx$ and it is <math list> which consists from:
\begitems
@@ -135,15 +135,15 @@ $Z = \int_\Omega x^{2y} + z\, dx$ and it is <math list> which consists from:
\enditems
* `+` is math atom with empty exponent and subscript, class: Bin,
* `z` is math atom with empty exponent and subscript, class: Ord,
-* `\,` is other material, the glue (space) in this case,
+* `\,` is another material, the glue (space) in this case,
* `d` is math atom with empty exponent and subscript, class: Ord,
-* `x`is math atom with empty exponent and subscript, class: Ord.
+* `x` is math atom with empty exponent and subscript, class: Ord.
\enditems
\secc[class] Classes of math atoms
\TeX/ assigns \ii class {\em a class} for each math atom.\fnote
-{Using terminology of \TeX/book, each single math object has its {\em class} but the
+{Using terminology of \TeX/book, each single math object has its {\em class} but the
math atom has its {\em kind} derived from this class. I use only one word
for both meanings in this document.}
This data type is used when
@@ -153,13 +153,13 @@ that spaces in the input are ignored.) For example,
small spaces around the `+` binary operator. Compare: $xy$ and $x+y$.
The class is assigned depending on the nucleus of the atom. If the nucleus is
-not single math object, i.e. it is constructed by `{<math list>}` with braces
-then the atom has its class Ord. If the nucleus is single math object constructed
+not a single math object, i.e. it is constructed by `{<math list>}` with braces
+then the atom has its class Ord. If the nucleus is a single math object constructed
without braces then the class of the atom depends on this single math
object. Each single math object must be declared in \TeX/ with its default
class. The following table lists the classes with typical examples.
-Full set of all math objects used in math typesetting
-is listed in the section~\ref[objects] with their default classes.
+The full set of all math objects used in math typesetting
+is listed in section~\ref[objects] with their default classes.
\bigskip
\noindent\hfil\table{llll}{
@@ -175,13 +175,13 @@ is listed in the section~\ref[objects] with their default classes.
}
\bigskip
-There are \ii horizontal/spacing,spacing three space types used
+There are \ii horizontal/spacing,spacing three space types used
by the algorithm for horizontal spacing in the math formulas.
\begitems
* \ii thin/space Thin space: \x`\thinmuskip` primitive register, `\,` macro. Used around Op atoms.
* \ii medium/space Medium space: \x`\medmuskip` primitive register, `\>` macro. Used around Bin atoms.
-* \ii thick/space Thick space: \x`\thickmusip` primitive register, `\;` macro. Used around Rel atoms.
+* \ii thick/space Thick space: \x`\thickmusip` primitive register, `\;` macro. Used around Rel atoms.
\enditems
\puttext 7.8cm -3.7cm {\rotbox{90}{Left atom}}
@@ -191,7 +191,7 @@ by the algorithm for horizontal spacing in the math formulas.
\table {l|8c|} {
\omit & Ord & Op & Bin & Rel & Open & Close & Punct & \omit \hfil Inner \crlp{2-9}
Ord & 0 & 1 & 2 & 3 & 0 & 0 & 0 & 1 \cr
- Op & 1 & 1 & & 3 & 0 & 0 & 0 & 1 \cr
+ Op & 1 & 1 & & 3 & 0 & 0 & 0 & 1 \cr
Bin & 2 & 2 & & & 2 & & & 2 \cr
Rel & 3 & 3 & & 0 & 3 & 0 & 0 & 3 \cr
Open & 0 & 0 & & 0 & 0 & 0 & 0 & 0 \cr
@@ -202,22 +202,22 @@ by the algorithm for horizontal spacing in the math formulas.
\hangindent=-8.7cm \hangafter=0
Ord atoms are printed without spaces between them. The spaces are not
-cummulated, so the rule about spaces mentioned above is only rough idea.
-The exact rule for horizontal spaces is given for each pairs of atoms
-in the table here. The symbol 0 means no space, 1 thin space, 2 medium space
+cumulated, so the rule about spaces mentioned above is only a rough idea.
+The exact rule for horizontal spaces is given for each pairs of atoms
+in the table here. The symbol 0 means no space, 1 thin space, 2 medium space,
and 3 means thick space.
\hangindent=-8.7cm \hangafter-2
-The Bin atom is automaticaly transformed to the
-Ord atom if no atom precedes or if Op, Bin, Rel, Open or Punct atom
+The Bin atom is automatically transformed to the
+Ord atom if no atom precedes or if Op, Bin, Rel, Open, or Punct atom
precedes. And it is transformed to the Ord atom if Rel, Close or Punct atom
follows. This corresponds to the empty cells in the table.
Why such behavior? Compare \"\hbox{$0-3$}" and \"$-3$". The Bin atom in
the second case behaves like Ord atom because it is \ii unary/minus {\em unary minus}.
-There is no space between unary minus and the following object.
+There is no space between the unary minus and the following object.
All medium spaces and thick spaces and some thin spaces from this table are
-omitted if the <math list> is processed in
+omitted if the <math list> is processed in
\ii script/style,scriptscript/style script or scriptscript styles
(smaller size). See section~\ref[styles] about math styles.
@@ -225,20 +225,20 @@ You can overwrite the default class derived from the nucleus of the atom by
\TeX/ primitives \x`\mathord`, \x`\mathop`, \x`\mathbin`, \x`\mathrel`, \x`\mathopen`,
\x`\mathclose`, \x`\mathpunct` and \x`\mathinner`. They can precede a nucleus of
the atom and they set the class of the atom.
-For example, `x \mathrel+ y` behaves like `x = y` in spacing point of view but +
+For example, `x \mathrel+ y` behaves like `x = y` from a spacing point of view but +
is printed. Another example: `\mathop{\rm lim} z` creates the atom `lim` in
roman font of class Op. So, the thin space is inserted between lim and $z$.
There are more special kinds of math atoms: fractions, math accents,
-radicals. They are constructed by special way (see next sections) but they behaves
-like Ord atom in the horizontal spacing algorithm.
+radicals. They are constructed in a special way (see next sections) but they behave
+like Ord atom in the horizontal spacing algorithm.
\secc[styles] Math styles
When a formula (or a sub-formula) is processed by \TeX/ then one from four
\ii math/style,display/style,text/style,script/style,scriptscript/style
styles is active: display style ($D$), text style ($T$), script style ($S$) or
-scriptscript style ($SS$).
+scriptscript style ($SS$).
\ii T/style,D/style,S/style,SS/style The $T$ style is started in in-line math mode `$...$` and the $D$
style is started in display math mode `$$...$$`. The first level of exponents or
@@ -247,12 +247,12 @@ exponents or indexes are processed in $SS$ style.
There are special rules for math styles when fractions are constructed, see
section~\ref[frac].
-The $D$ and $T$ style uses basic \ii font/size font size, $S$ uses smaller font size (typically
+The $D$ and $T$ styles use basic \ii font/size font size, $S$ uses smaller font size (typically
70~\%) and $SS$ style uses more smaller font size (typically 50~\%). Next
levels of \"more smaller fonts" are not used due to classical typographic rules.
The \ii nucleus nucleus of \iid Op atoms (big operators, $\sum$, $\int$, etc.) have typically bigger versions
-of the character shape for $D$ style than for $T$ style.
+of the character shape for $D$ style than for $T$ style.
So, there are four sizes for such math
objects: one size for each math style. All other math objects (with non Op
class) are printed only in three sizes: The sizes for $T$ and $D$ styles are equal.
@@ -272,7 +272,7 @@ objects above and below the nucleus (regardless of the current style). There
can be more such primitives in a queue (due to a macro expansion, for
instance). Then the last primitive in the queue wins.
If the last primitive is \x`\displaylimits` then
-default behavior is processed regardless there are \x`\limits` or \x`\nolimits`
+the default behavior is processed regardless there are \x`\limits` or \x`\nolimits`
before it.
$$
`\sum\nolimits``_{i=1}^\infty` \quad \hbox{gives}\quad \sum\nolimits_{i=1}^\infty
@@ -289,41 +289,49 @@ example, you can create a formula in in-line math mode and in $D$ style by
by `$$\textstyle <fomrula>$$`.
If a subformula is placed below something (below a line from root symbol,
-below a fraction line), then the processed style $D, T, S$ or $SS$ is
+below a fraction line), then the processed style $D, T, S$ or $SS$ is
\ii cramped/style {\em cramped}.
-The exponents are positioned slightly lower than in
-\ii non-cramped/style non-cramped style.
+The exponents are positioned slightly lower than in
+\ii non-cramped/style non-cramped style. The selectors `\displaystyle`\,\dots
+`\scriptscriptstyle` mentioned above select non-cramped style. The
+non-cramped style is selected when math mode starts too.
+\new \OpTeX/
+You can select a cramped style by the macro \x`\cramped` at the start of the
+math formula or after the math-style selectors: `\scriptstyle\cramped` for
+example.
Several macros need to know what math style is currently processed (for
example they need to draw something in an appropriate size). But it
-not possible simply due to the syntax of fractions (section~\ref[frac]).
+not possible simply due to the syntax of fractions (section~\ref[frac]).
This syntax requires to process all math lists in two steps: the first step
expands all macros and creates structured data of processed math list. The
second step reads the output of the first step, switches between math
-styles and creates definitive output. So, macros (working in first step)
+styles and creates definitive output. So, macros (working in the first step)
cannot know the current math
style because it is set only in the second step. \TeX/ supports the primitive
\x`\matchchioce``{<D>}{<T>}{<S>}{<SS>}` which prepares four math lists in the
first step and only one of these four lists are used in the second step. We
can put different macros into each of the four parameters of `\mathchoice`.
Plain \TeX/ supports the macro \x`\mathpalette` which gives a more comfortable
-interface of \x`\mathchoice` to macro programmer.
+interface of \x`\mathchoice` to the macro programmer.
+The cramped/non-cramped variants of the current style are kept when `\mathchioce`
+is used.
\new \OpTeX/
-We describe another interface for creating macros depending on current
-style. You can use \x`\mathstyles``{<math list>}`. It
-behaves like `{<math list>}`, moreover, you can use following commands inside such
+We describe another interface for creating macros depending on the current
+style. You can use \x`\mathstyles``{<math list>}`. It
+behaves like `{<math list>}`, moreover, you can use the following commands inside such
<math list>:
\begitems
-* The macro \x`\currstyle`. It expands to
+* The macro \x`\currstyle`. It expands to
`\displaystyle`, `\textstyle`,
`\scriptstyle` or `\scriptscriptstyle` depending on the current math style
- when the `\mathstyles` was opened.
+ when the `\mathstyles` was opened.
* The \x`\dobystyle``{<D>}{<T>}{<S>}{<SS>}` is expandable macro. It expands its
parameter `<D>`, `<T>`, `<S>` or `<SS>` depending on the current math style
when `\mathstyles` was opened.
-* The value of the \x`\stylenum` register is 0, 1, 2 or 3
- depending on the current math style when `\mathstyles` was opened.
+* The value of the \x`\stylenum` register is 0, 1, 2 or 3
+ depending on the current math style when `\mathstyles` was opened.
\enditems
%
Example of usage of \x`\mathstyles`:
@@ -340,23 +348,23 @@ This example gives Test: $a\mysymbol b_{c \mysymbol d}$ or $a\mysymbol b\over c$
The \x`\mathstyles` macro mentioned above uses \TeX/ primitive \x`\mathchoice`, so it
creates four math lists and only one is used. It may take more
-computer time in special cases.
+computer time in special cases.
\new Lua\TeX/
-Lua\TeX/ supports the \x`\mathstyle` primitive
+Lua\TeX/ supports the \x`\mathstyle` primitive
(no \"`s`" at the end of this control sequence) which
expands to values 0 to 7 depending on the current style:
-$D, D', T, T', S, S', SS, SS'$
+$D, D', T, T', S, S', SS, SS'$
(where $X'$ means cramped variant of the style). This primitive does
not use `\mathchoice` but it simply ignores the fraction syntax, so
`$a\mysymbol b\over c$` cannot work if `\mysymbol` is defined using the `\mathstyle`
-primitive. See section 7.3.1 of Lua\TeX/ documentation for more information.
+primitive. See section 7.3.1 of Lua\TeX/ documentation for more information.
\secc[frac] Fractions
The \iid fraction can be constructed by `{<numerator>`\x`\over``<denominator>}`. If the
-fraction is only single object in the whole math mode (between dollars),
-you need not to use the outer braces, so you can write `$1\over2$` to get $1\over2$.
+fraction is only a single object in the whole math mode (between dollars),
+you need not use the outer braces, so you can write `$1\over2$` to get $1\over2$.
The \ii numerator,denominator <numerator> and <denominator> are printed in \"smaller" math style than
current math style. More exactly the following schema is used.
@@ -371,12 +379,12 @@ $$
The \LaTeX/ macro \x`\frac``{<numerator>}{<denominator>}` is not supported in
Plain \TeX/ nor in \OpTeX/ but you can define such macro if you want.
-The syntax with \x`\over` is more preferred because it is more human readable
+The syntax with \x`\over` is more preferred because it is more human-readable
notation. You can write the fraction in the same manner as you can read it.
You can compare: `$1\over2$` (one over two) with `$\frac12$` (frac twelve).
Besides the `\over` primitive, there are analogical \TeX/ primitives which
-create \"generalized" fractions. The result is similar as `{<above>\over <below>}`
+create \"generalized" fractions. The result is similar to `{<above>\over <below>}`
but there is something extra:
\begitems
@@ -396,7 +404,7 @@ declared as {\em math delimiter} in \TeX. They are vertically scalable
math objects, typically brackets. See section~\ref[delims] for more
information about math delimiters. Example:
$$
- `{n \atopwithdelims() k}`\quad \hbox{ creates }
+ `{n \atopwithdelims() k}`\quad \hbox{ creates }
{n \choose k} \hbox{ in $D$ style and }
\textstyle {n \choose k} \hbox{ in $T$ style}.
$$
@@ -404,7 +412,7 @@ The \x`\choose` macro is defined by `\def\choose{\atopwithdelims()}`, so the
user can write `{n\choose k}` in order to get binomial coefficients.
-\secc[delims] Vertically scalable objects: math delimiters
+\secc[delims] Vertically scalable objects: math delimiters
The vertically scalable objects are called \ii delimiters {\em delimiters}. For example,
all types of brackets are declared as delimiters.
@@ -412,55 +420,55 @@ This means that you can use a bracket in arbitrary
vertical size.\fnote{
This is not exactly true, because traditional typography says that they
cannot be scaled continuously but by visible steps. This means that there is
-a sequence of increasing brackets in the font, reader must see a difference
-between each two sizes of brackets.}
+a sequence of increasing brackets in the font, the reader must see a difference
+between every two sizes of brackets.}
The following objects are declared as delimiters (i.e.\ vertically scalable):
\bigskip
{\tt \adef!{\bslash}
\table{l 14c}{
- \rm source: & ( & ) & [ & ] & \code{\\\{} & \code{\\\}} & /
- & !backslash & !langle & !rangle
- & | & \code{\\|} & \cr
- \rm output: &$($&$)$&$[$&$]$& $\{$ & $\}$ & $/$
- & $\backslash$ & $\langle$ & $\rangle$
+ \rm source: & ( & ) & [ & ] & \code{\\\{} & \code{\\\}} & /
+ & !backslash & !langle & !rangle
+ & | & \code{\\|} & \cr
+ \rm output: &$($&$)$&$[$&$]$& $\{$ & $\}$ & $/$
+ & $\backslash$ & $\langle$ & $\rangle$
& $|$ & $\|$
}
\medskip
\table{l 14c}{
\rm source: & !lfloor & !rfloor & !lceil & !rceil \cr
- \rm output: & $\lfloor$ & $\rfloor$ & $\lceil$ & $\rceil$
+ \rm output: & $\lfloor$ & $\rfloor$ & $\lceil$ & $\rceil$
}
\medskip
\table{l 14c}{
- \rm source: & !uparrow & !Uparrow & !dowarrow & !Downarrow
+ \rm source: & !uparrow & !Uparrow & !dowarrow & !Downarrow
& !updownarrow & !Updownarrow \cr
\rm output: & $\uparrow$ & $\Uparrow$ & $\downarrow$ & $\Downarrow$
& $\updownarrow$ & $\Updownarrow$
}}
\bigskip
\noindent \new Unicode
-If you are able to produce the characters $\langle$, $\rangle$,\fnote
+If you can produce the characters $\langle$, $\rangle$,\fnote
{Do not confuse $\string<, >$ and $\langle, \rangle$. The first pair are Rel atoms
with meaning \"less than" or \"greater than", but the second pair are special
types of brackets. They are not directly available at computer keyboards without
using a keyboard macro.}
-$\lfloor$, $\rfloor$, ... $\updownarrow$, $\Updownarrow$
+$\lfloor$, $\rfloor$, ... $\updownarrow$, $\Updownarrow$
directly in your text editor then you can use these Unicode characters in your source instead of control
sequences `\langle`, `\rangle`, `\lfloor`, `\rfloor` ... `\updownarrow`, `\Updownarrow`.
For many users (including me), there is more simple to type `\lfloor` than to find
-how to create the $\lfloor$ character in my text editor. Note that there exist
+how to create the $\lfloor$ character in my text editor. Note that there exist
text editors (Emacs, for example)
enabling you to type `\lfloor` and this control sequence is immediately
-converted to the $\lfloor$ Unicode character.
+converted to the $\lfloor$ Unicode character.
Your source text looks pretty and you can use classical \TeX/ sequences.
\new Unicode
There are more \ii delimiters delimiters, but it heavily depends on loaded Unicode Math
font. For example, this document is printed in `latinmodern-math` font and
-there are six more delimiters `\lBrack`~$\lBrack$, `\rBrack`~$\rBrack$,
-`\lAngle` $\lAngle$, `\rAngle` $\rAngle$, `\lgroup` $\lgroup$, `\rgroup` $\rgroup$.
+there are six more delimiters `\lBrack`~$\lBrack$, `\rBrack`~$\rBrack$,
+`\lAngle` $\lAngle$, `\rAngle` $\rAngle$, `\lgroup` $\lgroup$, `\rgroup` $\rgroup$.
See section~\ref[objects] for table of all Unicode symbols for math typesetting.
Arbitrary tall formula can be surrounded by a pair of delimiters using
@@ -469,14 +477,14 @@ The delimiters are scaled to the height and depth of the <formula>
and vertically centered to the {\em math axis}.\fnote
{Math axis is a horizontal line passing through the center of symbols $+$
and $-$. All vertically scalable objects are vertically centered with
- respect to this axis.}
+ respect to this axis.}
Example:
$$
- `+ \left\{ \sum_{i=1}^\infty x_i \right)` \quad \hbox{ gives }
+ `+ \left\{ \sum_{i=1}^\infty x_i \right)` \quad \hbox{ gives }
+ \left\{ \sum_{i=1}^\infty x_i \right).
$$
The pair `\left<delim> <formula> \right<delim>` creates the formula in a
-\TeX/ group. Such group can be nested with another groups.
+\TeX/ group. Such group can be nested with another groups.
Each `\left` must have its `\right` counterpart at the same group level.
If you don't want to create visible delimiter, use dot instead <delim>.
Example:
@@ -484,24 +492,24 @@ $$
`\left. \int``_0^t e^{x^2}\,dx\, \right|_{t=42}` \quad \hbox{ gives }
\left. \int_0^t e^{x^2} \,dx\, \right|_{t=42}
$$
-
+
\new e\TeX/
You can use \x`\middle``<delim>` inside the <formula> which is surrounded by
`\left...\right`. Then the given <delim> is scaled to the same size like
-their `\left` and `\right` counterparts.
+their `\left` and `\right` counterparts.
When a delimiter is used without `\left` nor `\right` prefix, then it is the
Open, Close, Ord or Bin atom by its natural meaning:
$(, [, \{, \ldots, \lfloor, \lceil$ are Open atoms,
-$], ], \}, \ldots, \rfloor, \rceil$ are Close atoms,
-$/, \backslash, |, \|$ are Ord atoms and
+$], ], \}, \ldots, \rfloor, \rceil$ are Close atoms,
+$/, \backslash, |, \|$ are Ord atoms and
$\uparrow, \Uparrow, \ldots, \Updownarrow$ are Bin atoms. You can overwrite
this default setting, for example `\mathclose(`. If delimiters are used with
`\left` and `\right` prefixes then `\left<delim>` behaves like Open atom,
`\right<delim>` behaves like Close atom and the math list
`\left<delim><formula>\right<delim>` is encapsulated as a single Inner atom.
The `\middle<delim>` behaves like Open atom at its left side and like Close
-atom at its right side.
+atom at its right side.
The sequence of increasing delimiters can be printed by the following
macros:
@@ -509,28 +517,28 @@ $$
`(` \to (,\quad \x`\big``(` \to \big(,\quad \x`\Big``(` \to \Big(,\quad
\x`\bigg``(` \to \bigg(, \quad \x`\Bigg``(` \to \Bigg(.
$$
-The `\Bigg<delim>` is not maximal size of the bracket. Try
-`\left(\vbox to5cm{}\right.`, for example. You can see that the font
+The `\Bigg<delim>` is not the maximal size of the bracket. Try
+`\left(\vbox to5cm{}\right.`, for example. You can see that the font
\"cheats" from certain sizes, because there are not all infinity number of
sizes of brackets drawn in the font, of course.
The `\big<delim>` creates Ord atom. We need to create Open atom
-for opening bracket and Close atom for closing bracket more often.
+for opening bracket and Close atom for closing bracket more often.
Then we can use macros
-\x`\bigl``<delim>`,
-\x`\Bigl``<delim>`,
-\x`\biggl``<delim>`,
+\x`\bigl``<delim>`,
+\x`\Bigl``<delim>`,
+\x`\biggl``<delim>`,
\x`\Biggl``<delim>` for creating Open atoms and
-\x`\bigr``<delim>`,
-\x`\Bigr``<delim>`,
-\x`\biggr``<delim>`,
+\x`\bigr``<delim>`,
+\x`\Bigr``<delim>`,
+\x`\biggr``<delim>`,
\x`\Biggr``<delim>` for creating Close atoms. Unfortunately, the source is not
too attractive when more sizes of brackets are used, but typographic
traditions say that we have to distinguish brackets by the size in math
mode if they are in equal types:
$$
`\Bigl( f\bigl( 2(x+y) + z\bigr) \Bigr)'` \quad \hbox{gives }
- \Bigl(f\bigl(2(x+y)+z\bigr)\Bigr)'.
+ \Bigl(f\bigl(2(x+y)+z\bigr)\Bigr)'.
$$
\secc Horizontally scalable objects: math accents
@@ -542,11 +550,11 @@ $$
$$
The usage is: control sequence of selected math accent followed by `{<math list>}`.
-Standard scalable math accents are:
-\x`\overline` $\overline{abc}$,
+Standard scalable math accents are:
+\x`\overline` $\overline{abc}$,
\x`\overbrace` $\overbrace{abc}$,
\x`\overrightarrow` $\overrightarrow{abc}$,
-\x`\overleftarrow`~$\overleftarrow{abc}$,
+\x`\overleftarrow`~$\overleftarrow{abc}$,
\x`\underline` $\underline{abc}$,
\x`\underbrace` $\underbrace{abc}$.
@@ -556,9 +564,9 @@ $$
`\overbrace {b\cdot b\cdot b \cdots b}^{k\times}` \quad \hbox{gives }
\overbrace {b\cdot b\cdot b \cdots b}^{k\times}
$$
-There are scalable accents with limited maximum width:
+There are scalable accents with a limited maximum width:
\x`\widehat` $\widehat{abc}$ and \x`\widetilde` $\widetilde{abc}$. If the
-formula is wider than the font is able to cover then widest variant from the
+formula is wider than the font can cover then the widest variant from the
font is used and it is horizontally centered.
\new Unicode
@@ -572,23 +580,23 @@ There are more scalable accents in Unicode math fonts:
\secc Fixed math accents
-Fixed \ii math/accent,accent math accents can be applied to single math object or to the `{<math list>}`.
+Fixed \ii math/accent,accent math accents can be applied to single math object or to the `{<math list>}`.
The accent is centered (with respect of slanting axis) and the result is a
nucleus of Ord
atom. For example `\dot x` gives $\dot x$. The list of fixed math accents
-follows: \x`\acute`` x` $\acute x$, \x`\bar`` x` $\bar x$,
+follows: \x`\acute`` x` $\acute x$, \x`\bar`` x` $\bar x$,
\x`\breve`` x` $\breve x$, \x`\check`` x` $\check x$,
-\x`\dot`` x` $\dot x$, \x`\ddot`` x` $\ddot x$,
-\x`\grave`` x` $\grave x$, \x`\hat`` x` $\hat x$,
+\x`\dot`` x` $\dot x$, \x`\ddot`` x` $\ddot x$,
+\x`\grave`` x` $\grave x$, \x`\hat`` x` $\hat x$,
\x`\vec`` x` $\vec x$, \x`\tilde`` x` $\tilde x$.
\new Unicode
The additional fixed accents depends on used Unicode math font. The
`latinmodern-math` supports:
-\x`\ovhook`` x` $\ovhook x$, \x`\ocirc`` x` $\ocirc x$,
-\x`\leftharpoonaccent`` x` $\leftharpoonaccent x$, \x`\rightharpoonaccent`` x` $\rightharpoonaccent x$,
-\x`\dddot`` x` $\dddot x$, \x`\ddddot`` x` $\ddddot x$,
-\x`\widebridgeabove`` x` $\widebridgeabove x$, \x`\asteraccent`` x` $\asteraccent x$.
+\x`\ovhook`` x` $\ovhook x$, \x`\ocirc`` x` $\ocirc x$,
+\x`\leftharpoonaccent`` x` $\leftharpoonaccent x$, \x`\rightharpoonaccent`` x` $\rightharpoonaccent x$,
+\x`\dddot`` x` $\dddot x$, \x`\ddddot`` x` $\ddddot x$,
+\x`\widebridgeabove`` x` $\widebridgeabove x$, \x`\asteraccent`` x` $\asteraccent x$.
There exist one special math accent `'` (single quote, ASCII 39)
which can be appended after a symbol like this: `f'`
@@ -608,9 +616,9 @@ example `\root k+1\of x` gives $\root k+1\of x$.
\secc Math alphabets
-Letters \ii math/alphapbet $a\dots z$, $A\dots Z$ and $\alpha$\dots$\omega$ are printed in italic
+Letters \ii math/alphabet $a\dots z$, $A\dots Z$ and $\alpha$\dots$\omega$ are printed in italic
in math mode. This follows the traditional typographic rule.
-All other math symbols, digits and uppercase Greek letters must be
+All other math symbols, digits, and uppercase Greek letters must be
upright.\fnote
{French typographic convention says that uppercase Greek letters have to be
in italic too. Use `\_itGreek` declaration in this case.}
@@ -618,7 +626,7 @@ These rules are independent of the current variant of surrounding text font.
If we want to use the letters or digits
in another than this default shape, then we can use
-\ii math/alphabet/selector {\em math alphabet selectors}:
+\ii math/alphabet/selector {\em math alphabet selectors}:
\x`\mit`, \x`\rm`, \x`\it`, \x`\bf`, \x`\cal`.
\new \OpTeX/
\OpTeX/ supports more such selectors \x`\script`, \x`\frak`, \x`\bbchar`, \x`\bi`, see
@@ -626,11 +634,11 @@ section 1.3.3 in the \OpTeX/ documentation. The math selectors have local
validity in the group.
The control sequences \x`\rm`, \x`\it`, \x`\bf`, and \x`\bi` act as variant selectors
-of fonts in non-math mode (text mode) and they act
-as math alphabet selectors in math mode. This \"overlaying" concept
+of fonts in non-math mode (text mode) and they act
+as math alphabet selectors in math mode. This \"overlaying" concept
is given by Plain \TeX/. Example: math operators lim, sin, cos,
log, etc.\ must be printed unslanted. We are using `\lim`, `\sin`, `\cos`,
-`\log` etc.\ in math mode in order to comply this typographic convention. For
+`\log` etc.\ in math mode in order to comply with this typographic convention. For
example `\sin` is defined as:
\begtt
\def\sin {\mathop{\rm sin}\nolimits}
@@ -681,7 +689,7 @@ Unicode font can include the following math alphabets:
\_bisansGreek % bold slanted snas serif Greek letters \Alpha-\Omega
\endtt
%
-Not all Unicode math fonts include all math alphabets listed here. Typically,
+Not all Unicode math fonts include all math alphabets listed here. Typically,
the lowercase letters of calligraphic shape and all letters of
bold calligraphic shape are missing.
@@ -698,14 +706,14 @@ of the \OpTeX/ manual). For example
\def\rm {\_tryload\_tenrm \_inmath{\_rmavariables \_rmdigits}}
\endtt
%
-The first part
+The first part
\new \OpTeX/
-`\_tryload\_tenrm` is applicable for text fonts and the
+`\_tryload\_tenrm` is applicable for text fonts and the
`\_inmath` part is processed only in math mode and sets the math alphabets.
-You can see the file `unimath-codes.opm` where all user level selectors are
+You can see the file `unimath-codes.opm` where all user-level selectors are
defined. You can redefine them. For example, \OpTeX/ defines `\bf` as a math
-alphabet selector which selects sans serif bold in math. This is common
-notation for vectors, tensors and matrices. If you dislike this, then you can define:
+alphabet selector that selects sans serif bold in math. This is the common
+notation for vectors, tensors, and matrices. If you dislike this, then you can define:
\begtt \typosize[10/12]
\def\bf {\_tryloadbf\_tenbf \_inmath{\_bfvariables\_bfdigits\_bfgreek\_bfGreek}}
\endtt
@@ -716,15 +724,15 @@ notation for vectors, tensors and matrices. If you dislike this, then you can de
\new Unicode
All \ii single/math/object single math objects are listed in the `unimath-table.opm` or
`unicode-math-table.tex` file. You can
-look into this file. The codes, \TeX/ sequences, classes and comments
-for all possible math codes are here. Maybe, your Unicode math font which is loaded,
-does not support all these codes.
+look into this file. The codes, \TeX/ sequences, classes, and comments
+for all possible math codes are here. Maybe, your Unicode math font which is loaded
+does not support all these codes.
\new \OpTeX/
-You can try all codes of currently loaded font by
+You can try all codes of the currently loaded font by
\begtt
\input print-unimath.opm
\endtt
-The `unimath-table` is printed with characters available in loaded font.
+The `unimath-table` is printed with characters available in the loaded font.
\new \OpTeX/
If the character is unsupported by the font then the slot is empty and only
\TeX/ sequence and the class of the code is printed in the table.
@@ -769,25 +777,25 @@ selectors `\bf` and `\bi` set `\_bsansgreek` and `\_bisansgreek`, so
\new Unicode
All characters available in the math font can be accessed by \TeX/ control
-sequence or by direct using the Unicode character in the document source.
+sequence or by directly using the Unicode character in the document source.
Example:
\begtt \adef/{}
-$$
- \sum/_{k=0}^\infty e^{(\alpha+i\beta/_k)} =
- e^\alpha \sum/_{k=0}^\infty e^{i\beta/_k} =
- e^\alpha \sum/_{k=0}^\infty (\cos\beta/_k + i\sin\beta/_k).
+$$
+ \sum/_{k=0}^\infty e^{(\alpha+i\beta/_k)} =
+ e^\alpha \sum/_{k=0}^\infty e^{i\beta/_k} =
+ e^\alpha \sum/_{k=0}^\infty (\cos\beta/_k + i\sin\beta/_k).
$$
\endtt
or
\begtt \ttspec
$$
- ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
- = e^α ∑_{k=0}^∞ (\cos β_k + i\sin β_k).
+ ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
+ = e^α ∑_{k=0}^∞ (\cos β_k + i\sin β_k).
$$
\endtt
both gives the same result:
$$
- ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
+ ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
= e^α ∑_{k=0}^∞ (\cos β_k + i\sin β_k).
$$
\medskip
@@ -798,19 +806,19 @@ $$
\secc The `\not` prefix
You can apply \x`\not` before a following math object.
-The slash $/$ is overprinted such math object, for example
+The slash $/$ is overprinted such math object, for example
`$a \not= b$` gives $a \not= b$.
\new \OpTeX/
-If there exist a direct Unicode character for negation of a relation symbol
-(for example `\ne` creates $\ne$ directly as a character U+2260)
-then `\not<char>` expands to appropriate Unicode character.
+If there exists a direct Unicode character for the negation of a relation symbol
+(for example `\ne` creates $\ne$ directly as a character U+2260)
+then `\not<char>` expands to appropriate Unicode character.
For example `\not=` expands to `\ne` or `\not\in` expands to `\notin`.
If such character does not exist then
-the centered $/$ is overprinted over the next character.
+the centered $/$ is overprinted over the next character.
-\secc The `\buildrel` macro: text over relation
+\secc The `\buildrel` macro: text over the relation
The macro \x`\buildrel`` <text>\over <relation>` creates a new atom Rel with the
<relation> and with the smaller <text> above this <relation>. Example:
@@ -840,9 +848,9 @@ The space size of `\,`, `\!` resp. `\>`, resp. `\;` is given by
`\thinmuskip`, resp. `\medmuskip`, resp. `\thickmuskip` values. You can see
in the `plain.tex` file that these default values differ very little in their basic
size but there is no stretchability/shrinkability in the `\,` space, there is small
-stretchability in the `\>` space and more stretchability in the `\;` space.
+stretchability in the `\>` space, and more stretchability in the `\;` space.
-The registers \x`\thinmuskip`, \x`\medmuskip` and \x`\thickmuskip` store so called
+The registers \x`\thinmuskip`, \x`\medmuskip`, and \x`\thickmuskip` store so-called
\ii mu/values {\em mu values} given by math unit `mu`. It is 1/18 em and this unit depends
on the current font size used in the math formula ($S$ or $SS$ styles use
smaller font size, the `mu` unit is smaller here). You can use \x`\muskip`
@@ -863,8 +871,8 @@ $$ \alpha\,(x+y), \qquad \int_a^b \!\! f(x)\,{\rm d}x, \qquad \Gamma_{\!i}. $$
\secc Texts in math mode
If you write `$Hello world!$` (i.e.\ Hello world in math mode), then you get
-$Hello world!$. It is interpreted as product of variables $H$ and $e$ and
-$l^2$ and $o$ etc., followed by the symbol ! used for factorial.
+$Hello world!$. It is interpreted as the product of variables $H$, and $e$, and
+$l^2$, and $o$, etc., followed by the symbol ! used for factorial.
The non-ASCII letters (with accents) don't work at all because they are
never used as symbols for variables. Spaces are ignored.
@@ -912,8 +920,8 @@ The \x`\vcenter` primitive behaves like `\vbox`, but it can be used only in
math mode and its result is vertically centered to the math axis.
For example, matrices, are created by tables in `\vcenter`.
-All big objects in math formula is centered to math axis and the baseline is
-ignored. In the following example we create a new big math operator by
+All big objects in math formula are centered on the math axis and the baseline is
+ignored. In the following example, we create a new big math operator by
`\vcenter`:
\begtt
$$
@@ -935,10 +943,10 @@ thin space between dots and after the last dot, so the five object: comma,
dots, comma are exactly equidistant.
Typographic conventions say that you have to use the repeating symbol
-before and after three dots (comma in previous example) and the three dots
-should be at baseline, if the repeating symbol is at baseline. Or they should be
-at math axis, if the repeating symbol is at math axis. We have to use \x`\cdots` instead
-`\dots` in second case. Example:
+before and after three dots (comma in the previous example) and the three dots
+should be at baseline if the repeating symbol is at baseline. Or they should be
+at the math axis if the repeating symbol is at the math axis. We have to use \x`\cdots` instead
+`\dots` in the second case. Example:
$$
`a_1, a_2, \dots, a_n, \quad a_1 + a_2 + \cdots + a_n` \qquad
a_1, a_2, \dots, a_n, \quad a_1 + a_2 + \cdots + a_n
@@ -1027,8 +1035,8 @@ $$
= \qmatrix[b_1\cr b_2\cr b_3].
$$
-If you need to aling the columns by another way than to center, then you can
-use phantom. Compare:
+If you need to align the columns by another way than to center, then you can
+use the phantom. Compare:
\begtt
$$
@@ -1052,8 +1060,8 @@ $$
$$
\new\OpTeX/
-Another option to set right aligned matrix is setting the \x`\lmfil`:
-Its value is used at left side in each `\matrix` item. The right side is
+Another option to set the right aligned matrix is setting the \x`\lmfil`:
+Its value is used on the left side in each `\matrix` item. The right side is
set directly to `\hfil`.
\begtt
$$
@@ -1082,7 +1090,7 @@ $$
\pmatrix{1 & 2 & 3 | 0 \cr 0 & 1 & 2 | -1/3 \cr 0 & 0 & 0 | 1 }
$$
-If you want to put something before opening bracket in the matrix, you can
+If you want to put something before the opening bracket in the matrix, you can
use another `\matrix`. Example:
\begtt
@@ -1149,30 +1157,30 @@ $$
0 & in other cases. }
$$
-The `\cases` macro behaves like a special `\matrix` with two left aligned
+The `\cases` macro behaves like a special `\matrix` with two left-aligned
columns and with left vertically scaled brace $\{$.
-First column is processed in math mode and $T$ style, second column
+The first column is processed in math mode and $T$ style, the second column
is processed in text mode. We have to use `$...$` in the second column if
-there is a math material.
+there is math material.
\sec Lines in display mode
\secc General principles
-The \ii display/math,display/math/mode
+The \ii display/math,display/math/mode
`$$<formula>$$` finalizes previous paragraph, prints centered <formula> on
single line with a vertical space above and below and opens next paragraph
with no indentation.
-From \TeX/'s point of view, the text above plus `$$<formula>$$` plus text
-below is single paragraph interrupted by display <formula>. If there is no
+From \TeX/'s point of view, the text above `$$<formula>$$` plus text
+below is a single paragraph interrupted by display <formula>. If there is no
text above (i.e. the opening `$$` are in vertical mode), then the internal
-`\noindent` is processed first and empty line above <formula> is created.
-Thus, it is definitely bad idea to open display mode in vertical mode: never
-put empty line before `$$<formula>$$`. On the other hand, the empty line
+`\noindent` is processed first and the empty line above <formula> is created.
+Thus, it is definitely a bad idea to open display mode in vertical mode: never
+put an empty line before `$$<formula>$$`. On the other hand, the empty line
just after `$$<formula>$$` says that the paragraph is finalized by the
-<formula> and the next text (after the empty line) opens next paragraph with
+<formula> and the next text (after the empty line) opens the next paragraph with
indentation. Summary:
\begitems
@@ -1193,7 +1201,7 @@ such task, see sections~\ref[dlines] and~\ref[elines].
On the other hand, the in-line math <formula>, i.e.\ the `$<formula>$` in a
paragraph, can be broken after a Bin atom (with penalty `\binoppenalty`) or
after a Rel atom (with penalty `\relpenalty`). If you don't want to break
-such formula at a specific place then use `\nobreak`, for example
+such a formula at a specific place then use `\nobreak`, for example
`$a+\nobreak b$`. If you want never to break such formulas then you can set
`\binoppenalty=10000`, `\relpenalty=10000`. (Default values are 700 and 500.)
@@ -1376,7 +1384,7 @@ In \OpTeX/, \new\OpTeX/
the `\eqalign` macro is more flexible. You can set the
`\baselineskip` value by the \x`\eqlines` parameter and math style
by the \x`\eqstyle` parameter.
-For example, you need to put the system of \"equations" as an subscript of sum
+For example, you need to put the system of \"equations" as a subscript of a sum
operator:
\begtt \typosize[10/12] \adef/{}
$$
@@ -1418,11 +1426,11 @@ equation systems one next second.
\begitems
* `\eqlines` and `\eqstyle` set baselineskip and math style of the formulas.
* `\eqalign` allows more than two columns:
- First column is right aligned (no space). Second is left aligned (no space).
- Third column (if used)
- is centered with `\eqspace/2` at left and right boundary of the column.
- Fourth is the same as first. Fifth is the same as second etc. The number
- of columns which can be used in `\eqalign` is unlimited.
+ The first column is right-aligned (no space). The second is left-aligned (no space).
+ The third column (if used)
+ is centered with `\eqspace/2` at the left and right boundary of the column.
+ The fourth is the same as the first. The fifth is the same as second etc. The number
+ of columns that can be used in `\eqalign` is unlimited.
\enditems
\secc The `\eqalign` macro with references
@@ -1447,7 +1455,7 @@ $$ \eqalignno{
4x - y + 5z &= -5 & \rm(C) \cr
} $$
-The `\leqalignno` macro is similar as `\eqalignno` but the marks are at the left
+The `\leqalignno` macro is similar to `\eqalignno` but the marks are at the left
margin. The \OpTeX/ extensions of `\eqalign` are not available in
`\eqalignno` nor `\leqalignno` macros.
@@ -1467,8 +1475,8 @@ $$ \eqalignno{
\secc[fams] Math families
-\TeX/ is able to use more than one math font in math mode. This was a
-necessity in old days when only 128-characters fonts existed.
+\TeX/can use more than one math font in math mode. This was a
+necessity in the old days when only 128-characters fonts existed.
Each math font used in math mode has its \ii math/family {\em math family} represented by a number.
Math family is a collection of three (almost) equal fonts in three sizes:
first for `\textstyle` and `\displaystyle`, second for `\scriptstyle`
@@ -1476,7 +1484,7 @@ and third for `\scriptscriptstyle`.
\new Unicode
When Unicode math font is loaded then it includes all three optical sizes and
-all characters needed for typeseting math formula.
+all characters needed for typesetting math formula.
Theoretically, we can use only one math family with this single font. But more math families
(i.e.\ more fonts in math mode) is still possible. You can combine
characters from more fonts (Unicode fonts and old TFM fonts together) in one math formula.
@@ -1497,8 +1505,8 @@ loading more fonts. The default macro for loading math fonts looks like:
\endtt
%
Whenever \OpTeX/ needs to resize math fonts (for example in footnotes or
-titles), it calls the `\_normalmath` macro in order to reload all math
-families to desired size. If you want to add a next font, you can add
+titles), it calls the `\_normalmath` macro to reload all math
+families to the desired size. If you want to add the next font, you can add
`\_loadunimathfamily <family> {<Unicode-font>}{<features>}` or
`\_loadmathfamily <family> <TFM-font>` into the `\_normalmath` macro.
The example in section~\ref[newfam] shows how to do it.
@@ -1512,8 +1520,8 @@ such a bold title then all characters of this formula must be bolder.
For example \"normal" variables must be in bold italic in titles, symbols
like `+` `=` must be bold and \"normal bold" letters
(e.g., indicating vectors in math formula) must be extra bold in titles.
-It means that all fonts from collection of math fonts must be bolder.
-We need second collection of math fonts with bolder
+It means that all fonts from the collection of math fonts must be bolder.
+We need a second collection of math fonts with bolder
shape. Unfortunately, it is not always available.
\new \OpTeX/
@@ -1546,15 +1554,15 @@ used). So, the default `\_boldmath` macro defined by \OpTeX/ looks like:
\secc[newfam] Example of using additional math font
-The font `bbold10.tfm` includes double stroked characters, for example
+The font `bbold10.tfm` includes double stroked characters, for example,
double stroked plus, double stroked Greek letters and digits.
-Try to run `pdftex testfont`, then answer to the question about name of the
+Try to run `pdftex testfont`, then answer the question about the name of the
font: `bbold10` and then type command `\table\end`. The `testfont.pdf` is
printed with the table of characters of this font.
Most of these characters cannot be found in Unicode math fonts.
\new \OpTeX/
-We show an example how to add this font to the collection of used math fonts.
+We show an example of how to add this font to the collection of used math fonts.
We can re-define the `\_normalmath` macro by:
\begtt \typosize[10/12]
\addto\_normalmath {\_loadmathfamily 5 bbold }
@@ -1585,10 +1593,10 @@ from the new font, for example:
\endtt
%
The \x`\Umathchardef` \TeX/ primitive declares new \TeX/ sequence used in math
-typesetting. First parameter is class number (2 means Bin, 3 means Rel,
-see the table in the section~\ref[class]). Second parameter is math
+typesetting. The first parameter is a class number (2 means Bin, 3 means Rel,
+see the table in the section~\ref[class]). The second parameter is a math
family number. It is 5, see the redefinition of the `\_normalmath` macro above.
-Third parameter is the slot in the font. Now you can try to use these characters:
+The third parameter is a slot in the font. Now you can try to use these characters:
$$
`a \bbplus b \bbge c` \quad \hbox{gives} \quad a \bbplus b \bbge c.
$$
@@ -1632,7 +1640,7 @@ We have to settle for normal version of the font in the `\_boldmath` macro:
\addto \_boldmath {\_loadmathfamily 5 bbold }
\endtt
-Another approach of using more Unicode math fonts in single formula is
+Another approach of using more Unicode math fonts in a single formula is
shown in
\ulink[http://petr.olsak.net/optex/optex-tricks.html\#addumathfont]{OpTeX trick 0030}.
diff --git a/macros/luatex/optex/doc/optex-techdoc.tex b/macros/luatex/optex/doc/optex-techdoc.tex
index 1e95d269b7..2c0a71cc27 100644
--- a/macros/luatex/optex/doc/optex-techdoc.tex
+++ b/macros/luatex/optex/doc/optex-techdoc.tex
@@ -1,7 +1,7 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% This file is read from optex-doc.tex
-% Use: optex optex-doc
+% Use: optex optex-doc
% (three times) to create whole documentation including all references and the index.
\load [doc.opm]
@@ -22,9 +22,9 @@ optex optex-doc.tex
then the same `*.opm` files are read when the second chapter of this
documentation is printed.
-A knowledge about \TeX/ is expected from the reader.
-You can see a short document
-\ulink[http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf]{\TeX/ in a Nutshell}
+A knowledge about \TeX/ is expected from the reader.
+You can see a short document
+\ulink[http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf]{\TeX/ in a Nutshell}
or more detail
\ulink[https://eijkhout.net/texbytopic/texbytopic.html]{\TeX/ by topic}.
@@ -32,15 +32,15 @@ Notices about hyperlinks.
If a control sequence is printed in red color in this documentation then
this denotes its \"main documentation point". Typically, the listing where
the control sequence is declared follows immediately. If a control sequence is
-printed in the blue color in the listing or in the text
-then it is active link which points (usually) to the main documentation point.
-The main documentation point can be active link which points to a previous
+printed in the blue color in the listing or in the text
+then it is an active link that points (usually) to the main documentation point.
+The main documentation point can be an active link that points to a previous
text where the control sequence was
mentioned. Such occurrences are active links to the main documentation point.
\sec[init] The main initialization file
-The `optex.ini` file is read as main file when the format is generated.
+The `optex.ini` file is read as the main file when the format is generated.
{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}
\def\docfile{optex.ini}
@@ -62,8 +62,8 @@ is set as `\newlinechar`.
\verbinput (27-36) optex.ini
%
-The basic macros for macro file syntax is defined, i.\,e.\
-`\_endcode`, `\_doc` and `\_cod`.
+The basic macros for macro file syntax is defined, i.\,e.\
+`\_endcode`, `\_doc` and `\_cod`.
The `\_codedecl` will be re-defined later.
\verbinput (38-42) optex.ini
@@ -77,7 +77,7 @@ It is documented in section~\ref[lua].
\verbinput (89-92) optex.ini
-The `\everyjob` register is initialized and the format is saved by
+The `\everyjob` register is initialized and the format is saved by
the `\dump` command.
\verbinput (94-102) optex.ini
@@ -85,12 +85,12 @@ the `\dump` command.
}
\printdoctail prefixed.opm
-\secc The implementation of the name spaces
+\secc The implementation of the namespaces
\printdoc prefixed.opm
\sec pdf\TeX/ initialization
\printdoctail luatex-ini.opm
-\printdoc luatex-ini.opm
+\printdoc luatex-ini.opm
\sec Basic macros
We define first bundle of basic macros.
@@ -116,7 +116,7 @@ The second bundle of \OpTeX/ macros is here.
\printdoc keyval.opm
\sec Plain \TeX/ macros
-All macros from plain \TeX/ are rewritten here.
+All macros from plain \TeX/ are rewritten here.
Differences are mentioned in the documentation below.
\printdoc plain-macros.opm
@@ -142,7 +142,7 @@ Differences are mentioned in the documentation below.
\printdoctail math-unicode.opm
\sec[opmac-fonts] Scaling fonts in document (high-level macros)
-These macros are documented in section~\ref[sizes] from user point of view.
+These macros are documented in section~\ref[sizes] from the user point of view.
\printdoc fonts-opmac.opm
\sec[output] Output routine
@@ -191,7 +191,7 @@ The `\margins` macro is documented in the section~\ref[marg].
\printdoc verbatim.opm
\secc[hisyntax] Listings with syntax highlighting
\printdoctail hi-syntax.opm
-\printdoc hi-syntax.opm
+\printdoc hi-syntax.opm
\sec Graphics
\printdoctail graphics.opm
@@ -228,8 +228,8 @@ The `\margins` macro is documented in the section~\ref[marg].
\sec Styles
\OpTeX/ provides three styles: `\report`, `\letter` and `\slides`.
- Their behavior is documented in user part of the manual in the section
- \ref[styles] and `\slides` style (for presentations) is documented in
+ Their behavior is documented in user part of the manual in the section
+ \ref[styles] and `\slides` style (for presentations) is documented in
`op-slides.pdf` which is an example of the presentation.
\secc \code{\\report} and \code{\\letter} styles
\printdoc styles.opm
@@ -259,7 +259,7 @@ and initialized by `\everyjob`, see section~\ref[init].
The file implements part of the functionality from `luatexbase` namespace,
nowadays defined by \LaTeX/ kernel. `luatexbase` deals with modules,
-allocators and callback management. Callback management is a nice extension
+allocators, and callback management. Callback management is a nice extension
and is actually used in \OpTeX/. Other functions are defined more or less just
to suit luaotfload's use.
diff --git a/macros/luatex/optex/doc/optex-userdoc.tex b/macros/luatex/optex/doc/optex-userdoc.tex
index 1e94712426..8f2fe4d3d3 100644
--- a/macros/luatex/optex/doc/optex-userdoc.tex
+++ b/macros/luatex/optex/doc/optex-userdoc.tex
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
% This file is read from optex-doc.tex
% Use: optex optex-doc (three times) to create whole documentation.
@@ -10,7 +10,7 @@
\new
\OpTeX/ is compiled as a format for \LuaTeX/. Maybe there is a command
-`optex` in your \TeX/ distribution. Then you can write into command line
+`optex` in your \TeX/ distribution. Then you can write into the command line
\begtt
optex document
@@ -19,7 +19,7 @@ optex document
You can try to process `optex op-demo` or `optex optex-doc`.
If there is no `optex` command, see more information about installation
-\OpTeX/ at \url{http://petr.olsak.net/optex}.
+\OpTeX/ at \url{http://petr.olsak.net/optex}.
A minimal document should be
@@ -28,16 +28,16 @@ A minimal document should be
Hello World! \bye
\endtt
-The first line \~`\fontfam[LMfonts]` tells that Unicode Latin Modern
+The first line \~`\fontfam[LMfonts]` tells that Unicode Latin Modern
fonts (derived from Computer Modern) are used. If you omit this line then
preloaded Latin Modern fonts are used but preloaded fonts cannot be in
Unicode\fnote
{This is a technical limitation of \LuaTeX/ for fonts downloaded in formats:
only 8bit fonts can be preloaded.}.
-So the sentence `Hello World` will be OK without the first line, but you
-cannot print such sentence in another languages (for example `Ahoj světe!`)
+So the sentence `Hello World` will be OK without the first line, but you
+cannot print such sentence in other languages (for example `Ahoj světe!`)
where Unicode fonts are needed
-because of the characters like `ě` are not mapped correctly in preloaded
+because the characters like `ě` are not mapped correctly in preloaded
fonts.
A somewhat larger example with common settings should be:
@@ -52,8 +52,7 @@ Tady je zkušební textík v českém jazyce.
\bye
\endtt
%
-You can look at `op-demo.tex` file for more complex, but still simple example.
-
+You can look at `op-demo.tex` file for a more complex, but still simple example.
\sec Page layout
%%%%%%%%%%%%%%%%
@@ -87,7 +86,7 @@ centered in the paper format. The analogical rule works when <top> or <bot>
parameter is empty (`\vsize` instead `\hsize` is used). Examples:
\begtt
-\margins/1 a4 (,,,)mm % \hsize, \vsize untouched,
+\margins/1 a4 (,,,)mm % \hsize, \vsize untouched,
% typesetting area centered
\margins/1 a4 (,2,,)cm % right margin set to 2cm
% \hsize, \vsize untouched, vertically centered
@@ -95,14 +94,14 @@ parameter is empty (`\vsize` instead `\hsize` is used). Examples:
If `<pg>=1` then all pages have the same margins. If `<pg>=2` then the
declared margins are true for odd pages. The margins at the even pages are
-automatically mirrored in such case, it means that <left> is replaced by
+automatically mirrored in such case, it means that <left> is replaced by
<right> and vice versa.
-\OpTeX/ declares following paper formats: a4, a4l (landscape~a4),
-a5, a5l, a3, a3l, b5, letter and user can declare another own format by `\sdef`:
+\OpTeX/ declares following paper formats: a4, a4l (landscape~a4),
+a5, a5l, a3, a3l, b5, letter and user can declare another own format by \~`\sdef`:
\begtt
-\sdef{_pgs:b5l}{(250,176)mm}
+\sdef{_pgs:b5l}{(250,176)mm}
\sdef{_pgs:letterl}{(11,8.5)in}
\endtt
@@ -117,10 +116,10 @@ used. For example:
declares the paper 100$\times$200\,mm with all four margins 7\,mm. The spaces
before and after <fmt> parameter are necessary.
-The command \^`\magscale[<factor>]` scales the whole typesetting area.
-\new The fixed point of such scaling is the upper left corner of the paper sheet.
+The command \^`\magscale[<factor>]` scales the whole typesetting area.
+\new The fixed point of such scaling is the upper left corner of the paper sheet.
Typesetting (breakpoints etc.) is unchanged. All units are relative after
-such scaling. Only paper formats dimensions stays unscaled. Example:
+such scaling. Only paper format's dimensions stay unscaled. Example:
\begtt
\margins/2 a5 (22,17,19,21)mm
@@ -128,16 +127,16 @@ such scaling. Only paper formats dimensions stays unscaled. Example:
\endtt
%
The first line sets the `\hsize` and `\vsize` and margins for final
-printing at a5 format. The setting on the second line centers the scaled
+printing at a5 format. The setting on the second line centers the scaled
typesetting area to the true a4 paper while breaking points for paragraphs
-and pages are unchanged. It may be usable for
-review printing. After review is done, the second line can be commented out.
+and pages are unchanged. It may be usable for
+review printing. After the review is done, the second line can be commented out.
-\secc Concept of default page
+\secc Concept of the default page
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\OpTeX/ uses \"output routine" for page design.
-It is very similar to Plain \TeX/ output routine.
+It is very similar to the Plain \TeX/ output routine.
There is \^`\headline` followed by \"page body" followed by
\^`\footline`. The \^`\headline` is empty by default and it can be used
for running headers repeated on each page. The \^`\footline` prints
@@ -150,57 +149,56 @@ i.e.\ the \^`\headline` and \^`\footline` are placed to the top and bottom
margins.
The distance between the \^`\headline` and the top of the page body is given by
-the \^`\headlinedist` register. The distance between bottom of the page body and
+the \^`\headlinedist` register. The distance between bottom of the page body and
the \^`\footline` is given by \^`\footlinedist`. The default values are:
\begtt
\headline = {}
\footline = {\_hss\_rmfixed \_folio \_hss} % \folio expands to page number
-\headlinedist = 14pt % from baseline of \headline to top of page body
+\headlinedist = 14pt % from baseline of \headline to top of page body
\footlinedist = 24pt % from last line in pagebody to baseline of footline
\endtt
-The page body should be divided to top insertions (floating tables and
-figures) followed by a real text and followed by footnotes.
-Typically, only real text is here.
+The page body should be divided into top insertions (floating tables and
+figures) followed by a real text and followed by footnotes.
+Typically, the only real text is here.
The \^`\pgbackground` tokens list is empty by default but it can be used for
-creating background of each page (colors, picture, watermark for example).
-The macro \^`\draft` uses this register and puts big text DRAFT as watermark
+creating a background of each page (colors, picture, watermark for example).
+The macro \^`\draft` uses this register and puts big text DRAFT as a watermark
to each page. You can try it.
More about the page layout is documented in sections~\ref[oparams] and~\ref[output].
-
\secc Footnotes and marginal notes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-The Plain \TeX/'s macro \^`\footnote` can be used as usual. But a new macro
+The Plain \TeX/'s macro \^`\footnote` can be used as usual. But a new macro
\^`\fnote{<text>}` is defined. The footnote mark is added automatically and it
-is numbered
+is numbered
\new
on each chapter from one\fnote
{You can declare \^`\fnotenumglobal` if you want footnotes numbered in whole
document from one or \^`\fnotenumpages` if you want footnotes numbered at each
page from one. Default setting is \^`\fnotenumchapters`}.
-The <text> is scaled to 80 \%.
+The <text> is scaled to 80 \%.
User can redefine footnote mark or scaling, as shown in the section~\ref[fnotes].
The \^`\fnote` macro is fully applicable only in \"normal outer" paragraph.
It doesn't work inside boxes (tables, for example). If you are solving such
-case then you can use the command \^`\fnotemark``<numeric-label>` inside the box: only the
-footnote mark is generated here. When the box is finished you can use
-\^`\fnotetext{<text>}`. This macro puts the <text> to the footnote.
-The <numeric-label> have to be `1` if only one such command is in the box.
-Second \^`\fnotemark` inside the same box have to have the parameter `2` etc.
-The same number of \^`\fnotetext`s have to be written
+a case then you can use the command \^`\fnotemark``<numeric-label>` inside the box: only the
+footnote mark is generated here. When the box is finished you can use
+\^`\fnotetext{<text>}`. This macro puts the <text> to the footnote.
+The <numeric-label> has to be `1` if only one such command is in the box.
+Second \^`\fnotemark` inside the same box has to have the parameter `2` etc.
+The same number of \^`\fnotetext`s have to be written
after the box as the number of \^`\fnotemark`s inserted inside the box.
Example:
\begtt
Text in a paragraph\fnote{First notice}... % a "normal" footnote
\table{...}{...\fnotemark1...\fnotemark2...} % two footnotes in a box
-\fnotetext{Second notice}
+\fnotetext{Second notice}
\fnotetext{Third notice}
...
\table{...}{...\fnotemark1...} % one footnote in a box
@@ -210,8 +208,8 @@ Text in a paragraph\fnote{First notice}... % a "normal" footnote
The marginal note can be printed by the \^`\mnote{<text>}` macro. The <text>
is placed to the right margin on the odd pages and it is placed to the left
margin on the even pages. This is done after second \TeX{} run because the
-relevant information is stored in an external file and read from it again.
-If you need to place the notes only to the fixed margin write
+relevant information is stored in an external file and read from it again.
+If you need to place the notes only to the fixed margin write
\^`\fixmnotes\right` or \^`\fixmnotes\left`.
The <text> is formatted as a little paragraph with the maximal width
@@ -224,7 +222,6 @@ in order to margin notes do not overlap. The positive value of <dimen>
shifts the note up and negative value shifts it down. For example
\^`\mnote`` up 2\baselineskip{<text>}` shifts this marginal note two lines up.
-
\sec Fonts
%%%%%%%%%%
@@ -234,26 +231,26 @@ shifts the note up and negative value shifts it down. For example
You can select the font family by \^`\fontfam[<Family-name>]`.
The argument <Family-name> is case insensitive and spaces are ignored in it. For
example, \^`\fontfam[LM Fonts]` is equal to \^`\fontfam[LMfonts]` and it is equal
-to \^`\fontfam[lmfonts]`. Several aliases are prepared, thus
+to \^`\fontfam[lmfonts]`. Several aliases are prepared, thus
\^`\fontfam[Latin Modern]` can be used for loading Latin Modern family too.
-If you write \^`\fontfam[?]` then all font families registered in \OpTeX/
+If you write \^`\fontfam[?]` then all font families registered in \OpTeX/
are listed on the terminal and in the log file.
If you write \^`\fontfam[catalog]` then a catalog of all fonts registered in
\OpTeX/ and available in your \TeX/ system is printed. The instructions
-how to register your own font family is appended in such catalog.
+on how to register your own font family are appended in the catalog.
If the family is loaded then {\em font modifiers} applicable in such font family
are listed on the terminal: (`\caps`, `\cond` for example).
And there are four basic {\em variant selectors} (\^`\rm`, \^`\bf`, \^`\it`, \^`\bi`).
-The usage of variant selectors is the same as in Plain \TeX:
+The usage of variant selectors is the same as in Plain \TeX:
`{\it italics text}`, `{\bf bold text}` etc.
The font modifiers (`\caps`, `\cond` for example) can
be used before a variant selector and they
can be (independently) combined: `\caps\it` or `\cond\caps\bf`. The
-modifiers keeps their internal setting until group ends or until another
-modifier which negates the previous feature is used. So
+modifiers keep their internal setting until the group ends or until another
+modifier that negates the previous feature is used. So
`{\caps \rm First text \it Second text}`
gives {\caps \rm First text \it Second text}.
@@ -263,9 +260,9 @@ There is one special variant selector \^`\currvar` which does not change the
selected variant but reloads the font due to (maybe newly
specified) font modifier(s).
-The context between variants \^`\rm` $\leftrightarrow$ \^`\it` and
+The context between variants \^`\rm` $\leftrightarrow$ \^`\it` and
\^`\bf` $\leftrightarrow$ \^`\bi` is kept by the \^`\em`
-macro (emphasize text).
+macro (emphasize text).
It switches from current \^`\rm` to \^`\it`, from current \^`\it` to \^`\rm`, from
current \^`\bf` to \^`\bi` and from current \^`\bi` to \^`\bf`.
The italics correction `\/` is inserted automatically, if needed. Example:
@@ -281,7 +278,7 @@ This is {\em important} text. % = This is {\it important\/} text.
More about the \OpTeX/ Font Selection System is written in the technical
documentation in the section~\ref[fontsystem].
You can mix more font families in your document, you can
-declare your own variant selectors or modifiers etc.
+declare your own variant selectors or modifiers, etc.
\secc[sizes] Font sizes
%%%%%%%%%%%%%%%%%%%%%
@@ -290,7 +287,7 @@ The command \^`\typosize[<fontsize>/<baselineskip>]` sets the font size of text
math fonts and baselineskip. If one of these two parameters is empty, the
corresponding feature stays unchanged. Don't write the unit of these
parameters. The unit is internally set to \^`\ptunit` which is 1pt by default.
-You can change the unit by the command \^`\ptunit=<something-else>`,
+You can change the unit by the command \^`\ptunit=<something-else>`,
for instance \^`\ptunit=1mm` enlarges all font sizes declared by \^`\typosize`.
Examples:
@@ -301,12 +298,12 @@ Examples:
\endtt
The commands for font size setting described in this section
-have local validity. If you put them into a group,
-the settings are lost when the group is finished. If you set
-something relevant with paragraph shape (baselineskip given by
-\^`\typosize` for example) then you must first finalize the
-paragraph before closing the group:
-`{\typosize[12/14] ...<text of paragraph>... \par}`.
+have local validity. If you put them into a group,
+the settings are lost when the group is finished. If you set
+something relevant with paragraph shape (baselineskip given by
+\^`\typosize` for example) then you must first finalize the
+paragraph before closing the group:
+`{\typosize[12/14] ...<text of paragraph>... \par}`.
The command \^`\typoscale[<font-factor>/<baselineskip-factor>]`
sets the text and math fonts
@@ -320,13 +317,12 @@ i.e. the value stays unchanged. Examples:
\typoscale[\magstep2/] % fonts bigger 1,44times (\magstep2 expands to 1440)
\endtt
-First usage of \^`\typosize` or \^`\typoscale` macro in your document sets so
-called {\em main values}, i.\,e.\ main font size and main baselineskip. They are internally
-saved in registers \^`\mainfosize` and \^`\mainbaselineskip`.
+First usage of \^`\typosize` or \^`\typoscale` macro in your document sets so-called {\em main values}, i.\,e.\ main font size and main baselineskip. They are internally
+saved in registers \^`\mainfosize` and \^`\mainbaselineskip`.
\new
-The \^`\typoscale` command does scaling in respect to current values by default.
-If you want to do it in respect to main values, type \^`\scalemain` immediately
+The \^`\typoscale` command does scaling with respect to current values by default.
+If you want to do it with respect to the main values, type \^`\scalemain` immediately
before \^`\typoscale` command.
\begtt
@@ -344,13 +340,13 @@ baselineskip.
\new
There is \"low level" \^`\setfontsize{<size-spec>}` command which behaves like
a font modifier and sets given font size used by next variant selectors.
-It doesn't change the font size immediately, but following variant slelector
+It doesn't change the font size immediately, but the following variant selector
does it. For example \^`\setfontsize{at15pt}`\^`\currvar` sets current variant to 15pt.
If you are using a font family with \"optical sizes feature" (i.\,e.\ there
are more recommended sizes of the same font which are not scaled
-linearly; good example is Computer Modern aka Latin Modern fonts)
-then the recommended size is selected by all mentioned commands automatically.
+linearly; a good example is Computer Modern aka Latin Modern fonts)
+then the recommended size is selected by all mentioned commands automatically.
More information about resizing of fonts is documented in the
section~\ref[setfontsize].
@@ -362,21 +358,21 @@ See the additional document
\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
{Typesetting Math with \OpTeX/} for more details about this issue.
-\OpTeX/ preloads a collection of 7bit Computer Modern math fonts
-and AMS fonts in its format for math typesetting.
-You can use them in any size and in the \^`\boldmath` variant.
+\OpTeX/ preloads a collection of 7bit Computer Modern math fonts
+and AMS fonts in its format for math typesetting.
+You can use them in any size and in the \^`\boldmath` variant.
%
-\new
-Most declared text font families (see \^`\fontfam` in the section~\ref[fontfam])
-are configured with recommended Unicode
+\new
+Most declared text font families (see \^`\fontfam` in the section~\ref[fontfam])
+are configured with a recommended Unicode
math font. This font is automatically loaded unless you specify
\^`\noloadmath` before first \^`\fontfam` command. See log file for more
information about loading text font family and Unicode math fonts. If you
prefer another Unicode math font, specify it by \^`\loadmath{[<font-file>]}`
or \^`\loadmath{<font-name>}` before first \^`\fontfam` command.
-Hundreds math symbols and operators like in AMS\TeX/ are accessible.
-For example `\alpha` $\alpha$, `\geq`~$\geq$, `\sum` $\sum$,
+Hundreds math symbols and operators like in AMS\TeX/ are accessible.
+For example `\alpha` $\alpha$, `\geq`~$\geq$, `\sum` $\sum$,
`\sphericalangle` $\sphericalangle$, `\bumpeq`, $\bumpeq$. See AMS\TeX/
manual or
\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
@@ -396,8 +392,7 @@ The following math alphabets are available:
\bi % sans serif bold slanted $/bi abc-xyz,ABC-XYZ$
\endtt
-The last two selectors \^`\bf` and \^`\bi` select the sans serif fonts in math regardless
-the current text font family. This is common notation for vectors and
+The last two selectors \^`\bf` and \^`\bi` select the sans serif fonts in math regardless of the current text font family. This is a common notation for vectors and
matrices. You can re-declare them, see section~\ref[unimath-codes] where
definitions of Unicode math variants of \^`\bf` and \^`\bi` selectors are documented.
@@ -410,12 +405,9 @@ is usable for math formulae in titles typeset in bold, for example.
You can use \^`\mathbox{<text>}` inside math mode. It behaves as `{\hbox{<text>}}`
(i.e. the <text> is printed in horizontal non-math mode)
but the size of the <text> is adapted to the context of math size (text or script or
-scriptscript). Moreover, there is the macro \^`\mathstyles{<math list>}` which depends on
-the current math style. It is documented at the end of the
-section~\ref[math-macros].
+scriptscript).
-
-\sec Typical elements of document
+\sec Typical elements of the document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\secc[chap] Chapters and sections
@@ -434,36 +426,36 @@ braces are used):
\endtt
The chapters are automatically numbered by one number, sections by two numbers
-(chapter.section) and subsections by three numbers. If there are no chapters
-then section have only one number and subsection two.
+(chapter.section), and subsections by three numbers. If there are no chapters
+then sections have only one number and subsections two.
-The implicit design of the titles of chapter etc.\ are implemented in the
+The implicit design of the titles of chapter etc.\ is implemented in the
macros \^`\_printchap`, \^`\_printsec` and \^`\_printsecc`. A designer can simply change
these macros if he/she needs another behavior.
-The first paragraph after the title of chapter, section and subsection is
+The first paragraph after the title of chapter, section, and subsection is
not indented but you can type `\let`\^`\_firstnoindent=\relax` if you need all
paragraphs indented.
-If a title is so long then it breaks to more lines in the output. It is better to hint the
+If a title is so long then it breaks into more lines in the output. It is better to hint at the
breakpoints because \TeX/ does not interpret the meaning of the title.
-User can put the \^`\nl` (means newline) to the breakpoints.
+Users can put the \^`\nl` (means newline) to the breakpoints.
If you want to arrange a title to more lines in your source file then you can
-use `^^J` at the end of each line (except the last one).
-When `^^J` is used, then reading of the title continues at the next line.
+use `^^J` at the end of each line (except the last one).
+When `^^J` is used, then the reading of the title continues at the next line.
The \"normal" comment character `%` doesn't work in titles.
You can use \^`\nl`{\visiblesp` ^^J`} if you want to have corresponding lines in the source
-and in the output.
+and the output.
-The chapter, section or subsection isn't numbered if the \^`\nonum` precedes.
-And the chapter, section or subsection isn't delivered to the table of
+The chapter, section, or subsection isn't numbered if the \^`\nonum` precedes.
+And the chapter, section, or subsection isn't delivered to the table of
contents if \^`\notoc` precedes. You can combine both prefixes.
\secc[cap] Another numbered objects
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Apart from chapters, sections and subsections, there are another
+Apart from chapters, sections, and subsections, there are another
automatically numbered objects: equations, captions for tables and
figures. The user can declare more numbered objects.
@@ -483,7 +475,7 @@ before `\cr`. For example:
Another automatically numbered object is a caption which is tagged by \^`\caption/t` for
tables and \^`\caption/f` for figures. The caption text follows.
The \^`\cskip` can be used between \^`\caption` text and the real object (table
-or figure). You can use two orders: `<caption>\cskip <object>` or
+or figure). You can use two orders: `<caption>\cskip <object>` or
`<object>\cskip <caption>`.
The \^`\cskip` creates appropriate vertical space between them. Example:
@@ -492,7 +484,7 @@ The \^`\cskip` creates appropriate vertical space between them. Example:
\cskip
\noindent\hfil\table{rl}{
age & value \crl\noalign{\smallskip}
- 0--1 & unmeasured \cr
+ 0--1 & unmeasured \cr
1--6 & observable \cr
6--12 & significant \cr
12--20 & extremal \cr
@@ -508,7 +500,7 @@ This example produces:
\cskip
\noindent\hfil\table{rl}{
age & value \crl\noalign{\smallskip}
- 0--1 & unmeasured \cr
+ 0--1 & unmeasured \cr
1--6 & observable \cr
6--12 & significant \cr
12--20 & extremal \cr
@@ -517,17 +509,17 @@ This example produces:
60--$\infty$ & moderate}
\medskip
-You can see that the word \"Table" followed by a number is added by the macro
-`\caption/t`.
-The caption text is centered. If it occupies more lines then the
+You can see that the word \"Table" followed by a number is added by the macro
+`\caption/t`.
+The caption text is centered. If it occupies more lines then the
last line is centered.
The macro \^`\caption/f` behaves like \^`\caption/t` but it is intended for
figure captions with independent numbering.
-The word (Table, Figure) depends on the actual selected language (see
-section~\ref[lang] about languages).
+The word (Table, Figure) depends on the selected language (see
+section~\ref[lang] about languages).
-If you wish to make the table or figure as floating object, you need to use
+If you wish to make the table or figure as a floating object, you need to use
Plain \TeX/ macros \^`\midinsert` or \^`\topinsert` terminated by \^`\endinsert`.
Example:
@@ -545,7 +537,7 @@ behaves like \^`\topinsert`...\^`\endinsert`.
There are five prepared counters `A`, `B`, `C`, `D` and `E`.
They are reset in each chapter and section\fnote
{This feature can be changed, see the section~\ref[sections] in the technical documentation.}.
-They can be used in context of \^`\numberedpar` `<letter>{<text>}`
+They can be used in context of \^`\numberedpar` `<letter>{<text>}`
macro. For example:
\begtt
\def\theorem {\numberedpar A{Theorem}}
@@ -558,16 +550,15 @@ Three independent numbers are used in this example. One for Theorems and Corolla
second for Definitions and third for Examples. The user can write
`\theorem Let $M$ be...` and the new paragraph is started with the text:
{\bf Theorem 1.4.1.} Let $M$ be...
-You can add an optional parameter in brackets. For example,
-`\theorem [(L'Hôpital's rule)] Let $f$, $g$ be...`
+You can add an optional parameter in brackets. For example,
+`\theorem [(L'Hôpital's rule)] Let $f$, $g$ be...`
is printed like {\bf Theorem 1.4.2 (L'Hôpital's rule).} Let $f$, $g$ be...
-
\secc References
%%%%%%%%%%%%%%%
Each automatically numbered object documented in
-sections \ref[chap] and \ref[cap] can be referenced
+sections \ref[chap] and \ref[cap] can be referenced
\new
if optional parameter
`[<label>]` is appended to \^`\chap`, \^`\sec`,
@@ -586,18 +577,18 @@ Example:
\label[pythagoras]
$$ a^2 + b^2 = c^2 \eqmark $$
-Now we can point to the section~\ref[beatle] on the page~\pgref[beatle]
-or write something about the equation~\ref[pythagoras]. Finally there
+Now we can point to the section~\ref[beatle] on the page~\pgref[beatle]
+or write something about the equation~\ref[pythagoras]. Finally there
is an interesting Table~\ref[comp-depend].
\endtt
-If there are forward referenced objects then user have to run \TeX{} twice.
+If there are forward referenced objects then users have to run \TeX{} twice.
During each pass, the working `*.ref` file (with references data) is created
and this file is used (if it exists) at the beginning of the document.
-You can use the \^`\label[<label>]` before the `\theorem`, `\definition` etc.\
+You can use the \^`\label[<label>]` before the `\theorem`, `\definition` etc.\
(macros defined with `\numberedpar`) if you want to reference these numbered objects.
-You can't use `\theorem[<label>]` because the optional parameter
+You can't use `\theorem[<label>]` because the optional parameter
is reserved to another purpose here.
You can create a reference to whatever else by commands
@@ -605,9 +596,8 @@ You can create a reference to whatever else by commands
<text> is established. The \^`\ref[<label>]` will print <text>.
By default, labels are not printed, of course. But if you are preparing a
-draft version of your document then you can declare \^`\showlabels`. The labels
-are printed at their destination places after such declaration.
-
+draft version of your document then you can declare \^`\showlabels`. The labels
+are printed at their destination places after such a declaration.
\secc Hyperlinks, outlines
%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -617,13 +607,13 @@ the document, then the following objects are hyperlinked in the PDF output:
\begitems
* numbers and texts generated by \^`\ref` or \^`\pgref`,
-* numbers of chapters, sections, subsections and page numbers in the table of contents,
+* numbers of chapters, sections, subsections, and page numbers in the table of contents,
* numbers or marks generated by \~`\cite` command (bibliography references),
* texts printed by \~`\url` or \~`\ulink` commands.
\enditems
The last object is an external link and it is colored by
-<color-out>. Others links are internal and they are colored by
+<color-out>. Other links are internal and they are colored by
<color-in>. Example:
\begtt
@@ -653,11 +643,11 @@ There are \"low level" commands to create the links. You can specify the
destination of the internal link by \^`\dest[<type>:<label>]`. The
active text linked to the \^`\dest` can be created by
\^`\ilink[<type>:<label>]{<text>}`. The `<type>` parameter is one of
-the `toc`, `pg`, `cite`, `ref` or another special for your purpose.
+the `toc`, `pg`, `cite`, `ref`, or another special for your purpose.
These commands create internal links only when \^`\hyperlinks` is declared.
The \^`\url` macro prints its parameter in \~`\tt` font and creates a potential
-breakpoints in it (after slash or dot, for example). If \^`\hyperlinks`
+breakpoints in it (after slash or dot, for example). If the \^`\hyperlinks`
declaration is used then the parameter of \^`\url` is treated as an external URL link.
An example: `\url{http://www.olsak.net}` creates \url{http://www.olsak.net}.
The characters \code{\%}, `\`, `#`, `{` and `}` have to be protected by
@@ -665,7 +655,7 @@ backslash in the \^`\url` argument, the other special characters `~`,
`^`, `&` can be written as single character\fnote
{More exactly, there are the same rules as for `\code` command, see
section~\ref[verbatim].}.
-You can insert the `\|` command
+You can insert the `\|` command
in the `\url` argument as a potential breakpoint.
If the linked text have to be different than the URL, you can use
@@ -675,25 +665,25 @@ outputs to the text
\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}.
The PDF format provides {\em outlines} which are notes placed in the special frame of
-the PDF viewer. These notes can be managed as structured and hyperlinked
+the PDF viewer. These notes can be managed as a structured and hyperlinked
table of contents of the document. The command \^`\outlines{<level>}` creates
-such outlines from data used for table of contents in the document. The
+such outlines from data used for the table of contents in the document. The
<level> parameter gives the level of opened sub-outlines
in the default view. The deeper levels can be opened by mouse click on the
triangle symbol after that.
\new
If you are using a special unprotected macro in section titles then \^`\outlines` macro
-may crash. You must declare variant of the macro for outlines case which is
-expandable. Use \~`\regmacro` in such case. See the section \ref[toc] for more information
+may crash. You must declare a variant of the macro for outlines case which is
+expandable. Use \~`\regmacro` in this case. See the section \ref[toc] for more information
about \~`\regmacro`.
-The command \^`\insertoutline{<text>}` inserts next entry into PDF outlines at
-the main level~0. These entries can be placed before table of contents (created
-by \^`\outlines`) or after it. Theirs hyperlink destination is in the place
+The command \^`\insertoutline{<text>}` inserts a next entry into PDF outlines at
+the main level~0. These entries can be placed before the table of contents (created
+by \^`\outlines`) or after it. Their hyperlink destination is in the place
where the \^`\insertoutline` macro is used.
-\secc Lists
+\secc Lists
%%%%%%%%%%
The list of items is surrounded by \^`\begitems` and \^`\enditems` commands.
@@ -742,7 +732,7 @@ produces:
* Finito
\enditems
-Another style can be defined by the command \^`\sdef{_item:<style>}{<text>}`.
+Another style can be defined by the command \~`\sdef{_item:<style>}{<text>}`.
Default item can be set by \^`\defaultitem={<text>}`.
The list environments can be nested. Each new level of items is indented by
next multiple of \^`\iindent` value which is set to `\parindent` by default.
@@ -754,15 +744,19 @@ example:
\endtt
You can say \^`\begitems` \^`\novspaces` if you don't want vertical spaces above
-and below the list. The nested item list are without vertical spaces
-automatically. More information about design of lists of items should be
+and below the list. The nested item list is without vertical spaces
+automatically. More information about the design of lists of items should be
found in the section~\ref[lists].
+A \"selected block of text" can be surrounded by
+\^`\begblock`\dots\^`\endblock`. The default design of blocks of text is
+indented text in smaller font. The blocks of text can be nested.
+
\secc Tables
%%%%%%%%%%%
The macro \^`\table{<declaration>}{<data>}` provides similar <declaration>
-of tables as in \LaTeX: you can use letters `l`, `r`, `c`, each letter declares
+of tables as in \LaTeX: you can use letters `l`, `r`, `c`, each letter declares
one column (aligned to left, right, center, respectively).
These letters can be combined by the `|` character (vertical line). Example
@@ -785,7 +779,7 @@ generates the following result:
\medskip
Apart from `l`, `r`, `c` declarators, you can use the `p{<size>}` declarator
-which declares the column with paragraphs of given width. More precisely,
+which declares the column with paragraphs of given width. More precisely,
a long text in the table cell is printed as a multiline paragraph with given width.
By default, the paragraph is left-right justified. But there are
alternatives:
@@ -794,21 +788,21 @@ alternatives:
* `p{<size>`\^`\fL}` fit left, i.e.\ left justified, ragged right,
* `p{<size>`\^`\fR}` fit right, i.e.\ right justified, ragged left,
* `p{<size>`\^`\fC}` fit center, i.e.\ ragged left plus right,
-* `p{<size>`\^`\fS}` fit special, short one-line pararaph centered,
+* `p{<size>`\^`\fS}` fit special, short one-line pararaph centered,
long paragraph normal,
-* `p{<size>`\^`\fX}` fit extra, left-right justified but last line centered.
-\enditems
+* `p{<size>`\^`\fX}` fit extra, left-right justified but last line centered.
+\enditems
You can use `(<text>)` in the <declaration>. Then this text is applied in
each line of the table. For example `r(\kern10pt)l` adds more 10\,pt space
-between `r` and `l` rows.
+between `r` and `l` rows.
An arbitrary part of the <declaration> can be repeated by a <number>
prefixed. For example `3c` means `ccc` or `c 3{|c}` means
-`c|c|c|c`. Note that spaces in the <declaration> are ignored and you
+`c|c|c|c`. Note that spaces in the <declaration> are ignored and you
can use them in order to more legibility.
-
-The command `\cr` used in the <data> part of the table
+
+The command `\cr` used in the <data> part of the table
is generally known from Plain \TeX. It marks the end of each row in the table.
Moreover \OpTeX/ defines following similar commands:
@@ -819,17 +813,17 @@ Moreover \OpTeX/ defines following similar commands:
vertical double lines.
* \^`\crlli` \dots\ like \^`\crli` but horizontal line is doubled.
* \^`\crlp{<list>}` \dots\ like \^`\crli` but the lines are drawn only in the
- columns mentioned in comma separated `<list>` of their numbers.
+ columns mentioned in comma-separated `<list>` of their numbers.
The <list> can include `<from>-<to>` declarators, for example
- \^`\crlp{1-3,5}` is equal to \^`\crlp{1,2,3,5}`.
+ \^`\crlp{1-3,5}` is equal to \^`\crlp{1,2,3,5}`.
\enditems
The \^`\tskip``<dimen>` command works like the `\noalign{\vskip<dimen>}`
immediately after `\cr*` commands but it doesn't interrupt the vertical lines.
\new
-You can use following parameters for the \^`\table` macro. Default values are listed
-too.
+You can use the following parameters for the \^`\table` macro. Default values are listed
+too.
\begtt
\everytable={} % code used in \vbox before table processing
@@ -841,13 +835,13 @@ too.
\vvkern=1pt % space between lines in double vertical line
\hhkern=1pt % space between lines in double horizontal line
\tabskip=0pt % space between columns
-\tabskipl=0pt \tabskipr=0pt % space before first and after last column
+\tabskipl=0pt \tabskipr=0pt % space before first and after last column
\endtt
Example: if you do \^`\tabiteml={$\enspace}`\^`\tabitemr={\enspace$}` then
the \^`\table` acts like \LaTeX's array environment.
-If there is an item which spans to more than one column in the table then
+If there is an item that spans to more than one column in the table then
the macro \^`\multispan{<number>}` (from Plain \TeX) can help you. Another
alternative is
the command \^`\mspan``<number>[<declaration>]{<text>}`
@@ -857,8 +851,8 @@ with the same syntax as common \^`\table` <declaration>.
If your table includes vertical rules and you want to
create continuous vertical rules by \^`\mspan`, then use rule declarators `|`
after `c`, `l` or `r` letter in \^`\mspan` <declaration>. The
-exception is only in the case when \^`\mspan` includes first
-column and the table have rules on the left side. The example of \^`\mspan`
+exception is only in the case when \^`\mspan` includes the first
+column and the table have rules on the left side. The example of \^`\mspan`
usage is below.
The \^`\frame{<text>}` makes a frame around <text>. You can put the whole \^`\table`
@@ -884,48 +878,47 @@ like to be in the center of the <number> lines (current line is first).
You can use this for creating tables like in the following example:
\begtt \typosize[8.7/11]
-\thistable{\tabstrut={\vrule height 20pt depth10pt width0pt}
- \baselineskip=20pt \tablinespace=0pt \rulewidth=.8pt}
-\table{|8{c|}}{\crlp{3-8}
- \mspan2[c|]{} & \mspan3[c|]{Singular} & \mspan3[c|]{Plural} \crlp{3-8}
+\thistable{\tabstrut={\vrule height 20pt depth10pt width0pt}
+ \baselineskip=20pt \tablinespace=0pt \rulewidth=.8pt}
+\table{|8{c|}}{\crlp{3-8}
+ \mspan2[c|]{} & \mspan3[c|]{Singular} & \mspan3[c|]{Plural} \crlp{3-8}
\mspan2[c|]{} & Neuter & Masculine & Feminine & Masculine & Feminine & Neuter \crl
- \vspan2{I} & Inclusive & \mspan3[c|]{\vspan2{O}} & \mspan3[c|]{X} \crlp{2,6-8}
- & Exclusive & \mspan3[c|]{} & \mspan3[c|]{X} \crl
- \vspan2{II} & Informal & \mspan3[c|]{X} & \mspan3[c|]{X} \crlp{2-8}
- & Formal & \mspan6[c|]{X} \crl
- \vspan2{III} & Informal & \vspan2{O} & X & X & \mspan2[c|]{X} &\vspan2{O} \crlp{2,4-7}
- & Formal & & \mspan4[c|]{X} & \crl
-}
+ \vspan2{I} & Inclusive & \mspan3[c|]{\vspan2{O}} & \mspan3[c|]{X} \crlp{2,6-8}
+ & Exclusive & \mspan3[c|]{} & \mspan3[c|]{X} \crl
+ \vspan2{II} & Informal & \mspan3[c|]{X} & \mspan3[c|]{X} \crlp{2-8}
+ & Formal & \mspan6[c|]{X} \crl
+ \vspan2{III} & Informal & \vspan2{O} & X & X & \mspan2[c|]{X} &\vspan2{O} \crlp{2,4-7}
+ & Formal & & \mspan4[c|]{X} & \crl
+}
\endtt
\puttext 8.9cm -4cm {\pdfsave\pdfscale{.5}{.5}\rlap{%
-\thistable{\tabstrut={\vrule height 20pt depth10pt width0pt}
- \baselineskip=20pt \tablinespace=0pt \rulewidth=.8pt}
-\table{|8{c|}}{\crlp{3-8}
- \mspan2[c|]{} &\mspan3[c|]{Singular} &\mspan3[c|]{Plural} \crlp{3-8}
+\thistable{\tabstrut={\vrule height 20pt depth10pt width0pt}
+ \baselineskip=20pt \tablinespace=0pt \rulewidth=.8pt}
+\table{|8{c|}}{\crlp{3-8}
+ \mspan2[c|]{} &\mspan3[c|]{Singular} &\mspan3[c|]{Plural} \crlp{3-8}
\mspan2[c|]{} & Neuter & Masculine & Feminine & Masculine & Feminine & Neuter \crl
- \vspan2{I} & Inclusive & \mspan3[c|]{\vspan2{O}} &\mspan3[c|] X \crlp{2,6-8}
- & Exclusive & \mspan3[c|]{} &\mspan3[c|] X \crl
- \vspan2{II} & Informal & \mspan3[c|] X &\mspan3[c|] X \crlp{2-8}
- & Formal & \mspan6[c|] X \crl
- \vspan2{III} & Informal & \vspan2 O & X & X &\mspan2[c|] X & \vspan2 O \crlp{2,4-7}
- & Formal & &\mspan4[c|] X & \crl
+ \vspan2{I} & Inclusive & \mspan3[c|]{\vspan2{O}} &\mspan3[c|] X \crlp{2,6-8}
+ & Exclusive & \mspan3[c|]{} &\mspan3[c|] X \crl
+ \vspan2{II} & Informal & \mspan3[c|] X &\mspan3[c|] X \crlp{2-8}
+ & Formal & \mspan6[c|] X \crl
+ \vspan2{III} & Informal & \vspan2 O & X & X &\mspan2[c|] X & \vspan2 O \crlp{2,4-7}
+ & Formal & &\mspan4[c|] X & \crl
}}\pdfrestore}
-
-\hangindent=-7.5cm \hangafter=0
-The <number> parameter of \^`\vspan` must be one-digit number.
-If you want to set more digits then use braces.
+\hangindent=-7.5cm \hangafter=0
+The <number> parameter of \^`\vspan` must be one-digit number.
+If you want to set more digits then use braces.
You can use non-integer values too if you feel that the
result is better, for example \^`\vspan{2.1}{text}`.
-\hangindent=-7.5cm \hangafter=0
+\hangindent=-7.5cm \hangafter=0
The rule width of tables and implicit width of all `\vrule`s and `\hrule`s
-can be set by the command \^`\rulewidth=<dimen>`. The default value given
+can be set by the command \^`\rulewidth=<dimen>`. The default value given
by \TeX/ is 0.4\,pt.
The `c`, `l`, `r` and `p` are default \"declaration letters" but you can define
-more such letters by `\def\_tabdeclare<letter>{<left>##<right>}`.
+more such letters by `\def\_tabdeclare<letter>{<left>##<right>}`.
More about it is in technical documentation in section~\ref[table.impl].
See the definition of the \^`\tabdeclarec` macro, for example.
@@ -935,51 +928,50 @@ More about it is in section~\ref[table.w]
Many tips about tables can be seen on the site
\url{http://petr.olsak.net/optex/optex-tricks.html}.
-
\label[verbatim]\secc Verbatim
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The display verbatim text have to be surrounded by the \^`\begtt` and
-\^`\endtt` couple.
-The in-line verbatim have to be tagged (before and after)
+\^`\endtt` couple.
+The in-line verbatim have to be tagged (before and after)
by a character which is declared by
-\^`\activettchar``<char>`. For example \code{\\activettchar`}
-declares the character \code{`}
-for in-line verbatim markup.
+\^`\activettchar``<char>`. For example \code{\\activettchar`}
+declares the character \code{`}
+for in-line verbatim markup.
And you can use \code{`\\relax`} for
verbatim `\relax` (for example).
\new
Another alternative of printing in-line
-verbatim text is \~`\code{<text>}` (see below).
+verbatim text is \~`\code{<text>}` (see below).
If the numerical register \^`\ttline` is set to the non-negative value then
display verbatim will number the lines. The first line has the number
\^`\ttline+1` and when the verbatim ends then the \^`\ttline` value is equal to the
-number of last line printed. Next \^`\begtt...`\^`\endtt` environment will follow
+number of the last line printed. Next \^`\begtt...`\^`\endtt` environment will follow
the line numbering. \OpTeX/ sets \^`\ttline=-1` by default.
The indentation of each line in display verbatim is controlled by
\^`\ttindent` register. This register is set to the `\parindent` by default.
-User can change values of the `\parindent` and \^`\ttindent` independently.
+Users can change the values of the `\parindent` and \^`\ttindent` independently.
-The \^`\begtt` command starts internal group in which the catcodes are changed.
+The \^`\begtt` command starts the internal group in which the catcodes are changed.
\new
-Then the \^`\everytt` tokens register is run. It is empty by default and user can
-control fine behavior by it. For example the catcodes can be re-declared here. If
-you need to define active character in the \^`\everytt`, use \^`\adef` as in the
+Then the \^`\everytt` tokens register is run. It is empty by default and the user can
+control fine behavior by it. For example, the catcodes can be re-declared here. If
+you need to define an active character in the \^`\everytt`, use \~`\adef` as in the
following example:
\begtt \adef@{\string\endtt}
\everytt={\adef!{?}\adef?{!}}
\begtt
-Each occurrence of the exclamation mark will be changed to
-the question mark and vice versa. Really? You can try it!
+Each occurrence of the exclamation mark will be changed to
+the question mark and vice versa. Really? You can try it!
@
\endtt
%
-The \^`\adef` command sets its parameter as active {\it after\/}
+The \~`\adef` command sets its parameter as active {\it after\/}
the parameter of \^`\everytt` is read. So you don't have to worry about active
-categories in this parameter.
+categories in this parameter.
There is an alternative to \^`\everytt` named \^`\everyintt` which is used for
in-line verbatim surrounded by an \^`\activettchar` or processed by the \~`\code`
@@ -996,12 +988,12 @@ declared in a group). There are tips for such global `\everytt` definitions here
\new
If you want to apply a special code only for one \^`\begtt...`\^`\endtt`
-environment then don't set any \^`\everytt` but put desired material at the
+environment then don't set any \^`\everytt` but put desired material at the
same line where \^`\begtt` is. For example:
\begtt \adef@{\string\endtt}
\begtt \adef!{?}\adef?{!}
-Each occurrence of ? will be changed to ! and vice versa.
+Each occurrence of ? will be changed to ! and vice versa.
@
\endtt
@@ -1011,21 +1003,21 @@ parameter of macros and macro definitions. (It works in titles declared by
specially defined in \OpTeX/).
\new
You can use more robust command \^`\code{<text>}` in problematic
-situations, but you have to escape following characters in the <text>:
-`\`, `#`, `%`, braces (if the braces are unmatched in the <text>),
-and space or `^` (if there are more than one subsequent spaces or `^` in
+situations, but you have to escape the following characters in the <text>:
+`\`, `#`, `%`, braces (if the braces are unmatched in the <text>),
+and space or `^` (if there are more than one subsequent spaces or `^` in
the <text>). Examples:
\begtt
\code{\\text, \%\#} ... prints \text, %#
\code{@{..}*&^$ $} ... prints @{..}*&^$ $ without escaping, but you can
escape these characters too, if you want.
-\code{a \ b} ... two spaces between a b, second one must be escaped
+\code{a \ b} ... two spaces between a b, the second must be escaped
\code{xy\{z} ... xy{z ... unbalanced brace must be escaped
\code{^\^M} ... prints ^^M, the second ^ must be escaped
\endtt
-You can print verbatim listing from external files by the \^`\verbinput` command.
+You can print verbatim listing from external files by the \^`\verbinput` command.
Examples:
\begtt
@@ -1034,19 +1026,19 @@ Examples:
\verbinput (61-) program.c % from line 61 to the end
\verbinput (-) program.c % whole file is printed
\verbinput (70+10) program.c % from line 70, only 10 lines printed
-\verbinput (+10) program.c % from the last line read, print 10 lines
+\verbinput (+10) program.c % from the last line read, print 10 lines
\verbinput (-5+7) program.c % from the last line read, skip 5, print 7
\verbinput (+) program.c % from the last line read to the end
\endtt
\new
-You can insert additional commands for the \^`\verbinput` before
-first opening bracket. They are processed in the local group.
+You can insert additional commands for \^`\verbinput` before
+the first opening bracket. They are processed in the local group.
For example, `\verbinput \hsize=20cm (-) program.c`.
The \~`\ttline` influences the line numbering by the same way as in
\~`\begtt...`\~`\endtt` environment. If \~`\ttline=-1` then real line numbers are
-printed (this is default). If \code{\\ttline<-1} then no line
+printed (this is the default). If \code{\\ttline<-1} then no line
numbers are printed.
The \^`\verbinput` can be controlled by \^`\everytt`, \^`\ttindent` just like
@@ -1065,7 +1057,6 @@ you can set them by \~`\commentchars``<first><second>`. Such comments are
fully interpreted by \TeX/ (i.e. not verbatim).
Section~\ref[verb] (page \pgref[commentchars]) says more about this feature.
-
\sec Autogenerated lists
%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1073,11 +1064,11 @@ Section~\ref[verb] (page \pgref[commentchars]) says more about this feature.
%%%%%%%%%%%%%%%%%%%%%%
The \^`\maketoc` command prints the table of contents of all \~`\chap`, \~`\sec`
-and \~`\secc` used in the document. These data are read from external `*.ref` file, so
+and \~`\secc` used in the document. These data are read from the external `*.ref` file, so
you have to run \TeX/ more than once (typically three times if the table of
-contents is at the beginning of the document).
+contents is at the beginning of the document).
-Typically, we don't want to repeat the name of the section \"table of contents"
+Typically, we don't want to repeat the name of the section \"Table of contents"
in the table of contents again. The direct usage
of \~`\chap` or \~`\sec` isn't recommended here because the table of contents
is typically not referenced to itself. You can print the unnumbered and unreferenced
@@ -1090,8 +1081,8 @@ If you need a customization of the design of the TOC, read the
section~\ref[maketoc].
\new
-If you are using a special macro in section or chapter titles
-and you need different behavior of such macro in other cases then use
+If you are using a special macro in section or chapter titles
+and you need different behavior of such macro in other cases then use
\^`\regmacro{<case-toc>}{<case-mark>}{<case-outline>}`.
The parameters are applied locally in given cases. The \^`\regmacro` can be
used repeatedly: then its parameters are accumulated (for more macros).
@@ -1107,15 +1098,15 @@ For example:
{\def\mylogo{MyLoGo}} % used in PDF outlines
\endtt
-\secc Making the index
+\secc Making the index
%%%%%%%%%%%%%%%%%%%%%
-The index can be included into document by the \^`\makeindex` macro. No external
-program is needed, the alphabetical sorting are done inside \TeX/ at macro
+The index can be included in the document by the \^`\makeindex` macro. No external
+program is needed, the alphabetical sorting is done inside \TeX/ at macro
level.
The \^`\ii` command (insert to index) declares the word separated by the space
-as the index item. This declaration is represented as invisible item on the
+as the index item. This declaration is represented as an invisible item on the
page connected to the next visible word. The page number of the page where
this item occurs is listed in the index entry. So you can type:
@@ -1123,7 +1114,7 @@ this item occurs is listed in the index entry. So you can type:
The \ii resistor resistor is a passive electrical component ...
\endtt
-You cannot double the word if you use the \^`\iid` instead \^`\ii`:
+You cannot double the word if you use the \^`\iid` instead of \^`\ii`:
\begtt
The \iid resistor is a passive electrical component ...
@@ -1131,8 +1122,8 @@ or:
Now we'll deal with the \iid resistor .
\endtt
-Note that the dot or comma have to be separated by space when \^`\iid` is
-used. This space (before dot or comma) is removed by the macro in
+Note that the dot or comma has to be separated by space when \^`\iid` is
+used. This space (before dot or comma) is removed by the macro in
the current text.
The multiple-words entries are commonly arranged in the index as follows:
@@ -1163,7 +1154,7 @@ spare your typing by the comma in the \~`\ii` parameter. The previous example
is equivalent to `\ii linear/space \ii vector/space`~.
Maybe you need to propagate to the index the similar entry to the
-linear/space in the form space/linear. You can do this by the shorthand `,@`
+linear/space in the form of space/linear. You can do this by the shorthand `,@`
at the end of the \~`\ii` parameter. Example:
\begtt
@@ -1175,17 +1166,17 @@ is equivalent to:
If you really need to insert the space into the index entry, write `~`.
The \~`\ii` or \~`\iid` commands can be preceded by \^`\iitype` `<letter>`, then such
-reference (or more references generated by one \~`\ii`) has specified type.
+reference (or more references generated by one \~`\ii`) has the specified type.
The page numbers of such references should be formatted
-specially in the index. \OpTeX/ implements only \^`\iitype` `b`,
-\^`\iitype` `i` and \^`\iitype` `u`:
+specially in the index. \OpTeX/ implements only \^`\iitype` `b`,
+\^`\iitype` `i` and \^`\iitype` `u`:
the page number in bold or in italics or underlined is printed
-in the index when these types are used. Default index type is empty, which
-prints page numbers in normal font. The \TeX/book index is good example.
+in the index when these types are used. The default index type is empty, which
+prints page numbers in normal font. The \TeX/book index is a good example.
The \^`\makeindex` creates the list of alphabetically sorted index entries
without the title of the section and without creating more columns. \OpTeX/
-provides another macros \^`\begmulti` and \^`\endmulti` for more columns:
+provides other macros \^`\begmulti` and \^`\endmulti` for more columns:
\begtt \catcode`\<=13
\begmulti <number of columns>
@@ -1201,10 +1192,10 @@ code:
\endtt
Only \"pure words" can be propagated to the index by the \~`\ii` command. It
-means that there cannot be any macro, \TeX/ primitive, math selector etc.
-But there is another possibility to create such complex index entry. Use
-\"pure equivalent" in the \~`\ii` parameter and map this equivalent to the
-real word which is printed in the index. Such mapping is done by
+means that there cannot be any macro, \TeX/ primitive, math selector, etc.
+But there is another possibility to create such a complex index entry. Use
+\"pure equivalent" in the \~`\ii` parameter and map this equivalent to a
+real word that is printed in the index. Such mapping is done by
\^`\iis` command. Example:
\begtt
@@ -1215,11 +1206,11 @@ If the \ii relax `\relax` command is used then \TeX/ is relaxing.
\iis relax {\code{\\relax}}
\endtt
%
-The \^`\iis` `<equivalent> {<text>}` creates one entry in the \"dictionary
+The \^`\iis` `<equivalent> {<text>}` creates one entry in the \"dictionary
of the exceptions". The sorting is done by the <equivalent> but the
<text> is printed in the index entry list.
-The sorting rules when \^`\makeindex` runs depends on the current language.
+The sorting rules when \^`\makeindex` runs depends on the current language.
See section~\ref[lang] about languages selection.
\secc Bib\TeX/ing
@@ -1227,15 +1218,15 @@ See section~\ref[lang] about languages selection.
The command \^`\cite[<label>]` (or
\hbox{\^`\cite[<label-1>,<label-2>,...,<label-n>]`})
-creates the citation in the form [42] (or [15,~19,~26]).
-If \^`\shortcitations` is declared at the beginning of the document then
-continuous sequences of numbers are re-printed like this:
+creates the citation in the form [42] (or [15,~19,~26]).
+If \^`\shortcitations` is declared at the beginning of the document then
+continuous sequences of numbers are re-printed like this:
\hbox{[3--5,~7,~9--11]}. If
\^`\sortcitations` is declared then numbers generated by one \^`\cite` command
are sorted upward.
-If \^`\nonumcitations` is declared then the marks instead numbers are generated
-depending on the used bib-style. For example the citations look like
+If \^`\nonumcitations` is declared then the marks instead of numbers are generated
+depending on the used bib-style. For example, the citations look like
[Now08] or [Nowak, 2008].
The \^`\rcite[<labels>]` creates the same list as \^`\cite[<labels>]` but without
@@ -1247,7 +1238,7 @@ is linked to the references list.
You can define alternative formating of \^`\cite` command. Example:
-\begtt
+\begtt \catcode`\<=13
\def\cite[#1]{(\rcite[#1])} % \cite[<label>] creates (27)
\def\cite[#1]{$^{\rcite[#1]}$} % \cite[<label>] creates^{27}
\endtt
@@ -1259,20 +1250,20 @@ references list:
\begitems
* Manually using \~`\bib[<label>]` commands.
* By \~`\usebib/<type> (<style>) <bib-base>` command which reads `*.bib`
- files directly.
+ files directly.
\enditems
\new
Note that another two possibilities documented in OPmac (using external
-Bib\TeX/ program) isn't supported because Bib\TeX/ is old program which does not
+Bib\TeX/ program) isn't supported because Bib\TeX/ is an old program that does not
support Unicode. And Biber seems to be not compliant with Plain \TeX.
\medskip\noindent
{\bf References created manually using \^`\bib[<label>]` command.}
-\begtt
+\begtt
\bib [tbn] P. Olšák. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 1997.
-\bib [tst] P. Olšák. {\it Typografický systém \TeX.}
+\bib [tst] P. Olšák. {\it Typografický systém \TeX.}
269~s. Praha: CSTUG, 1995.
\endtt
@@ -1282,16 +1273,16 @@ command in the format \^`\bib[<label>] = {<mark>}`. The spaces around
equal sign are mandatory. Example:
\begtt
-\bib [tbn] = {Olšák, 2001}
+\bib [tbn] = {Olšák, 2001}
P. Olšák. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 2001.
\endtt
\noindent
{\bf Direct reading of `.bib` files} is possible by \^`\usebib` macro.
-This macro reads and uses macro package `librarian.tex` by Paul Isambert.
+This macro reads and uses macro package `librarian.tex` by Paul Isambert.
The usage is:
-\begtt
+\begtt \catcode`\<=13
\usebib/c (<style>) <bib-base> % sorted by \cite-order (c=cite),
\usebib/s (<style>) <bib-base> % sorted by style (s=style).
% example:
@@ -1308,30 +1299,29 @@ The \^`\usebib` command is more documented in section~\ref[usebib].
Not all records are printed from <bib-base> files: the command \^`\usebib`
selects only such bib-records which were used in \~`\cite` or \^`\nocite`
commands in your document. The \^`\nocite` behaves as \~`\cite` but prints
-nothing. It tells only that mentioned bib-record should be printed in the
+nothing. It tells only that the mentioned bib-record should be printed in the
reference list. If \^`\nocite[*]` is used then all records from <bib-base>
are printed.
-
\sec Graphics
%%%%%%%%%%%%%
\secc Colors
%%%%%%%%%%%
-\OpTeX/ provides a small number of color selectors:
-{\Blue `\Blue`},
-{\Red `\Red`},
+\OpTeX/ provides a small number of color selectors:
+{\Blue `\Blue`},
+{\Red `\Red`},
{\Brown `\Brown`},
-{\Green `\Green`},
-{\Yellow `\Yellow`},
-{\Cyan `\Cyan`},
-{\Magenta `\Magenta`},
-{`\White`},
-{\Grey `\Grey`},
+{\Green `\Green`},
+{\Yellow `\Yellow`},
+{\Cyan `\Cyan`},
+{\Magenta `\Magenta`},
+{`\White`},
+{\Grey `\Grey`},
{\LightGrey `\LightGrey`} and
`\Black`. User can define more
-such selectors by setting four CMYK components
+such selectors by setting four CMYK components
\new
or three RGB components. For example
@@ -1343,29 +1333,29 @@ or three RGB components. For example
\new
The command \^`\morecolors` reads more definitions of color selectors from
the \LaTeX/ file `x11nam.def`.
-There is about 300 color names like
+There are about 300 color names like
`\DeepPink`, `\Chocolate` etc. If there are numbered variants of the same
-name, then the letters B, C, etc. are appended to the name in \OpTeX/. For example
+name, then the letters B, C, etc. are appended to the name in \OpTeX/. For example
`\Chocolate` is Chocolate1, `\ChocolateB` is Chocolate2 etc.
\new
-The color selectors work locally in groups by default but with limitations. See
+The color selectors work locally in groups by default but with limitations. See
the technical documentation, section~\ref[colors] for more information.
-The basic colors \^`\Blue`, \^`\Red`, \^`\Cyan`, \^`\Yellow` etc.\ are defined
-with CMYK components using \^`\setcmykcolor`.
-On the other hand, you can define a color with three
-RGB components and \^`\morecolors` defines such RGB colors.
+The basic colors \^`\Blue`, \^`\Red`, \^`\Cyan`, \^`\Yellow` etc.\ are defined
+with CMYK components using \^`\setcmykcolor`.
+On the other hand, you can define a color with three
+RGB components and \^`\morecolors` defines such RGB colors.
By default, the color model isn't converted but only stored to
PDF output for each used color. Thus, there may be a mix of color
-models in the PDF output which is not good idea. You can overcome this
-problem by declaration \^`\onlyrgb` or \^`\onlycmyk`. Then only selected color
+models in the PDF output which is not a good idea. You can overcome this
+problem by declaration \^`\onlyrgb` or \^`\onlycmyk`. Then only the selected color
model is used for PDF output and if a used color is declared by another color
model then it is converted.
The \^`\onlyrgb` creates colors more bright (usable for computer
-presentations). On the other hand CMYK makes colors more true\fnote
-{Printed output is more equal to the monitor preview specially if you are
-using ICC profile for your printer.}
+presentations). On the other hand, CMYK makes colors more true\fnote
+{Printed output is more equal to the monitor preview especially if you are
+using ICC profile for your printer.}
for printing.
\new
@@ -1373,18 +1363,18 @@ You can define your color by a linear combination of previously defined colors u
\^`\colordef`. For example:
\begtt
-\colordef \myCyan {.3\Green + .5\Blue} % 30 % green, 50 % blue, 20% white
-\colordef \DarkBlue {\Blue + .4\Black} % Blue mixed with 40 % of black
+\colordef \myCyan {.3\Green + .5\Blue} % 30 % green, 50 % blue, 20% white
+\colordef \DarkBlue {\Blue + .4\Black} % Blue mixed with 40 % of black
\colordef \myGreen{\Cyan+\Yellow} % exact the same as \Green
\colordef \MyColor {.3\Orange+.5\Green+.2\Yellow}
\endtt
%
-The linear combination is done in CMYK substractive color space by default
-(RGB colors used in \^`\colordef` argument are converted first).
+The linear combination is done in CMYK subtractive color space by default
+(RGB colors used in \^`\colordef` argument are converted first).
If the resulting component is greater than 1 then it is truncated to 1.
If a convex linear combination (as in the last example above) is used then it
emulates color behavior on a painter's palette.
-You can use \^`\rgbcolordef` instead \^`\colordef` if you want to mix colors
+You can use \^`\rgbcolordef` instead of \^`\colordef` if you want to mix colors
in the additive RGB color space.
\def\coloron#1#2#3{%
@@ -1411,35 +1401,35 @@ The `\coloron` can be defined as follows:
The \^`\inspic` `{<filename>.<extension>}` or
\^`\inspic` `<filename>.<extension><space>`
inserts the picture stored in
-the graphics file with the name `<filename>.<extension>` to the document.
+the graphics file with the name `<filename>.<extension>` to the document.
You can set the picture width by \^`\picw=<dimen>`
before \^`\inspic` command which declares the width of the picture.
-The image files can be in the PNG, JPG, JBIG2 or PDF format.
+The image files can be in the PNG, JPG, JBIG2 or PDF format.
-The \^`\picwidth` is an equivalent register to `\picw`. Moreover there is an
+The \^`\picwidth` is an equivalent register to `\picw`. Moreover, there is an
\^`\picheight` register which denotes the height of the picture. If both
-registers are set then the picture will be (probably) deformed.
+registers are set then the picture will be (probably) deformed.
-The image files are searched in \^`\picdir`. This token list is empty
-by default, this means that the image files are searched in the
+The image files are searched in \^`\picdir`. This token list is empty
+by default, this means that the image files are searched in the
current directory. Example: \^`\picdir={img/}` supposes that image files are
-in `img` subdirectory. Note: the directory name must end by `/` in
+in `img` subdirectory. Note: the directory name must end by `/` in
the \^`\picdir` declaration.
Inkscape\fnote
-{A powerfull and free wysiwyg editor for creating vector graphics.}
+{A powerful and free Wysiwyg editor for creating vector graphics.}
is able to save a picture to PDF and labels of the picture to another
file\fnote
-{Chose \"Omit text in PDF and create LaTeX file" option.}.
-This second file should be read by \TeX/ in order to print labels
+{Chose \"Omit text in PDF and create LaTeX file" option.}.
+This second file should be read by \TeX/to print labels
in the same font as document font. \OpTeX/ supports this feature by
-\^`\inkinspic` `{<filename>.pdf}` command. It reads and displays
+\^`\inkinspic` `{<filename>.pdf}` command. It reads and displays
both: PDF image and labels generated by Inkscape.
-If you want to create a vector graphics (diagrams, schema, geometry
+If you want to create vector graphics (diagrams, schema, geometry
skicing) then you can do it by Wysiwyg graphics editor (Inkscape, Geogebra for
example), export the result to PDF and include it by \^`\inspic`.
-If you want to \"programm" such pictures then Tikz package is recommended.
+If you want to \"program" such pictures then Tikz package is recommended.
It works in Plain \TeX/ and \OpTeX.
\secc PDF transformations
@@ -1448,25 +1438,25 @@ It works in Plain \TeX/ and \OpTeX.
All typesetting elements are transformed by linear
transformation given by the current transformation matrix. The
`\pdfsetmatrix` `{<a> <b> <c> <d>}` command makes the internal multiplication
-with the current matrix so linear transformations can be composed.
+with the current matrix so linear transformations can be composed.
One linear transformation given by the `\pdfsetmatrix` above transforms
the vector $[0,1]$ to [<a>,\,<b>] and $[1,0]$ to [<c>,\,<d>].
The stack-oriented commands `\pdfsave` and `\pdfrestore` gives a possibility of
storing and restoring the current transformation matrix and the position of the current point.
-This position have to be the same from \TeX{}'s point of
-view as from transformation point of view when `\pdfrestore` is processed.
-Due to this fact the `\pdfsave\rlap{<transformed text>}\pdfrestore`
+This position has to be the same from \TeX{}'s point of
+view as from the transformation point of view when `\pdfrestore` is processed.
+Due to this fact the `\pdfsave\rlap{<transformed text>}\pdfrestore`
or something similar is recommended.
\OpTeX/ provides two special transformation macros
\^`\pdfscale` and \^`\pdfrotate`:
\begtt \catcode`\<=13
-\pdfscale{<horizontal-factor>}{<vertical-factor>}
+\pdfscale{<horizontal-factor>}{<vertical-factor>}
\pdfrotate{<angle-in-degrees>}
-\endtt
+\endtt
-These macros simply calls the properly `\pdfsetmatrix` command.
+These macros simply call the properly `\pdfsetmatrix` command.
It is known that the composition of transformations is not commutative. It
means that the order is important. You have to read the transformation
@@ -1484,32 +1474,32 @@ third: \pdfsave \pdfrotate{-15.3}\pdfsetmatrix{2 0 1.5 2}\rlap{text3}%
\endtt
%
\par\nobreak\bigskip\smallskip
-This gives the following result.
+This gives the following result.
First: \pdfsave \pdfrotate{30}\pdfscale{-2}{2}\rlap{text1}\pdfrestore
second: \pdfsave \pdfscale{-2}{2}\pdfrotate{30}\rlap{text2}\pdfrestore
third: \pdfsave \pdfrotate{-15.3}\pdfsetmatrix{2 0 1.5 2}\rlap{text3}\pdfrestore
\par\nobreak\bigskip\penalty0%\bigskip
-You can see that \TeX/ knows nothing about dimensions of transfomed material,
-it treats it as with a zero dimension object.
+You can see that \TeX/ knows nothing about dimensions of transformed material,
+it treats it as with a zero dimension object.
\new
The \^`\transformbox{<transformation>}{<text>}`
macro solves the problem. This macro puts the transformed
-material to a box with relevant dimension. The <transfromation> parameter
-includes one or more transfromation commands `\pdfsetmatrix`, `\pdfscale`,
+material into a box with relevant dimensions. The <transfromation> parameter
+includes one or more transformation commands `\pdfsetmatrix`, `\pdfscale`,
`\pdfrotate` with their parameters. The <text> is transformed text.
Example: \~`\frame{\transformbox{\pdfscale{1}{1.5}\pdfrotate{-10}}{moj}}`
creates \frame{\transformbox{\pdfscale{1}{1.5}\pdfrotate{-10}}{moj}}.
-The \^`\rotbox{<deg>}{<text>}` is shortcut for
+The \^`\rotbox{<deg>}{<text>}` is shortcut for
\^`\transformbox{\pdfrotate{<deg>}}{<text>}`.
\secc Ovals, circles
%%%%%%%%%%%%%%%%%%%%
\new
-The \^`\inoval{<text>}` creates a box like this: \inoval{text}.
+The \^`\inoval{<text>}` creates a box like this: \inoval{text}.
Multiline text can be put in an oval by the command \^`\inoval{\vbox{<text>}}`.
Local settings can be set by
\^`\inoval[<settings>]{<text>}` or you can re-declare global settings by
@@ -1524,7 +1514,7 @@ Local settings can be set by
\overlapmargins=N % ignore margins by surrounding text
\hhkern=0pt \vvkern=0pt} % left-righ margin, top-bottom margin
\endtt
-The total distance from text to oval boundary is `\hhkern+\roundness` at the left and right
+The total distance from text to oval boundary is `\hhkern+\roundness` at the left and right
sides and
`\vvkern+\roundness` at the top and bottom sides of the text.
@@ -1534,11 +1524,11 @@ put such setting right in front of the <text>:
\new
The \^`\incircle[\ratio=1.8]{<text>}` creates a box like this \incircle[\ratio=1.8]{text}.
-The \^`\ratio` parameter means width/height. The usage is analogical like for oval.
+The \^`\ratio` parameter means width/height. The usage is analogical like for oval.
The default parameters are
\begtt
-\circleparams={\ratio=1 \fcolor=\Yellow \lcolor=\Red \lwidth=0.5bp
+\circleparams={\ratio=1 \fcolor=\Yellow \lcolor=\Red \lwidth=0.5bp
\shadow=N \ignoremargins=N \hhkern=2pt \vvkern=2pt}
\endtt
@@ -1551,22 +1541,22 @@ is used.
The `\roundness=5mm` is default for \^`\clipinoval` and user can change it.
Example:
-\begtt
-\clipincircle 3cm 3.5cm 6cm 7cm {\picw=6cm \inspic{myphoto.jpg}}
+\begtt
+\clipincircle 3cm 3.5cm 6cm 7cm {\picw=6cm \inspic{myphoto.jpg}}
\endtt
\secc Putting images and texts wherever
\new
The \^`\puttext` `<x> <y> {<text>}` puts the `<text>` shifted by `<x>` right and by
-`<y>` up from current point of typesetting and does not change the
-position of the current point. Assume coordinate system with origin in the
+`<y>` up from the current point of typesetting and does not change the
+position of the current point. Assume a coordinate system with origin in the
current point. Then \^`\puttext` `<x> <y> {<text>}` puts the text at the
coordinates `<x>`, `<y>`. More exactly the left edge of its baseline is at that
-position.
+position.
\new
-The \^`\putpic` `<x> <y> <width> <height> {<image>}` puts the `<image>` of given
+The \^`\putpic` `<x> <y> <width> <height> {<image>}` puts the `<image>` of given
`<width>` and `<height>` at given position (its left-bottom corner).
You can write \^`\nospec` instead `<width>` or `<height>` if this parameter is
not given.
@@ -1578,15 +1568,15 @@ not given.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\OpTeX/ prepares hyphenation patterns for all languages if such patterns are
-available in your \TeX/ system.
+available in your \TeX/ system.
\new
Only USenglish patterns (original from Plain \TeX/) are preloaded.
-Hyphenation patterns of all another languages are loaded on demand when you first use
-the `\<iso-code>lang` command in your document.
+Hyphenation patterns of all other languages are loaded on demand when you first use
+the `\<iso-code>lang` command in your document.
For example \^`\delang` for German, \^`\cslang` for
-Czech, \^`\pllang` for Polish. The <iso-code> is a shortcut
-of the language (mostly from ISO 639-1).
-You can list all available languages by \^`\langlist`
+Czech, \^`\pllang` for Polish. The <iso-code> is a shortcut
+of the language (mostly from ISO 639-1).
+You can list all available languages by \^`\langlist`
macro. This macro prints now:
\medskip
@@ -1597,7 +1587,7 @@ macro. This macro prints now:
\new
For compatibility with e-plain macros, there is the command
-\^`\uselanguage{<language>}`. The parameter <language> is long form of
+\^`\uselanguage{<language>}`. The parameter <language> is long-form of
language name, i.e.\ \^`\uselanguage{Czech}` works the same as \^`\cslang`.
The \^`\uselanguage` parameter is case insensitive.
@@ -1612,27 +1602,27 @@ articles or books: \"Chapter", \"Table" and \"Figure". These phrases need to be
in used language and it depends on the previously used language selectors
`\<iso-code>lang`. \OpTeX/ declares these words only for few languages:
\new
-Czech, German, Spanish, French, Greek, Italian, Polish, Russian, Slovak and
-English, If you need to use these words in another languages or you want to
-auto-generate more words in your macros, then you can declare it by
-\^`\sdef` or \^`\_langw` commands as shown in section~\ref[langphrases].
+Czech, German, Spanish, French, Greek, Italian, Polish, Russian, Slovak and
+English, If you need to use these words in other languages or you want to
+auto-generate more words in your macros, then you can declare it by
+\~`\sdef` or \^`\_langw` commands as shown in section~\ref[langphrases].
The \~`\makeindex` command needs to know the sorting rules used in your language.
-\OpTeX/ defines only few language rules for sorting: Czech,
+\OpTeX/ defines only a few language rules for sorting: Czech,
Slovak and English. How to declare sorting rules for more languages are
described in the section~\ref[makeindex].
If you declare `\<iso-code>quotes`, then the control sequences `\"` and `\'`
-should be used like this: `\"<quoted text>"` or `\'<quoted text>'`
+should be used like this: `\"<quoted text>"` or `\'<quoted text>'`
(note that the terminating character is the same but it isn't escaped).
-This prints language dependent normal or alternative quotes around
+This prints language-dependent normal or alternative quotes around
<quoted text>. The language is specified by <iso-code>. \OpTeX/ declares
-quotes only for Czech, German, Spanish, French, Greek, Italian, Polish,
-Russian, Slovak and English (\^`\csquotes`, \^`\dequotes`, \dots, \^`\enquotes`).
+quotes only for Czech, German, Spanish, French, Greek, Italian, Polish,
+Russian, Slovak and English (\^`\csquotes`, \^`\dequotes`, \dots, \^`\enquotes`).
You can simply define your own quotes as shown in section~\ref[langphrases].
-The `\"` is used for quotes visualy more similar to the `"` character which
+The `\"` is used for quotes visually more similar to the `"` character which
can be primary quotes or secondary quotes depending on the language rules.
-May be you want to alternate meaning of these two types of quotes. Use
+Maybe you want to alternate the meaning of these two types of quotes. Use
`\<isocode>quotes\altquotes` in such case.
\secc[styles] Pre-defined styles
@@ -1640,19 +1630,19 @@ May be you want to alternate meaning of these two types of quotes. Use
\OpTeX/ defines three style-declaration macros \~`\report`, \~`\letter` and
\~`\slides`. You can use them at the beginning of your document if you are
-preparing these types of document and you don't need to create your own
+preparing these types of documents and you don't need to create your own
macros.
-The \^`\report` declaration is intended to create reports. It
+The \^`\report` declaration is intended to create reports. It
sets default font size to 11\,pt and `\parindent` (paragraph indentation) to 1.2\,em.
The `\tit` macro uses smaller font because we assume that \"chapter level"
-will be not used in reports. The first page has no page number, but next pages
-are numbered (from number~2). Footnotes are numbered from one in whole
-document. The macro `\author <authors><end-line>` can be used when
-\^`\report` is declared. It prints `<authors>` in italics at center of the
+will be not used in reports. The first page has no page number, but the next pages
+are numbered (from number~2). Footnotes are numbered from one in the whole
+document. The macro `\author <authors><end-line>` can be used when
+\^`\report` is declared. It prints `<authors>` in italics at the center of the
line. You can separate authors by `\nl` to more lines.
-The \^`\letter` declaration is intended to create letters.
+The \^`\letter` declaration is intended to create letters.
See the files `op-letter-*.tex` for examples.
The \^`\letter` style sets default
font size to 11\,pt and `\parindent` to 0\,pt. It sets half-line space
@@ -1670,21 +1660,21 @@ looks like:
<empty line>
\endtt
-It means that you need not to use any special mark at the end of lines: end
+It means that you need not use any special mark at the end of lines: the ends
of lines in the source file are the same as in printed output. The
\^`\address` macro creates `\vtop` with address lines. The width of such
-`\vtop` is equal to the most wide line used in it. So, you can use
-`\hfill\address...` in order to put the address box to the right side of the
-document. Or you can use `<prefixed text>\address...` to put
-`<prefixed text>` before first line of the address.
+`\vtop` is equal to the widest line used in it. So, you can use
+`\hfill\address...` to put the address box to the right side of the
+document. Or you can use `<prefixed text>\address...` to put
+`<prefixed text>` before the first line of the address.
The \^`\slides` style creates a simple presentation slides. See an example
in the file `op-slides.tex`. Run `optex op-slides.tex` and see the documentation of
-\^`\slides` style in the file `op-slides.pdf`.
+\^`\slides` style in the file `op-slides.pdf`.
-Analogical declaration macro `\book` is not prepared. Each book needs an
+Analogical declaration macro `\book` is not prepared. Each book needs
individual typographical care. You need to create specific macros for
-design.
+design.
\secc Loading other macro packages
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1692,30 +1682,40 @@ design.
You can load more macro packages by `\input{<file-name>}` or by
\^`\load[<file-names>]`. The first case (`\input`) is \TeX/ primitive command, it can be
used in the alternative old syntax `\input <filename><space>` too. The
-second case (\^`\load`) allows to specify a comma separated list of included files.
+second case (\^`\load`) allows specifying a comma-separated list of included files.
Moreover, it loads each macro file only once, it sets
temporarily standard category codes during loading and it tries to
-load `<filename>.opm` or `<filename>.tex` or `<filename>`, first occurence
-wins. Example:
+load `<filename>.opm` or `<filename>.tex` or `<filename>`, the first occurence
+wins. Example:
\begtt
-\load [qrcode, tikz]
+\load [qrcode, tikz]
\endtt
%
does `\input qrcode.opm` \,and `\input tikz.tex` \,and it saves
local information about the fact that these file names
-`qrcode` and `tikz` were already used, i.\,e. next \^`\load` will skip them.
+`qrcode` and `tikz` were already used, i.\,e. next \^`\load` will skip them.
It is strongly recommended to use the `\load` macro for loading external
-macros, if you need them. On the other hand, if your source document is structured
+macros if you need them. On the other hand, if your source document is structured
to more files (with individual chapters or sections), use simply the `\input` primitive.
+The macro packages intended to \OpTeX/ have the name `*.opm`.
+The following packages are distributed as part of \OpTeX/:
+\begitems
+* `qrcodes.opm` enables to create QR codes.
+* `vlna.opm` enables to protect of one-letter prepositions and more things automatically.
+* `emoji.opm` defines `\emoji{<name>}` command for colored emoticons.
+* `plain-at.opm` defines the old names from plain \TeX/.
+\enditems
+See the directory `optex/pkg/` and these files for more information about
+them.
\secc Lorem ipsum dolor sit
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\new
-A designer needs to concentrate to the design of the output and maybe he/she
-needs a material for testing macros. There is the possibility to generate a
+A designer needs to concentrate on the design of the output and maybe he/she
+needs material for testing macros. There is the possibility to generate a
neutral text for such experiments. Use \^`\lorem[<number>]` or
\^`\lorem[<from>-<to>]`. It prints a paragraph (or paragraphs) with neutral
text. The numbers <number> or <from>, <to> must be in the range 1 to 150
@@ -1728,7 +1728,7 @@ prints all prepared paragraphs.
\new
The control sequences for typical logos can be terminated by optional `/`
-which is ignored when printing. This makes logos more legible in source file:
+which is ignored when printing. This makes logos more legible in the source file:
\begtt
We are using \TeX/ because it is cool. \OpTeX/ is better than \LaTeX.
@@ -1737,11 +1737,11 @@ We are using \TeX/ because it is cool. \OpTeX/ is better than \LaTeX.
\secc The last page
%%%%%%%%%%%%%%%%%%%
-The number of the last page (it may be different from number of pages) is
+The number of the last page (it may be different from the number of pages) is
expanded by \^`\lastpage` macro. It expands to `?` in first \TeX/ run and to
-the last page in next \TeX/ runs.
+the last page in next \TeX/ runs.
-There is an example for footlines in the format \"current page / last page":
+There is an example for footlines in the format \"current page / last page":
\begtt
\footline={\hss \fixedrm \folio/\lastpage \hss}
@@ -1750,80 +1750,159 @@ There is an example for footlines in the format \"current page / last page":
\new
The \^`\lastpage` expands to the last \^`\folio` which is a decimal
number or Roman numeral (when \^`\pageno` is negative). If you need to know
-total pages used in the document, use \^`\totalpages` macro. It expands to
+the total pages used in the document, use \^`\totalpages` macro. It expands to
zero (in first \TeX/ run) or to the number of all pages in the document
-(in next \TeX/ runs).
+(in next \TeX/ runs).
\secc Use \OpTeX/
%%%%%%%%%%%%%%%%%
\new
-The command \^`\useOpTeX` (or \^`\useoptex`) does nothing in \OpTeX/ but it causes
+The command \^`\useOpTeX` (or \^`\useoptex`) does nothing in \OpTeX/ but it causes
an error (undefined control sequence) when another format is used. You can
put it as the first command in your document:
\begtt
-\useOpTeX % we are using OpTeX format, no LaTeX :)
+\useOpTeX % we are using OpTeX format, no LaTeX :)
\endtt
\sec Summary
%%%%%%%%%%%%
-\begtt \typosize[9/11]\adef!{\string\endtt}\adef&{\kern.25em}
-\tit Title (terminated by end of line)
-\chap Chapter Title (terminated by end of line)
-\sec Section Title (terminated by end of line)
-\secc Subsection Title (terminated by end of line)
-
-\maketoc % table of contents generation
-\ii item1,item2 % insertion the items to the index
-\makeindex % the index is generated
-
-\label [labname] % link target location
-\ref [labname] % link to the chapter, section, subsection, equation
-\pgref [labname] % link to the page of the chapter, section, ...
-
-\caption/t % a numbered table caption
-\caption/f % a numbered caption for the picture
-\eqmark % a numbered equation
-
-\begitems % start list of the items
-\enditems % end of list of the items
-\begtt % start verbatim text
-! % end verbatim text
-\activettchar X % initialization character X for in-text verbatim
-\code % another alternative for in-text verbatim
-\verbinput % verbatim extract from the external file
-\begmulti num % start multicolumn text (num columns)
-\endmulti % end multicolumn text
-
-\cite [labnames] % refers to the item in the lits of references
-\rcite [labnames] % similar to \cite but [] are not printed.
-\sortcitations \shortcitations \nonumcitations % cite format
-\bib [labname] % an item in the list of references
-\usebib/? (style) bib-base % direct using of .bib file, ? in {s,c}
-
-\load [<filenames>] % loadaing macro files
-\fontfam [FamilyName] % selection of font family
-\typosize [font-size/baselineskip] % size setting of typesetting
-\typoscale [factor-font/factor-baselineskip] % size scaling
-\thefontsize [size] \thefontscale [factor] % current font size
-
-\inspic file.ext % insert a picture, extensions: jpg, png, pdf
-\table {rule}{data} % macro for the tables like in LaTeX
-
-\fnote {text} % footnote (local numbering on each page)
-\mnote {text} % note in the margin (left or right by page number)
-
-\hyperlinks {color-in}{color-out} % PDF links activate as clickable
-\outlines {level} % PDF will have a table of contents in the left tab
-
-\magscale[factor] % resize typesetting, line/page breaking unchanged
-\margins/pg format (left, right, top, bottom)unit % margins setting
-
-\report \letter \slides % style declaration macros
+\def\ttref#1'{\ea\~\ea`\csname#1\endcsname`}
+
+\begtt \typosize[9/11]\adef&{\kern.25em}\adef~#1'{\ea\~\ea`\csname#1\endcsname`}
+~tit' Title (terminated by end of line)
+~chap' Chapter Title (terminated by end of line)
+~sec' Section Title (terminated by end of line)
+~secc' Subsection Title (terminated by end of line)
+
+~maketoc' % table of contents generation
+~ii' item1,item2 % insertion the items to the index
+~makeindex' % the index is generated
+
+~label' [labname] % link target location
+~ref' [labname] % link to the chapter, section, subsection, equation
+~pgref' [labname] % link to the page of the chapter, section, ...
+
+~caption'/t % a numbered table caption
+~caption'/f % a numbered caption for the picture
+~eqmark' % a numbered equation
+
+~begitems' % start a list of the items
+~enditems' % end of list of the items
+~begblock' % start a block of text
+~endblock' % end of block of text
+~begtt' % start a verbatim text
+~endtt' % end verbatim text
+~activettchar' X % initialization character X for in-text verbatim
+~code' % another alternative for in-text verbatim
+~verbinput' % verbatim extract from the external file
+~begmulti' num % start multicolumn text (num columns)
+~endmulti' % end multicolumn text
+
+~cite' [labnames] % refers to the item in the lits of references
+~rcite' [labnames] % similar to \cite but [] are not printed.
+~sortcitations' ~shortcitations' ~nonumcitations' % cite format
+~bib' [labname] % an item in the list of references
+~usebib'/? (style) bib-base % direct using of .bib file, ? in {s,c}
+
+~load' [filenames] % loadaing macro files
+~fontfam' [FamilyName] % selection of font family
+~typosize' [font-size/baselineskip] % size setting of typesetting
+~typoscale' [factor-font/factor-baselineskip] % size scaling
+~thefontsize' [size] ~thefontscale' [factor] % current font size
+
+~inspic' file.ext % insert a picture, extensions: jpg, png, pdf
+~table' {rule}{data} % macro for the tables like in LaTeX
+
+~fnote' {text} % footnote (local numbering on each page)
+~mnote' {text} % note in the margin (left or right by page number)
+
+~hyperlinks' {color-in}{color-out} % PDF links activate as clickable
+~outlines' {level} % PDF will have a table of contents in the left tab
+
+~magscale'[factor] % resize typesetting, line/page breaking unchanged
+~margins'/pg format (left, right, top, bottom)unit % margins setting
+
+~report' ~letter' ~slides' % style declaration macros
\endtt
+\sec API for macro writers
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+All \TeX/ primitives and almost all \OpTeX/ macros are accesible by two
+names: `\foo` (public or user name space) and `\_foo` (private name space).
+For example `\hbox` and `\_hbox` means the same \TeX/ primitive. More about
+it is documented in section~\ref[prefixed].
+
+If this manual refers `\foo` then `\_foo` equivalent exists too. For example,
+we mention the `\addto` macro below. The `\_addto` equivalent exists too, but it
+is not explicitly mentioned here. If we refer only `\_foo` then its public
+equivalent does not exist. For example, we mention the `\_codedecl` macro below, so
+this macro is not available as `\codedecl`.
+
+If you are writing a document or macros specific for the document, then use
+simply user namespace (`\foo`). If you are writing more general macros,
+then use private namespace (`\_foo`), but you should declare your own namespace
+by \~`\_namespace` macro and you have to follow the naming discipline described in
+section~\ref[pkg-namespace].
+
+The alphabetically sorted list of macros typically usable for macro writers follows.
+More information about such macros can be found in the technical documentation.
+You can use hyperlinks here in order to go to the appropriate place of the technical
+documentation.
+
+\medskip \noindent
+\^`\addto`` \macro{<text>}` adds <text> at the end of `\macro` body.\nl
+\^`\adef` `<char>{<body>}` defines <char> active character with meaning <body>.\nl
+\^`\afterfi` `{<text>}<ignored>\fi` expands to `\fi<text>`.\nl
+\^`\bp`` {<dimen expression>}` expands \TeX/ dimension to decimal number in `bp` without unit.\nl
+\~`\_codedecl`` <sequence> {<info>}` is used at beginning of macro files.\nl
+\~`\colordef`` \macro {<mix of colors>}` declares `\macro` as color switch.\nl
+\^`\cs` `{<string>}` expands `\<string>`.\nl
+\~`\_doc` `...` \~`\_cod` encloses documenation text in the macro code.\nl
+\^`\eoldef`` \macro #1{<body>}` defines `\macro` with parameter separated to end of line.\nl
+\~`\_endcode` closes the part of macro code in macro files.\nl
+\~`\_endnamespace` closes name space declared by \~`\_namespace`.\nl
+\~`\eqbox`` [<label>]{<text>}` creates `\hbox{<text>}` with common width across whole document.\nl
+\^`\expr`` {<expression>}` expands to result of the <expression> with decimal numbers.\nl
+\~`\fontdef`` \f {<font spec.>}` declares `\f` as font switch.\nl
+\~`\fontlet` `\fa=\fb <sizespec.>` declares `\fa` as the same font switch
+ like `\fb` at given <sizespec.>.\nl
+\^`\foreach` `<list>\do <parameters>{<what>}` is exapandable loop over <list>.\nl
+\^`\foreachdef` `\macro <parameters>{<what>}` declares expandable `\macro` as loop over <list>.\nl
+\^`\fornum` `<from>..<to>\do {<what>}` is expanadable loop with numeric variable.\nl
+\^`\ignoreit` `<one>`, \^`\ignoresecond` `<one><two>`, \^`\usesecond` `<one><two>` ignores parameters.\nl
+`\expandafter` \^`\ignorept` `\the<dimen>` expands to decimal number <dimen> without `pt`.\nl
+\~`\isempty`, \~`\istoksempty`, \~`\isequal`, \~`\ismacro`, \~`\isdefined`, \~`\isinlist`
+\~`\isfile`, \~`\isfont` do various tests. Example: \~`\isinlist\list{<text>}\iftrue` does
+ `\iftrue` if <text> is in `\list`.\nl
+\^`\isnextchar`` <char>{<text1>}{<text2>}` performs <text1> if next
+ character is <char>, else <text2>.\nl
+\~`\kv` `{<key>}` expands to value when key-value parameters are used.\nl
+\^`\loop` `...` \^`\repeat` is classical Plain \TeX/ loop.\nl
+\^`\mathstyles`` {<math list>}` enables to create macros dependent on current math style.\nl
+\~`\_namespace`` {<pkg>}` declares name space used by package writers.\nl
+\^`\newcount`, \^`\newdimen` etc. are classical Plain \TeX/ allocators.\nl
+\^`\newif` `\iffoo` declares boolean `\iffoo` as in Plain \TeX/.\nl
+\^`\_newifi` `\_iffoo` declares boolean `\_iffoo`.\nl
+\^`\opinput`` {<filename>}` reads file like `\input` but with standard catcodes.\nl
+\^`\optdef`` \macro [<opt-default>] <parameters>{<body>}` defines `\macro` with [opt.parameter].\nl
+\^`\opwarning` `{<text>}` prints <text> to the terminal and .log file as warning.\nl
+\~`\private`` <sequence> <sequence> ... ;` declares <sequence>s for private name space.\nl
+\~`\public`` <sequence> <sequence> ... ;` declares <sequence>s for public name space.\nl
+\~`\readkv` `\macro` reads parameters from `\macro` in key-value format.\nl
+\^`\replstring`` \macro{<stringA>}{<stringB>}` replaces all <stringA> to <stringB> in `\macro`.\nl
+\^`\sdef` `{<string>}<parameters>{<body>}` behaves like `\def\<string><parameters>{<body>}`.\nl
+\^`\setctable` and \^`\restorectable` manipulate with stack of catcode tables.\nl
+\^`\slet` `{<stringA>}{<stringB>}` behaves like `\let\<stringA>=\<stringB>`\nl
+\^`\sxdef` `{<string>}<parameters>{<body>}` behaves like `\xdef\<string><parameters>{<body>}`.\nl
+\^`\trycs`` {<string>}{<text>}` expands `\<string>` if it is defined else expands <text>.\nl
+\^`\wlog`` {<text>}` writes <text> to .log file.\nl
+\^`\wterm`` {<text>}` writes <text> to the terminal and .log file.\nl
+\^`\xargs`` <what> <token> <token> ... ;` repeats <what><token> for each <token>.\nl
+\unpenalty\unskip
\sec Compatibility with Plain \TeX/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1831,16 +1910,16 @@ put it as the first command in your document:
All macros of Plain \TeX/ are re-written in \OpTeX/. Common macros should
work in the same sense as in original Plain \TeX. Internal control sequences
like `\p@` or `\f@@t` are removed and mostly replaced by control sequences
-prefixed by `_` (like `\_this`). If you need to use basic set of old Plain
+prefixed by `_` (like `\_this`). If you need to use the basic set of old Plain
\TeX/ control sequences like `\p@` (for example you are reading an old macro file),
use `\load[plain-at]`.
All primitives and common macros have two
control sequences with the same meaning: in prefixed and unprefixed form.
-For example `\hbox` is equal to `\_hbox`.
+For example `\hbox` is equal to `\_hbox`.
Internal macros of \OpTeX/ have and use only prefixed form. User should use
-unprefixed forms, but prefixed forms are accessible too, because the `_` is
-set as a letter category code globally (in macro files and in users document too). User
+unprefixed forms, but prefixed forms are accessible too because the `_` is
+set as a letter category code globally (in macro files and users document too). User
should re-define unprefixed forms of control sequences without worries that
something internal will be broken (only the sequence `\par` cannot be
re-defined without change of internal \TeX/ behavior because it is
@@ -1848,7 +1927,7 @@ hard-coded in \TeX/, unfortunately).
\new
The Latin Modern 8bit fonts instead Computer Modern 7bit fonts are
-preloaded in the format, but only few ones. The full family set is ready to
+preloaded in the format, but only a few ones. The full family set is ready to
use after the command \~`\fontfam[LMfonts]` which reads the fonts in OTF
format.
@@ -1859,7 +1938,7 @@ doesn't set any macro as `\outer`. Macros like `\TeX`, `\rm` are defined as
\new
The text accents macros `\"`, `\'`, `\v`, `\u`, `\=`, `\^`, `\.`, `\H`,
-`\~`, \code{\\`}, `\t` are undefined\fnote
+`\~`, \code{\\`}, `\t` are undefined\fnote
{The math accents macros like `\acute`, `\bar`, `\dot`, `\hat` still work.}
in \OpTeX/. Use real
letters like á, ř, ž in your source document instead of these old accents macros.
@@ -1867,14 +1946,14 @@ If you really want to use them, you can initialize them by the \^`\oldaccents`
command. But we don't recommend it.
\new
-The default paper size is not set as letter with 1\,in margins but as A4 with
-2.5\,cm margins. You can change it, for example by
+The default paper size is not set as the letter with 1\,in margins but as A4 with
+2.5\,cm margins. You can change it, for example by
\^`\margins/1 letter (1,1,1,1)in`. This example sets the classical Plain \TeX/
page layout.
\new
-The origin for typographical area is not at top left 1\,in 1\,in coordinates
-but at top left paper corner exactly. For example, `\hoffset` includes directly left
+The origin for the typographical area is not at the top left 1\,in 1\,in coordinates
+but at the top left paper corner exactly. For example, `\hoffset` includes directly left
margin.
The tabbing macros `\settabs`\iindex{settabs} and `\+` (from Plain \TeX/)
@@ -1882,13 +1961,12 @@ are not defined in \OpTeX/ because they are obsolete. But you can use the
\ulink[http://petr.olsak.net/optex/optex-tricks.html\#tabs]{\OpTeX/ trick 0021}
if you really need such feature.
-The `\sec` macro is reserved to sections but original Plain \TeX/ declares this
+The `\sec` macro is reserved for sections but original Plain \TeX/ declares this
control sequence for math secans.
\enddocument
-
\sec Dependencies
%%%%%%%%%%%%%%%%%
@@ -1896,7 +1974,7 @@ When `optex.fmt` is created then the following must be installed
\begitems
* The `\luatex` program.
-* Latin moder font metrics
+* Latin moder font metrics
`ec-lmr10.tfm`, `ec-lmbx10.tfm`, `ec-lmri10.tfm`,
`ec-lmbxi10.tfm`, `ec-lmtt10.tfm` (for basic text font initializing).
* Computer rmodern font metrics
@@ -1906,27 +1984,27 @@ When `optex.fmt` is created then the following must be installed
* The file `hyphen.tex` form plain \TeX.
\enditems
-When `\fontfam` is used then the ability of Unicode fonts reading
-is initialized using Lua scripts: `ltluatex.lua` (from \LaTeX/ package),
+When `\fontfam` is used then the ability of Unicode fonts reading
+is initialized using Lua scripts: `ltluatex.lua` (from \LaTeX/ package),
`luaotfload-main.lua` and more 20 similar `.lua` files (from `luaotfload`
package).
When a font family is needed using `\fontfam` then such font family must be
-installed in the OTF format otherwise the `\fontfam` command is ignored
+installed in the OTF format otherwise, the `\fontfam` command is ignored
(only warning about no-existent font family is printed).
-When `\cslang`, `\delang` etc. commands are used in the document
-then the hyphenation patterns of relevant languages must be installed.
+When `\cslang`, `\delang` etc. commands are used in the document
+then the hyphenation patterns of relevant languages must be installed.
Moreover the Lua script `luatex-hyphen.lua` (from `hyph-utf8` package)
-and data file `language-dat.lua` (from `hyphen-base` package)
+and data file `language-dat.lua` (from `hyphen-base` package)
must be installed.
-When `\usebib` command is used then `librarian.tex` file
+When `\usebib` command is used then `librarian.tex` file
(from the `librarian` macro package) must be installed.
-When `\morecolors` command is used then `x11nam.def` file
+When `\morecolors` command is used then `x11nam.def` file
(from the `xcolor` package) must be installed.
-When `\lorem` command is used then `lipsum.ltd.tex` file
+When `\lorem` command is used then `lipsum.ltd.tex` file
(from the `lipsum` package) must be installed.
diff --git a/macros/luatex/optex/pkg/emoji.opm b/macros/luatex/optex/pkg/emoji.opm
new file mode 100644
index 0000000000..e14579135f
--- /dev/null
+++ b/macros/luatex/optex/pkg/emoji.opm
@@ -0,0 +1,55 @@
+% This is the macro package used by OpTeX, see http://petr.olsak.net/optex
+
+% emoji.opm, Petr Olšák <petr@olsak.net>, 2021
+
+% Emoji allows us to use colored emoticons as characters from the font.
+% The \emoji{<name>} command is available, see texdoc emoji (from
+% corresponding LaTeX package).
+
+\_namespace{emoji}
+
+\_codedecl \.emoji {Emotikons from the TwemojiMozilla.ttf font}
+
+ \_doc -----------------------------
+ Font TwemojiMozilla.ttf is loaded. The font feature +colr is needed.
+ The `\emojifont` is implemented using `\_resizethefont` as size-dependent.
+ \_cod -----------------------------
+
+\_initunifonts
+\_font\.tenemoji=[TwemojiMozilla]:+colr
+\_def\.emojifont{\.tenemoji\_resizethefont}
+\_def\.emoji#1{{\.emojifont\_trycs{_emoji_:#1}{\_opwarning{uknown emoji "#1"}}}}
+
+ \_doc -----------------------------
+ The mapping from names or aliases to the codes are declared in the
+ `emoji-table.def` file from the \LaTeX/ package emoji.
+ \_cod -----------------------------
+
+\_bgroup
+ \_def\__emoji_def #1 #2#3#4#5#6{% #1=n, #2=data, #3=name, #4=aliases, #5=descr, #6=versi
+ \_sxdef{_emoji_:#3}{#2}%
+ \_ifx^#4^\_else \_foreach #4, \_do ##1, {\_global\_slet{_emoji_:##1}{_emoji_:#3}}\_fi
+ }
+ \_def\ProvidesExplFile#1#2#3#4{}
+ \_def\__emoji_group#1 #2{}
+ \_def\__emoji_subgroup#1 #2{}
+ \_catcode`\#=12
+ \_input {emoji-table.def}% defining emoji names
+\_egroup
+
+\_nspublic \emoji \emojifont ;
+
+\_endnamespace
+
+\_endcode
+
+\begtt % ----------------------- Testing file ---------------------------
+\load[emoji]
+We can use \emoji{grinning} or directly: {\emojifont 😀} too.
+\bye
+\endtt % ----------------------------------------------------------------
+
+More than 3000 emoticons are available.
+
+If you want black-and-white pictograms, see another font:
+\url{http://petr.olsak.net/optex/optex-tricks.html\#fawesome}
diff --git a/macros/luatex/optex/pkg/vlna.opm b/macros/luatex/optex/pkg/vlna.opm
new file mode 100644
index 0000000000..4db22aa0cc
--- /dev/null
+++ b/macros/luatex/optex/pkg/vlna.opm
@@ -0,0 +1,193 @@
+% This is the macro package used by OpTeX, see http://petr.olsak.net/optex
+
+% vlna.opm, Petr Olšák <petr@olsak.net>, 2021
+
+% Vlna prevents breaks in spaces after single-letter prepositions, after (or
+% before) degrees, and between value and SI units. It enables or disables
+% split hyphens too. All folks are done at the postprocessing phase before TeX splits
+% the typesetting material into the paragraph lines.
+
+% vlna.opm is based on Lua code from the package `luavlna` (by Michal Hoftich
+% and Miro Hrončok). See `texdoc luavlna` or end of this file for more information.
+
+\_namespace{vlna}
+
+\_codedecl \.singlechars {Preventing single-chars prepositions and more <2021-01-08>}
+
+ \_doc -----------------------------
+ We declare new attribute, register callbacks, and define Lua functions that
+ point to Lua functions from `luavlna.lua` package.
+ We need this package installed.
+
+ We need not `require ltluatex` because `luatexbase.callbaks` are defined
+ in the `optex.lua` file and it is part of the OpTeX format.
+ \_cod -----------------------------
+
+\_newattribute \.preventsinglestatus
+
+\_directlua{%
+ luavlna = require "luavlna"
+
+ luatexbase.add_to_callback("pre_linebreak_filter", luavlna.preventsingle,"LuaVlna")
+ luatexbase.add_to_callback("hyphenate", luavlna.split_hyphens, "allow hyphen breaks")
+ luavlna.preventsingleid = \_the\_attributealloc
+
+ set_singlechars = function(lang,chars)
+ if (lang == "") then return nil end
+ local utf_gmatch = unicode.utf8.gmatch
+ local chars = chars or ""
+ local singlechars = {}
+ for char in unicode.utf8.gmatch(chars,"(\_csstring\%a)") do
+ singlechars[char] = true
+ end
+ luavlna.singlechars(lang,singlechars)
+ end
+
+ set_compounds = function(lang, compounds)
+ if (lang == "") then return nil end
+ local c = compounds:explode(",+") % match multiple colons as one
+ local compoundstable = {}
+ for _, compound in pairs(c) do
+ compoundstable[compound] = true
+ end
+ luavlna.initials(lang, compoundstable)
+ end
+
+ set_main_language = function(lang)
+ if (lang == "") then return nil end
+ luavlna.set_main_language(tonumber(lang))
+ end
+
+ enable_split_hyphens = function(lang)
+ if (lang == "") then return nil end
+ luavlna.split_hyphen_langs[tonumber(lang)] = true
+ end
+
+ disable_split_hyphens = function(lang)
+ if (lang == "") then return nil end
+ luavlna.split_hyphen_langs[tonumber(lang)] = nil
+ end
+}
+
+ \_doc -----------------------------
+ We need not `require luavlna-langno` because of the conversion from
+ language name to the `\language` number is done by the macro
+ `\.langtonum``<sequence>={<langname>}` defined here.
+ It does `\def<sequence>{<langnumber>}` or `\def\sequence{}` if <langname>
+ is unknown. The <langname> is case insensitive and these names are
+ declared in the hyphen-lan.opm file, section 2.37.2 in OpTeX documentation.
+ \_cod -----------------------------
+
+\_def\.langtonum#1=#2{\_lowercase{\_edef#1{\_trycs{_ulan:#2}{}}}%
+ \_ifx#1\_empty \_opwarning{vlna: unknown language "#2", ignored}%
+ \_else \_edef#1{\_the\_cs{_#1Patt}}\_fi}
+
+ \_doc -----------------------------
+ `\singlechars``{<langname>}{<prepositions>}` sets <prepositions> for
+ given language.\nl
+ `\compoundinitials``{<langname>}{<comma-separated-list>}` sets
+ compound characters from the list for given language.
+ \_cod -----------------------------
+
+\_def\.singlechars#1#2{\.langtonum\.l={#1}\_directlua{set_singlechars("\.l","#2")}}
+\_def\.compoundinitials#1#2{\.langtonum\.l={#1}\_directlua{set_compounds("\.l","#2")}}
+
+ \_doc -----------------------------
+ `\enablesplithyphens` and `\disablesplithyphens` are dependent on the language.
+ \_cod -----------------------------
+
+\_def\.enablesplithyphens#1{\.langtonum\.l={#1}\_directlua{enable_split_hyphens("\.l")}}
+\_def\.disablesplithyphens#1{\.langtonum\.l={#1}\_directlua{disable_split_hyphens("\.l")}}
+
+ \_doc -----------------------------
+ By default, the language-dependent features of the `luavlna` depend on
+ the current `\language` value, i.e. on the currently selected hyphenation.
+ `\preventsinglelang``{<langname>}` activates the language-dependent
+ features regardless of the current `\language` value.
+ \_cod -----------------------------
+
+\_def\.preventsinglelang#1{\.langtonum\.l={#1}\_directlua{set_main_language("\.l")}}
+
+ \_doc -----------------------------
+ Switching on/off `luavlna` preposition features should be done using attribute
+ setting. It will allow you to switch them on/off in the middle of the paragraph.
+ \_cod -----------------------------
+
+\_def\.preventsingleon{\.preventsinglestatus=2 }
+\_def\.preventsingleoff{\.preventsinglestatus=1 }
+
+ \_doc -----------------------------
+ Switching on/off the other `luavlna` features is implemented only by
+ setting a special `luavlna` variable.
+ \_cod -----------------------------
+
+\_def\.preventsingledebugon{\_directlua{luavlna.debug(true)}}
+\_def\.preventsingledebugoff{\_directlua{luavlna.debug(false)}}
+
+\_def\.nopredegrees{\_directlua{luavlna.no_predegrees = true}}
+\_def\.nosufdegrees{\_directlua{luavlna.no_sufdegrees = true}}
+\_def\.nounits{\_directlua{luavlna.no_unit = true}}
+\_def\.noinitials{\_directlua{luavlna.no_initials = true}}
+
+\_nspublic
+ \singlechars % declare single-letter prepositions per language
+ \compoundinitials % declare compound characters per language
+ \enablesplithyphens % enable split hyphens per language
+ \disablesplithyphens % disable split hyphens per language
+ \preventsinglelang % declare main language independent of current hyphenation
+ \preventsingleon % switch on the prepositions feature (default)
+ \preventsingleoff % switch off the prepositions feature
+ \nopredegrees % switch off pre-degrees feature (default is on)
+ \nosufdegrees % switch off post-degrees feature (default is on)
+ \nounits % switch off SI units feature (default is on)
+ \noinitials % switch off initials feature (default is on)
+ \preventsingledebugon % switch on debug printing (purple squares)
+ \preventsingledebugoff % switch off debug printing (default)
+ ;
+
+\_endnamespace
+
+% Default values:
+\singlechars{Czech}{AIiVvOoUuSsZzKk}
+\singlechars{Slovak}{AIiVvOoUuSsZzKk}
+\compoundinitials{Czech}{Ch,CH} % doesn't work in version v0.1g of luavlna
+\enablesplithyphens{Czech}
+\enablesplithyphens{Slovak}
+% + predegrees, sufdegrees, units, initials (they are independent of language value)
+
+\_endcode
+
+What should be done automatically after `\load[vlna]`:
+
+ Prepositions feature: v lese -> v~lese, (A taky zde) -> (A~taky zde).
+
+ Pre-degrees feature: Mgr. Bown -> Mgr.~Brown.
+
+ Post-degrees feature: John Brown, PhD. -> John Brown,~PhD.
+
+ SI units feature: 42 cm -> 42~cm (with thin space)
+
+ Initials feature: J. Brown -> J.~Brown
+
+ Split hyphens feature: propan-butan -> propan\discretionary{-}{-}{-}butan.
+
+The prepositions and split-hyphens features are language-dependent, the other
+features are language-independent.
+
+A testing file:
+
+\begtt
+\load[vlna]
+\fontfam[LMfonts]
+\cslang
+\preventsingledebugon
+
+Mgr. J. Brown, PhD., zkusí v lese (A taky v závorce) zkontrolovat rozměr 42 m.
+Obejde se bez propan-butanových lahví.
+\bye
+\endtt
+
+Note, that versinon v0.1g 2020-06-02 of the luavlna package is an
+experimental code. It seems that `\compoundinitials` does not work in this
+version and when you use `\hbox{-}` in a paragraph when
+`\enablesplithyphens` then LuaTeX hangs.