aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2021-08-16 17:01:40 +0200
committerRobert Alessi <alessi@robertalessi.net>2021-08-16 17:01:40 +0200
commitbff3c06c3e2f8a20ef31b35d451ce91848be1053 (patch)
tree2a47bef4d447d1cec5f9c36b5cfcaafd8f26f234
parent6b1b9226b3dca386554a38913b3b052e1a4ccf3a (diff)
downloadekdosis-bff3c06c3e2f8a20ef31b35d451ce91848be1053.tar.gz
new global options: keyfloat and fitfloat. adapted makefile
-rw-r--r--Makefile13
-rw-r--r--ekdosis.dtx340
2 files changed, 279 insertions, 74 deletions
diff --git a/Makefile b/Makefile
index ee9d46d..032cf9b 100644
--- a/Makefile
+++ b/Makefile
@@ -88,7 +88,18 @@ local: uninst auctex
88 mkdir -p $(UTREE)/{tex,source,doc}/lualatex/$(NAME) 88 mkdir -p $(UTREE)/{tex,source,doc}/lualatex/$(NAME)
89 cp $(NAME).sty $(UTREE)/tex/lualatex/$(NAME) 89 cp $(NAME).sty $(UTREE)/tex/lualatex/$(NAME)
90 cp $(NAME).lua $(UTREE)/tex/lualatex/$(NAME) 90 cp $(NAME).lua $(UTREE)/tex/lualatex/$(NAME)
91 if [ -e "$(NAME).pdf" ]; then cp $(NAME).pdf $(UTREE)/doc/lualatex/$(NAME); fi 91 if [ -e "$(NAME).pdf" ]; then cp $(NAME).pdf $(UTREE)/doc/lualatex/$(NAME) &&\
92 cp -r $(SAMPLES)/ $(UTREE)/doc/lualatex/$(NAME); fi
93
94install: all
95 sudo mkdir -p $(LOCAL)/{tex,source,doc}/latex/$(NAME)
96 sudo cp $(NAME).dtx $(LOCAL)/source/latex/$(NAME)
97 sudo cp $(NAME).sty $(LOCAL)/tex/latex/$(NAME)
98 sudo cp $(NAME).pdf $(LOCAL)/doc/latex/$(NAME)
99 cp -r $(SAMPLES)/ $(LOCAL)/doc/latex/$(NAME)
100
101uninstall:
102 rm -rf $(LOCAL)/{tex,source,doc}/latex/$(NAME)
92 103
93zip: all 104zip: all
94 ln -sf . $(NAME) 105 ln -sf . $(NAME)
diff --git a/ekdosis.dtx b/ekdosis.dtx
index 716870c..7cfb10e 100644
--- a/ekdosis.dtx
+++ b/ekdosis.dtx
@@ -61,7 +61,7 @@ along with this program. If not, see
61%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] 61%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
62%<package>\ProvidesPackage{ekdosis} 62%<package>\ProvidesPackage{ekdosis}
63%<*package> 63%<*package>
64 [2021/06/28 v1.3-dev Typesetting TEI xml-compliant critical editions] 64 [2021/08/16 v1.3-dev Typesetting TEI xml-compliant critical editions]
65%</package> 65%</package>
66%<*driver> 66%<*driver>
67\begin{filecontents}[noheader,overwrite]{bibdata.xml} 67\begin{filecontents}[noheader,overwrite]{bibdata.xml}
@@ -166,7 +166,7 @@ along with this program. If not, see
166 <monogr> 166 <monogr>
167 <title level="m">Works of W. Shakespeare</title> 167 <title level="m">Works of W. Shakespeare</title>
168 <editor> 168 <editor>
169 <forename>H.N.</forename> 169 <forename>H. N.</forename>
170 <surname>Hudson</surname> 170 <surname>Hudson</surname>
171 </editor> 171 </editor>
172 <imprint> 172 <imprint>
@@ -180,7 +180,7 @@ along with this program. If not, see
180 <monogr> 180 <monogr>
181 <title level="m">Shakespeare's Complete Sonnets</title> 181 <title level="m">Shakespeare's Complete Sonnets</title>
182 <editor> 182 <editor>
183 <forename>C.M.</forename> 183 <forename>C. M.</forename>
184 <surname>Walsh</surname> 184 <surname>Walsh</surname>
185 </editor> 185 </editor>
186 <imprint> 186 <imprint>
@@ -246,7 +246,7 @@ along with this program. If not, see
246 author = {{Homer}}, 246 author = {{Homer}},
247 title = {The Odyssey}, 247 title = {The Odyssey},
248 date = 1919, 248 date = 1919,
249 editor = {Murray, A.T\adddot}, 249 editor = {Murray, A. T.},
250 volumes = 2, 250 volumes = 2,
251 publisher = {Harvard University Press -- William Heinemann}, 251 publisher = {Harvard University Press -- William Heinemann},
252 location = {Cambridge, MA. -- London} 252 location = {Cambridge, MA. -- London}
@@ -266,7 +266,7 @@ along with this program. If not, see
266} 266}
267 267
268@Book{ReynoldsWilson1991, 268@Book{ReynoldsWilson1991,
269 author = {Reynolds, L. D. and Wilson, N. G}, 269 author = {Reynolds, L. D. and Wilson, N. G.},
270 title = {Scribes and Scholars}, 270 title = {Scribes and Scholars},
271 year = {1991}, 271 year = {1991},
272 subtitle = {A Guide to the Translation of Greek and Latin 272 subtitle = {A Guide to the Translation of Greek and Latin
@@ -311,6 +311,15 @@ along with this program. If not, see
311 url = {http://www.teibyexample.org} 311 url = {http://www.teibyexample.org}
312} 312}
313 313
314@Software{babel,
315 title = {The Babel package},
316 titleaddon = {Multilingual support for Plain TeX or LaTeX},
317 author = {Bezos López, Javier and Braams, Johannes L.},
318 url = {http://www.ctan.org/pkg/babel},
319 date = {2020-07-13},
320 version = {3.47}
321}
322
314@Software{extdash, 323@Software{extdash,
315 title = {The Extdash package}, 324 title = {The Extdash package},
316 titleaddon = {A range of dash commands for compound words}, 325 titleaddon = {A range of dash commands for compound words},
@@ -329,6 +338,16 @@ along with this program. If not, see
329 version = {1.0} 338 version = {1.0}
330} 339}
331 340
341@Software{keyfloat,
342 title = {The Keyfloat package},
343 subtitle = {Provides a key/value interface for generating
344 floats},
345 author = {Dunn, Brian},
346 url = {https://ctan.org/pkg/keyfloat},
347 date = {2021-06-29},
348 version = {2.06},
349}
350
332@Software{lineno, 351@Software{lineno,
333 title = {The Lineno package}, 352 title = {The Lineno package},
334 titleaddon = {Line numbers on paragraphs}, 353 titleaddon = {Line numbers on paragraphs},
@@ -365,13 +384,14 @@ along with this program. If not, see
365 version = {1.49} 384 version = {1.49}
366} 385}
367 386
368@Software{babel, 387@Software{tcolorbox,
369 title = {The Babel package}, 388 title = {The Tcolorbox package},
370 titleaddon = {Multilingual support for Plain TeX or LaTeX}, 389 subtitle = {Coloured boxes, for LaTeX examples and theorems,
371 author = {Bezos López, Javier and Braams, Johannes L.}, 390 etc},
372 url = {http://www.ctan.org/pkg/babel}, 391 author = {Sturm, Thomas F.},
373 date = {2020-07-13}, 392 url = {https://ctan.org/pkg/tcolorbox},
374 version = {3.47} 393 date = {2021-06-14},
394 version = {4.51},
375} 395}
376 396
377@Software{titleps, 397@Software{titleps,
@@ -549,6 +569,7 @@ along with this program. If not, see
549\newfontfamily{\junicode}{Junicode}[ 569\newfontfamily{\junicode}{Junicode}[
550 Ligatures=TeX, 570 Ligatures=TeX,
551 RawFeature={+hist}] 571 RawFeature={+hist}]
572\newfontfamily\missaali{Missaali Regular}
552\babeltags{ancientgreek = greek} 573\babeltags{ancientgreek = greek}
553\def\sg#1{\textancientgreek{#1}} 574\def\sg#1{\textancientgreek{#1}}
554\usepackage[Old Standard]{mathfont} 575\usepackage[Old Standard]{mathfont}
@@ -578,6 +599,8 @@ along with this program. If not, see
578\usepackage{manfnt} 599\usepackage{manfnt}
579\usepackage{lettrine} 600\usepackage{lettrine}
580\newcommand\danger{\lettrine[loversize=-.5]{\textdbend}{\hskip6pt}} 601\newcommand\danger{\lettrine[loversize=-.5]{\textdbend}{\hskip6pt}}
602\newcommand\mansee{\lettrine[loversize=-.4,
603 lraise=.55]{\mantriangleright}{\hskip6pt}}
581\usepackage{metalogox} 604\usepackage{metalogox}
582\usepackage{hologo} 605\usepackage{hologo}
583\usepackage{xcolor} 606\usepackage{xcolor}
@@ -607,7 +630,11 @@ along with this program. If not, see
607\bibinput{ekdosis} 630\bibinput{ekdosis}
608\usepackage[nospace,american]{varioref} 631\usepackage[nospace,american]{varioref}
609\newcommand\phts{\phantomsection} 632\newcommand\phts{\phantomsection}
633\usepackage{nameref}
634\newcommand\vnref[1]{\vref{#1}, \enquote{\nameref{#1}}}
610\usepackage[style=oxnotes-inote,dashed]{biblatex} 635\usepackage[style=oxnotes-inote,dashed]{biblatex}
636\DefineBibliographyStrings{english}{
637 seenote={cf\adddotspace n\adddotspace}}
611\DeclareSourcemap{ 638\DeclareSourcemap{
612 \maps[datatype=bibtex]{ 639 \maps[datatype=bibtex]{
613 \map{ 640 \map{
@@ -616,6 +643,27 @@ along with this program. If not, see
616 } 643 }
617 } 644 }
618} 645}
646% include seenote in parentheses
647\renewbibmacro*{footcite:note}{%
648 \ifnameundef{labelname}
649 {\printfield{label}}
650 {\printnames{labelname}}%
651 \ifsingletitle
652 {}
653 {\setunit*{\printdelim{nametitledelim}}%
654 \printfield[title]{labeltitle}}%
655 \setunit*{\addspace}%
656 \printtext{%
657 \mkbibparens{%
658 \bibstring{seenote}\addnbspace
659 \ref{cbx@\csuse{cbx@f@\thefield{entrykey}}}%
660 \iftoggle{cbx:pageref}
661 {\ifsamepage{\the\value{instcount}}
662 {\csuse{cbx@f@\thefield{entrykey}}}
663 {}
664 {\addcomma\space\bibstring{page}\addnbspace
665 \pageref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}}
666 {}}}}
619\ifbool{nocolordoc} 667\ifbool{nocolordoc}
620{ 668{
621 \usepackage{academicons} 669 \usepackage{academicons}
@@ -929,8 +977,9 @@ along with this program. If not, see
929% \end{keyfigure} 977% \end{keyfigure}
930% \end{comment} 978% \end{comment}
931% 979%
932% The reader will find here, by way of introduction, a summarized 980% \lettrine{\color{cinnamon}\missaali +T+}{he reader} will find here,
933% version of the first part of an article published in the 981% by way of introduction, a summarized version of the first part of an
982% article published in the
934% \mkbibemph{\citefield{Alessi2020}{journaltitle}} as a contribution 983% \mkbibemph{\citefield{Alessi2020}{journaltitle}} as a contribution
935% to a Digital Humanities workshop held at Stanford University 984% to a Digital Humanities workshop held at Stanford University
936% (\printdate{2019-04-15}).\footcite{Alessi2020} 985% (\printdate{2019-04-15}).\footcite{Alessi2020}
@@ -1137,17 +1186,66 @@ along with this program. If not, see
1137% follows. 1186% follows.
1138% 1187%
1139% \danger The reader is invited to refer to the relevant sections of 1188% \danger The reader is invited to refer to the relevant sections of
1140% this documentation for more information on how to use them. 1189% this documentation for more information on how to use these options.
1141% 1190%
1142% \DescribeOption{layout}\phts\label{ref:layout-opt} 1191% \DescribeOption{layout}\phts\label{ref:layout-opt}
1143% |layout|$=$\verb+float|footins+\hfill\tcboxverb{Default: float}\\ 1192% |layout|$=$\verb+float|footins|keyfloat|fitapp+
1144% By default, layers of critical notes are inserted as a floating 1193% \hfill\tcboxverb{Default: float}
1145% environment to be printed at the bottom of pages. |layout=footins| 1194% \begin{enumerate}
1146% can be set to insert critical notes in the default footnote block 1195% \item |layout=float| By default, layers of critical notes are
1147% which can be considered to be a special kind of float that is 1196% inserted as floating environments to be printed at the bottom of
1148% printed at the bottom of pages. In this case, the apparatus criticus 1197% pages.
1149% will be inserted between regular numbered footnotes, but will carry 1198% \item |layout=footins| This can be set to insert critical notes in
1150% no footnote mark of its own. 1199% the default footnote block which can be considered to be a special
1200% kind of float that is printed at the bottom of pages. In this
1201% case, the apparatus criticus will be inserted between regular
1202% numbered footnotes, but will carry no footnote mark of its own.
1203% \item \label{ref:keyfloat-opt}\newfeature[v1.3] |layout=keyfloat|
1204% does approximately the
1205% same as the default option |layout=float| but uses the
1206% \pkg{keyfloat} package\footcite{keyfloat} to generate the floating
1207% environments to be used as containers for critical footnotes. This
1208% way, the keys and values provided by this
1209% package\footcite[See][sect. 2.3, \ppno~13--16]{keyfloat} may be
1210% used to achieve such effects as append additional, informative
1211% text below the apparatus, draw a line around the apparatus block
1212% or change its width.\footnote{See below, \vpageref{ref:keyparopts}
1213% for more information.}
1214% \item \label{ref:fitapp-opt}\newfeature[v1.3] |layout=fitapp| As
1215% described below in \vnref{sec:oscillating-problem}, \pkg{ekdosis}
1216% may oscillate indefinitely between different sets of page
1217% decisions when one or more apparatus entries attached to the last
1218% lines of the edition text on a given page do not fit in the
1219% apparatus block. The reader will find in this section of the
1220% documentation a detailed account of several ways to circumvent
1221% this issue. Alternatively, or rather conjointly with those ways,
1222% |layout=fitapp| can be used to instruct \pkg{ekdosis} to scale
1223% down the characters of the apparatus block so that the contentious
1224% entries can fit. This mechanism uses the \enquote{fitting} library
1225% provided by the \pkg{tcolorbox} package.\footcite[sect.~22,
1226% \ppno~\pnfmt{438--449}]{tcolorbox} When this option is set, the
1227% apparatus criticus grows normally until a predefined height is
1228% reached. This height is set to |0.5\textheight| by
1229% default.\footnote{Of course, this height can be modified. See
1230% below \vpageref{ref:appheight} for details.} From this point on,
1231% the apparatus block ceases to grow; rather, the size of the
1232% characters is reduced to allow for additional entries. As a
1233% consequence of this rationale, the total number of entries on a
1234% given page must not be too high. It is therefore advisable to use
1235% |layout=fitapp| conjointly with |maxentries| as described below
1236% \vpageref{ref:maxentries} and in \vref{sec:oscillating-problem}. %
1237% \danger If used appropriately, this mechanism gives excellent
1238% typographical results, notably with complex edition texts of which
1239% the entries in the associated apparatus can be quite abundant in
1240% number. It may even put an end to the
1241% \enquote{\hyperref[sec:oscillating-problem]{oscillating problem}}
1242% in most of the cases. However, as suitable it may be for high
1243% quality typeset texts and final, camera-ready copies, its benefit
1244% comes at the expense of slowing down the compilation process. Yet
1245% looser algorithms can be selected when speed must prevail over
1246% quality for intermediate or draft copies.\footnote{See below
1247% \vpageref{ref:fitalgorithm} for more information.}
1248% \end{enumerate}
1151% 1249%
1152% \DescribeOption{divs}\phts\label{ref:divs-opt} 1250% \DescribeOption{divs}\phts\label{ref:divs-opt}
1153% |divs|$=$\verb+ekdosis|latex+\hfill\tcboxverb{Default: ekdosis}\\ 1251% |divs|$=$\verb+ekdosis|latex+\hfill\tcboxverb{Default: ekdosis}\\
@@ -3214,18 +3312,56 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+
3214% \DescribeOption{initialrule} |initialrule|$=$\meta{command} 3312% \DescribeOption{initialrule} |initialrule|$=$\meta{command}
3215% \phts\label{ref:initialrule}\hfill\bgroup\footnotesize 3313% \phts\label{ref:initialrule}\hfill\bgroup\footnotesize
3216% \tcboxverb{Default: \rule{0.4\columnwidth}{0.4pt} (initially not set)}% 3314% \tcboxverb{Default: \rule{0.4\columnwidth}{0.4pt} (initially not set)}%
3217% \egroup 3315% \egroup \newfeature[v1.2] |initialrule| draws a separating rule
3218% \newfeature[v1.2] |initialrule| draws a separating rule between the 3316% between the edition text and all subsequent layers of critical
3219% edition text and all subsequent layers of critical notes. Of course, 3317% notes. Of course, this option only makes sense when multiple-layer
3220% this option only makes sense when multiple-layer apparatus criticus 3318% apparatus criticus are set. Therefore, it has no effect on
3221% are set. Therefore, it has no effect on single-layer apparatus 3319% single-layer apparatus
3222% criticus.\\ 3320% criticus.\\
3223% \DescribeOption{noinitialrule}\hfill\tcboxverb{Default: not set}\\ 3321% \DescribeOption{noinitialrule}\hfill\tcboxverb{Default: not set}\\
3224% This is a no-value option. It removes any previously set 3322% This is a no-value option. It removes any previously set
3225% |initialrule|. 3323% |initialrule|.
3226% 3324%
3227% An example of the way these hooks may be used is provided below in 3325% An example of the way these hooks may be used is provided below in
3228% \vref{lst:shak-sonnet1}. 3326% \vref{lst:shak-sonnet1}.
3327%
3328% \noindent\textbf{Option Specific to the |layout=keyfloat| Global
3329% Setting}\footnote{See above \vref{ref:keyfloat-opt}.}\\
3330% \DescribeOption{keyparopts}%
3331% \phts\label{ref:keyparopts}|keyparopts|$=$\meta{csv options}
3332% \hfill\tcboxverb{Default: empty}\\
3333% \newfeature[v1.3] The comma-separated options that can be used are
3334% those described in the documentation of the \pkg{keyfloat}
3335% package.\footcite[sect.~2.3, \ppno~\pnfmt{13--15}]{keyfloat} As an
3336% example, |keyparopts={ft, tr={made with ekdosis},| %
3337% \allowbreak|lw=1.2}| will draw a tight frame around the apparatus
3338% block, have the words \enquote{made with \pkg{ekdosis}} printed
3339% below this block on the
3340% right and set its width to |1.2\linewidth|.\\
3341% \textbf{Options Specific to the |layout=fitapp| Global
3342% Setting}\footnote{See above \vref{ref:fitapp-opt}.}\\
3343% \DescribeOption{appheight}%
3344% \phts\label{ref:appheight}|appheight|$=$\meta{dimension}
3345% \hfill\tcboxverb{Default: 0.5\textheight}\\
3346% \newfeature[v1.3] This option is used to change the maximum height
3347% up to which the apparatus block is allowed to grow before the size
3348% of the characters is reduced to allow for more entries. The value
3349% must be a dimension, namely a number followed by a length unit, such
3350% as |0.65\textheight|, |18cm| or |6in|.\\
3351% \DescribeOption{fitalgorithm}%
3352% \phts\label{ref:fitalgorithm}
3353% \unskip|fitalgorithm|$=$\verb+fontsize|hybrid|areasize|squeeze+
3354% \hfill\tcboxverb{Default: fontsize}\\
3355% \newfeature[v1.3] The four algorithms that can be used to have the
3356% entries inserted in the apparatus criticus fit to the selected
3357% height are presented here from the tightest to the loosest, that is,
3358% the slowest to the fastest.\footnote{See \cite[446--449]{tcolorbox}
3359% for details and illustrative examples.} While it is advisable to
3360% limit the use of |fontsize| to high quality typesetting for
3361% camera-ready copies, |areasize| offers a satisfactory settlement
3362% when speed must be given an advantage for intermediate or draft
3363% copies. |squeeze| should be avoided as it gives results that are
3364% offensive to the sight and unacceptable to any reader.
3229% 3365%
3230% \subsection{Single-Layer Apparatus Criticus} 3366% \subsection{Single-Layer Apparatus Criticus}
3231% \label{sec:single-layer-app} 3367% \label{sec:single-layer-app}
@@ -3319,14 +3455,13 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+
3319% \hfill\tcboxverb{Default: empty}\\ 3455% \hfill\tcboxverb{Default: empty}\\
3320% The characters to be appended at the end of the apparatus 3456% The characters to be appended at the end of the apparatus
3321% block.\footnote{See also n.~\vref{fn:rm-dots}.}\\ 3457% block.\footnote{See also n.~\vref{fn:rm-dots}.}\\
3322% \DescribeOption{rule} |rule|$=$\meta{command}\verb+|+|none| 3458% \DescribeOption{rule} |rule|$=$\meta{command}
3323% \hfill\tcboxverb{Default: \rule{0.4\columnwidth}{0.4pt}}\\ 3459% \hfill\tcboxverb{Default: \rule{0.4\columnwidth}{0.4pt}}\\
3324% As described above, |rule| is used to draw the separating line 3460% As described above, |rule| is used to draw the separating line
3325% between the edition text and the apparatus criticus. |rule=none| can 3461% between the edition text and the apparatus criticus.\\
3326% also be used to remove the line.\\
3327% \DescribeOption{norule}\hfill\tcboxverb{Default: not set}\\ 3462% \DescribeOption{norule}\hfill\tcboxverb{Default: not set}\\
3328% |norule| does not accept any value and has the same effect as 3463% |norule| does not accept any value and is used to remove the
3329% |rule=none|.\phts\label{ref:apparatus-settings-e}\\ 3464% line.\phts\label{ref:apparatus-settings-e}\\
3330% \DescribeOption{lang} |lang|$=$\meta{languagename} 3465% \DescribeOption{lang} |lang|$=$\meta{languagename}
3331% \newfeature[v1.2]\phts\label{ref:app-lang-opt} 3466% \newfeature[v1.2]\phts\label{ref:app-lang-opt}
3332% \hfill\tcboxverb{Default: not set}\\ 3467% \hfill\tcboxverb{Default: not set}\\
@@ -5313,7 +5448,7 @@ subtype="arabtex">'inna 'abI kAna mina
5313% on odd pages the title of the edited text, then the current 5448% on odd pages the title of the edited text, then the current
5314% division, then the page number, like so:--- 5449% division, then the page number, like so:---
5315% 5450%
5316% \needspace{4\baselineskip} 5451% \needspace{5\baselineskip}
5317% \begin{xltabular}{1.0\linewidth}{|XcX|} 5452% \begin{xltabular}{1.0\linewidth}{|XcX|}
5318% \multicolumn{3}{l}{Even pages:}\\ 5453% \multicolumn{3}{l}{Even pages:}\\
5319% \hline 5454% \hline
@@ -5339,9 +5474,9 @@ subtype="arabtex">'inna 'abI kAna mina
5339%</example> 5474%</example>
5340% \fi 5475% \fi
5341% 5476%
5342% The following example illustrates how the corresponding headers and 5477% The following example finally illustrates how the corresponding
5343% footers could be prepared in a straightforward way with the help of 5478% headers and footers can be prepared in a straightforward way with
5344% the \pkg{titleps} package:\footcite{titleps}--- 5479% the help of the \pkg{titleps} package:\footcite{titleps}---
5345% 5480%
5346% \iffalse 5481% \iffalse
5347%<*example> 5482%<*example>
@@ -5533,6 +5668,17 @@ subtype="arabtex">'inna 'abI kAna mina
5533% many of them and \pkg{ekdosis} still oscillates between different 5668% many of them and \pkg{ekdosis} still oscillates between different
5534% sets of page decisions. 5669% sets of page decisions.
5535% 5670%
5671% \paragraph{The \texttt{fitapp} Global Option}
5672% \newfeature[v1.3] The rationale of this option is discussed above
5673% (see \vref{ref:fitapp-opt}). As this mechanism has the characters of
5674% the apparatus block scaled down to allow for more entries once a
5675% predefined height has been reached, \pkg{ekdosis} should settle down
5676% in most of the contentious cases.\footnote{That is, cases that arise
5677% \emph{after} the predefined height has been reached.} However, it is
5678% advisable to use |fitapp| conjointly with |maxentries| to prevent
5679% the number of allowed entries from being too high, which would
5680% result in the characters being too small or even illegible.
5681%
5536% \subsection{Variae Quaestiones} 5682% \subsection{Variae Quaestiones}
5537% \label{sec:variae-quaestiones} 5683% \label{sec:variae-quaestiones}
5538% This section is about issues that are not strictly speaking part of 5684% This section is about issues that are not strictly speaking part of
@@ -6581,7 +6727,7 @@ Sample text with a \textcolor{red}{word} in red.
6581% \fi 6727% \fi
6582\begin{minted}[linenos=false]{bibtex} 6728\begin{minted}[linenos=false]{bibtex}
6583@Book{ReynoldsWilson1991, 6729@Book{ReynoldsWilson1991,
6584 author = {Reynolds, L. D. and Wilson, N. G}, 6730 author = {Reynolds, L. D. and Wilson, N. G.},
6585 title = {Scribes and Scholars}, 6731 title = {Scribes and Scholars},
6586 year = {1991}, 6732 year = {1991},
6587 subtitle = {A Guide to the Translation of Greek and Latin 6733 subtitle = {A Guide to the Translation of Greek and Latin
@@ -7405,6 +7551,8 @@ Sample text with a \textcolor{red}{word} in red.
7405\RequirePackage{expkv-def} 7551\RequirePackage{expkv-def}
7406\newif\if@pkg@float 7552\newif\if@pkg@float
7407\newif\if@pkg@footins 7553\newif\if@pkg@footins
7554\newif\if@pkg@keyfloat
7555\newif\if@pkg@fitfloat
7408\newif\if@pkg@ekddivs 7556\newif\if@pkg@ekddivs
7409\newif\if@parnotesroman 7557\newif\if@parnotesroman
7410\newif\if@pkg@parnotes 7558\newif\if@pkg@parnotes
@@ -7412,7 +7560,9 @@ Sample text with a \textcolor{red}{word} in red.
7412\newif\if@pkg@poetry@verse 7560\newif\if@pkg@poetry@verse
7413\ekvdefinekeys{ekdosis}{ 7561\ekvdefinekeys{ekdosis}{
7414 choice layout = {float = {\@pkg@floattrue}, 7562 choice layout = {float = {\@pkg@floattrue},
7415 footins = {\@pkg@floatfalse\@pkg@footinstrue}}, 7563 footins = {\@pkg@floatfalse\@pkg@footinstrue},
7564 keyfloat = {\@pkg@floatfalse\@pkg@keyfloattrue},
7565 fitfloat = {\@pkg@floatfalse\@pkg@fitfloattrue}},
7416 initial layout = float, 7566 initial layout = float,
7417 unknown-choice layout = \PackageError{ekdosis}{unknown 7567 unknown-choice layout = \PackageError{ekdosis}{unknown
7418 layout=#1}{`layout' must be either `float' or `footins'.}, 7568 layout=#1}{`layout' must be either `float' or `footins'.},
@@ -7462,6 +7612,18 @@ Sample text with a \textcolor{red}{word} in red.
7462\RequirePackage{lineno} 7612\RequirePackage{lineno}
7463\if@pkg@float 7613\if@pkg@float
7464 \RequirePackage{trivfloat} 7614 \RequirePackage{trivfloat}
7615 \trivfloat{ekdapparatus}
7616\fi
7617\if@pkg@keyfloat
7618 \RequirePackage{keyfloat}
7619 \def\ekd@keyparopts#1{%
7620 \def\ekd@insert@keyparapp{%
7621 \keyparbox[!b]{#1}{\ekd@insert@apparatus}}}
7622 \ekd@keyparopts{}
7623\fi
7624\if@pkg@fitfloat
7625 \RequirePackage{tcolorbox}
7626 \tcbuselibrary{fitting,skins}
7465\fi 7627\fi
7466\RequirePackage{refcount} 7628\RequirePackage{refcount}
7467\RequirePackage{zref-user} 7629\RequirePackage{zref-user}
@@ -7487,7 +7649,7 @@ Sample text with a \textcolor{red}{word} in red.
7487% \end{macrocode} 7649% \end{macrocode}
7488% \paragraph{Setup} 7650% \paragraph{Setup}
7489% \begin{macro}{\ekdsetup} 7651% \begin{macro}{\ekdsetup}
7490% \changes{v1.3}{2021/06/28}{new command for global options} 7652% \changes{v1.3}{2021/08/16}{new command for global options}
7491% \cs{ekdsetup} is used to specify options that affect the general 7653% \cs{ekdsetup} is used to specify options that affect the general
7492% behavior of \pkg{ekdosis}. It is a preamble-only command. 7654% behavior of \pkg{ekdosis}. It is a preamble-only command.
7493% \begin{macrocode} 7655% \begin{macrocode}
@@ -7510,6 +7672,8 @@ Sample text with a \textcolor{red}{word} in red.
7510% \texttt{lemmastyle}} 7672% \texttt{lemmastyle}}
7511% \changes{v1.2}{2021/04/02}{general hooks: new option 7673% \changes{v1.2}{2021/04/02}{general hooks: new option
7512% \texttt{readingstyle}} 7674% \texttt{readingstyle}}
7675% \changes{v1.3}{2021/08/16}{general hooks: new options
7676% \texttt{keyparopts} and \texttt{appheight}}
7513% \begin{macrocode} 7677% \begin{macrocode}
7514\ekvdefinekeys{ekd@hooks}{ 7678\ekvdefinekeys{ekd@hooks}{
7515 store appfontsize = \ekd@appfontsize, 7679 store appfontsize = \ekd@appfontsize,
@@ -7517,6 +7681,17 @@ Sample text with a \textcolor{red}{word} in red.
7517 store postrefnum = \ekd@postrefnum, 7681 store postrefnum = \ekd@postrefnum,
7518 store lemmastyle = \ekd@lemmastyle, 7682 store lemmastyle = \ekd@lemmastyle,
7519 store readingstyle = \ekd@readingstyle, 7683 store readingstyle = \ekd@readingstyle,
7684 code keyparopts = \if@pkg@keyfloat\ekd@keyparopts{#1}\fi,
7685 dimen appheight = \ekd@app@height,
7686 initial appheight = .5\textheight,
7687 choice fitalgorithm = {fontsize = \def\ekd@fit@algorithm{fontsize},
7688 hybrid = \def\ekd@fit@algorithm{hybrid},
7689 areasize = \def\ekd@fit@algorithm{areasize},
7690 squeeze = \def\ekd@fit@algorithm{squeeze}},
7691 initial fitalgorithm = fontsize,
7692 unknown-choice fitalgorithm = \PackageError{ekdosis}{unknown
7693 fitalgorithm=#1}{`fitalgorithm' must be either `fontsize',
7694 `hybrid', `areasize' or `squeeze'.},
7520 code initialrule = \def\ekd@initial@rule{#1\NLS}, 7695 code initialrule = \def\ekd@initial@rule{#1\NLS},
7521 default initialrule = \rule{0.4\columnwidth}{0.4pt}, 7696 default initialrule = \rule{0.4\columnwidth}{0.4pt},
7522 noval noinitialrule = \undef\ekd@initial@rule, 7697 noval noinitialrule = \undef\ekd@initial@rule,
@@ -7718,7 +7893,7 @@ Sample text with a \textcolor{red}{word} in red.
7718% \end{macrocode} 7893% \end{macrocode}
7719% \end{macro} 7894% \end{macro}
7720% \begin{macro}{\teidirect} 7895% \begin{macro}{\teidirect}
7721% \changes{v1.3}{2021/06/28}{direct insertion of elements in the 7896% \changes{v1.3}{2021/08/16}{direct insertion of elements in the
7722% \texttt{TEI xml} file} 7897% \texttt{TEI xml} file}
7723% \cs{teidirect}\oarg{xml attributes}\marg{xml element}\marg{code} 7898% \cs{teidirect}\oarg{xml attributes}\marg{xml element}\marg{code}
7724% does nothing in \LaTeX. Its only use is to insert elements in the 7899% does nothing in \LaTeX. Its only use is to insert elements in the
@@ -8085,7 +8260,7 @@ Sample text with a \textcolor{red}{word} in red.
8085% \end{macrocode} 8260% \end{macrocode}
8086% \end{macro} 8261% \end{macro}
8087% \begin{macro}{\SetApparatusNoteLanguage} 8262% \begin{macro}{\SetApparatusNoteLanguage}
8088% \changes{v1.3}{2021/06/28}{defines an alternate language to be 8263% \changes{v1.3}{2021/08/16}{defines an alternate language to be
8089% applied in note apparatus entries} 8264% applied in note apparatus entries}
8090% \cs{SetApparatusNoteLang}\marg{languagename} can be used when 8265% \cs{SetApparatusNoteLang}\marg{languagename} can be used when
8091% it is needed to apply in entries introduced by the \cs{note} command 8266% it is needed to apply in entries introduced by the \cs{note} command
@@ -8168,10 +8343,36 @@ Sample text with a \textcolor{red}{word} in red.
8168% commands need to know whether they are called from inside the 8343% commands need to know whether they are called from inside the
8169% apparatus criticus, a conditional is first defined. 8344% apparatus criticus, a conditional is first defined.
8170% \begin{macrocode} 8345% \begin{macrocode}
8171\if@pkg@float
8172 \trivfloat{ekdapparatus}
8173\fi
8174\newif\ifekd@inside@app 8346\newif\ifekd@inside@app
8347\if@pkg@fitfloat
8348 \newtcboxfit{\ekdfitapp}{%
8349 blankest,
8350 fit basedim = \f@size pt,
8351 fit fontsize macros,
8352 fit height from=0pt to \ekd@app@height,
8353 fit algorithm = \ekd@fit@algorithm,
8354 float=!b}
8355\fi
8356\long\def\ekd@insert@apparatus{%
8357 \unless\ifekd@mapps
8358 \ifrtl@app\pardir TRT\leavevmode\textdir TRT\else
8359 \pardir TLT\leavevmode\textdir TLT\fi
8360 \fi
8361 \if@pkg@parnotes
8362 \if@parnotesroman
8363 \renewcommand*{\theparnotemark}{\roman{parnotemark}}\fi
8364 \parnoteclear\fi
8365 \ekd@inside@apptrue
8366 \ekd@appfontsize
8367 \ifekd@mapps
8368 \ifdefined\ekd@initial@rule
8369 \ekd@initial@rule
8370 \fi
8371 \fi
8372 \apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi
8373 \ekd@inside@appfalse
8374 \if@pkg@parnotes\parnotes\parnotereset\fi
8375}%
8175\def\add@@apparatus{% 8376\def\add@@apparatus{%
8176 \if@pkg@parnotes\parnotes\else\fi 8377 \if@pkg@parnotes\parnotes\else\fi
8177 \if@pkg@footins 8378 \if@pkg@footins
@@ -8200,26 +8401,15 @@ Sample text with a \textcolor{red}{word} in red.
8200 \fi 8401 \fi
8201 \if@pkg@float 8402 \if@pkg@float
8202 \begin{ekdapparatus}[!b]% 8403 \begin{ekdapparatus}[!b]%
8203 \unless\ifekd@mapps 8404 \ekd@insert@apparatus
8204 \ifrtl@app\pardir TRT\leavevmode\textdir TRT\else
8205 \pardir TLT\leavevmode\textdir TLT\fi
8206 \fi
8207 \if@pkg@parnotes
8208 \if@parnotesroman
8209 \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi
8210 \parnoteclear\else\fi
8211 \ekd@inside@apptrue
8212 \ekd@appfontsize
8213 \ifekd@mapps
8214 \ifdefined\ekd@initial@rule
8215 \ekd@initial@rule
8216 \fi
8217 \fi
8218 \apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi
8219 \ekd@inside@appfalse
8220 \if@pkg@parnotes\parnotes\parnotereset\else\fi
8221 \end{ekdapparatus}% 8405 \end{ekdapparatus}%
8222 \fi 8406 \fi
8407 \if@pkg@keyfloat
8408 \ekd@insert@keyparapp
8409 \fi
8410 \if@pkg@fitfloat
8411 \ekdfitapp{\ekd@insert@apparatus}%
8412 \fi
8223} 8413}
8224% \end{macrocode} 8414% \end{macrocode}
8225% Before inserting any new entry, \cs{add@apparatus} calls 8415% Before inserting any new entry, \cs{add@apparatus} calls
@@ -8373,14 +8563,14 @@ Sample text with a \textcolor{red}{word} in red.
8373 \begingroup 8563 \begingroup
8374 \ekvset{appnote}{#1}% 8564 \ekvset{appnote}{#1}%
8375 \ifekd@isinapp\ekd@appinapptrue\fi 8565 \ifekd@isinapp\ekd@appinapptrue\fi
8376 \ekd@isinapptrue% 8566 \ekd@isinapptrue
8377 \stepcounter{ekd@lab}% 8567 \stepcounter{ekd@lab}%
8378 \zlabel{ekd:\theekd@lab}% 8568 \zlabel{ekd:\theekd@lab}%
8379 \luadirect{ekdosis.storeabspg( 8569 \luadirect{ekdosis.storeabspg(
8380 \luastring{\zref@extract{ekd:\theekd@lab}{abspage}})}% 8570 \luastring{\zref@extract{ekd:\theekd@lab}{abspage}})}%
8381 \ifekd@state\add@apparatus\fi% 8571 \ifekd@state\add@apparatus\fi
8382 \luadirect{tex.sprint(ekdosis.removesp(\luastringN{#2}))}% 8572 \luadirect{tex.sprint(ekdosis.removesp(\luastringN{#2}))}%
8383 \ekd@isinappfalse% 8573 \ekd@isinappfalse
8384 \ekd@appinappfalse 8574 \ekd@appinappfalse
8385 \endgroup} 8575 \endgroup}
8386% \end{macrocode} 8576% \end{macrocode}
@@ -9332,7 +9522,7 @@ Sample text with a \textcolor{red}{word} in red.
9332% \end{macrocode} 9522% \end{macrocode}
9333% \end{macro} 9523% \end{macro}
9334% \begin{macro}{\endmark} 9524% \begin{macro}{\endmark}
9335% \changes{v1.3}{2021/06/28}{prints the last-emitted mark of the 9525% \changes{v1.3}{2021/08/16}{prints the last-emitted mark of the
9336% preceding page} 9526% preceding page}
9337% By default, \cs{ekdmark} described below prints the first mark 9527% By default, \cs{ekdmark} described below prints the first mark
9338% that is emitted on a given page and ignores the mark corresponding 9528% that is emitted on a given page and ignores the mark corresponding
@@ -9354,7 +9544,7 @@ Sample text with a \textcolor{red}{word} in red.
9354% \end{macrocode} 9544% \end{macrocode}
9355% \end{macro} 9545% \end{macro}
9356% \begin{macro}{\edkmark} 9546% \begin{macro}{\edkmark}
9357% \changes{v1.3}{2021/06/28}{prints marks in headers or footers} 9547% \changes{v1.3}{2021/08/16}{prints marks in headers or footers}
9358% \cs{ekdmark} is an argument-less command called in commands used to 9548% \cs{ekdmark} is an argument-less command called in commands used to
9359% make headers and footers where the marks stored by means of the 9549% make headers and footers where the marks stored by means of the
9360% |mark| optional argument of \cs{ekddiv} are to be printed. 9550% |mark| optional argument of \cs{ekddiv} are to be printed.
@@ -9365,7 +9555,7 @@ Sample text with a \textcolor{red}{word} in red.
9365% \end{macrocode} 9555% \end{macrocode}
9366% \end{macro} 9556% \end{macro}
9367% \begin{macro}{\ekdprintmark} 9557% \begin{macro}{\ekdprintmark}
9368% \changes{v1.3}{2021/06/28}{prints or removes the marks in headers 9558% \changes{v1.3}{2021/08/16}{prints or removes the marks in headers
9369% and footers} \cs{ekdprintmark}\marg{selector}\marg{signpost} The 9559% and footers} \cs{ekdprintmark}\marg{selector}\marg{signpost} The
9370% signposts printed in headers and footers must be 9560% signposts printed in headers and footers must be
9371% passed as second argument of \cs{ekdprintmark} so that \pkg{ekdosis} 9561% passed as second argument of \cs{ekdprintmark} so that \pkg{ekdosis}
@@ -9403,7 +9593,7 @@ Sample text with a \textcolor{red}{word} in red.
9403% \end{macrocode} 9593% \end{macrocode}
9404% \end{macro} 9594% \end{macro}
9405% \begin{macro}{\ekdnofhmarks} 9595% \begin{macro}{\ekdnofhmarks}
9406% \changes{v1.3}{2021/06/28}{removes headers and footers on specific 9596% \changes{v1.3}{2021/08/16}{removes headers and footers on specific
9407% pages} Once the signposts are marked with \cs{ekdprintmark}, 9597% pages} Once the signposts are marked with \cs{ekdprintmark},
9408% \cs{ekdnohfmarks} has the same effect as the \LaTeX\ standard 9598% \cs{ekdnohfmarks} has the same effect as the \LaTeX\ standard
9409% command \cs{thispagestyle}|{empty}|. 9599% command \cs{thispagestyle}|{empty}|.
@@ -9414,7 +9604,7 @@ Sample text with a \textcolor{red}{word} in red.
9414% \end{macrocode} 9604% \end{macrocode}
9415% \end{macro} 9605% \end{macro}
9416% \begin{macro}{\ekdresethfmarks} 9606% \begin{macro}{\ekdresethfmarks}
9417% \changes{v1.3}{2021/06/28}{marks headers and footers as printable} 9607% \changes{v1.3}{2021/08/16}{marks headers and footers as printable}
9418% \cs{ekdresethfmarks} can be used in rare cases when it is needed to 9608% \cs{ekdresethfmarks} can be used in rare cases when it is needed to
9419% reset headers and footers to their original, viz.\ printable state. 9609% reset headers and footers to their original, viz.\ printable state.
9420% \begin{macrocode} 9610% \begin{macrocode}
@@ -10063,6 +10253,10 @@ local cmdtotags = {
10063 {a="marginpar", b="note", c=" place=\"margin\""}, 10253 {a="marginpar", b="note", c=" place=\"margin\""},
10064 {a="footnote", b="note", c=" place=\"bottom\""}, 10254 {a="footnote", b="note", c=" place=\"bottom\""},
10065 {a="enquote", b="quote", c=""}, 10255 {a="enquote", b="quote", c=""},
10256 {a="prname *", b="span",
10257 c=" xml:lang=\"ar-Latn\" type=\"transliterated\""},
10258 {a="prname", b="span",
10259 c=" xml:lang=\"ar-Latn\" type=\"transliterated\" subtype=\"arabtex\""},
10066 {a="txtrans", b="s", c=" xml:lang=\"ar-Latn\" type=\"transliterated\""}, 10260 {a="txtrans", b="s", c=" xml:lang=\"ar-Latn\" type=\"transliterated\""},
10067 {a="textbf", b="hi", c=" rend=\"bold\""}, 10261 {a="textbf", b="hi", c=" rend=\"bold\""},
10068 {a="textit", b="hi", c=" rend=\"italic\""}, 10262 {a="textit", b="hi", c=" rend=\"italic\""},
@@ -10352,7 +10546,7 @@ end
10352local function relocate_notes(str) 10546local function relocate_notes(str)
10353 str = gsub(str, inlem, function(arg) 10547 str = gsub(str, inlem, function(arg)
10354 local notes = {} 10548 local notes = {}
10355 for i in string.gmatch(arg, "%<note.->.-%<%/note%>") 10549 for i in string.gmatch(arg, "%<note.-%>.-%<%/note%>")
10356 do 10550 do
10357 table.insert(notes, i) 10551 table.insert(notes, i)
10358 end 10552 end