From 01b4f2311a844a702ca390deb66ee1100e64aed9 Mon Sep 17 00:00:00 2001
From: Robert Alessi
Date: Fri, 12 Mar 2021 18:53:17 +0100
Subject: 'verse option' -> 'poetry=verse'. new hook 'initialrule'. latex-dev
needed subtle insertions of \leavevmode. improved ekdosis.appout()
---
ekdosis.dtx | 165 +++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 114 insertions(+), 51 deletions(-)
diff --git a/ekdosis.dtx b/ekdosis.dtx
index 3e8181a..9e1ead5 100644
--- a/ekdosis.dtx
+++ b/ekdosis.dtx
@@ -962,8 +962,8 @@ along with this program. If not, see
% \section{The Basics of \pkg{ekdosis}}
% \label{sec:ekdosis-basics}
%
-%\subsection{Loading the Package\---General Options}
-%\label{sec:load-general-options}
+% \subsection{Loading the Package\---General Options}
+% \label{sec:load-general-options}
%
% \pkg{ekdosis} is loaded in the preamble like so:---
% \iffalse
@@ -1010,14 +1010,13 @@ along with this program. If not, see
% \danger It must be noted that the two styles are mutually exclusive.
% \vskip\baselineskip
%
-% \DescribeOption{verse}\label{ref:verse-opt}
-% |verse|$=$\verb+true|false+
-% \hfill\tcboxverb{Default: false}\\
-% This named argument does not need a value as it defaults to |true|
-% if it is used. |verse| instructs \pkg{ekdosis} to load and use the
-% facilites supplied by the \pkg{verse} package for typesetting lines
-% of poetry. The \env{ekdverse} environment must then be used instead
-% of the \env{verse} environment that is provided by the \pkg{verse}
+% \DescribeOption{poetry}\label{ref:poetry-opt}
+% |poetry|$=$\verb+verse+
+% \hfill\tcboxverb{Default: not set}\\
+% |poetry=verse| instructs \pkg{ekdosis} to load and use the facilites
+% supplied by the \pkg{verse} package for typesetting lines of
+% poetry. The \env{ekdverse} environment must then be used instead of
+% the \env{verse} environment that is provided by the \pkg{verse}
% package as described below in \vref{sec:poetry}.
%
% \DescribeOption{parnotes}\label{ref:parnotes-opt}
@@ -2948,7 +2947,7 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+
% reference to line numbers. By default, it is |~|, namely an
% unbreakable space. As an example, |postrefnum=\hskip 0.5em| will
% insert a \unit[0.5]{em} space between the numerals and the beginning
-% of all subsequent notes.
+% of all subsequent notes.\\
% \DescribeOption{lemmastyle} |lemmastyle|$=$\meta{command}
% \hfill\tcboxverb{Default: not set}\\
% \newfeature[v1.2] |lemmastyle| can be used to set the family, series
@@ -2956,7 +2955,19 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+
% criticus. For example, |lemmastyle=|\cs{bfseries} will print all
% instances of lemma text in bold while
% |lemmastyle=|\cs{color}|{blue}| will print them in blue.
-%
+% \DescribeOption{initialrule} |initialrule|$=$\meta{command}
+% \label{ref:initialrule}\hfill\bgroup\footnotesize
+% \tcboxverb{Default: \rule{0.4\columnwidth}{0.4pt} (initially not set)}%
+% \egroup
+% \newfeature[v1.2] |initialrule| draws a separating rule between the
+% edition text and all subsequent layers of critical notes. Of course,
+% this option only makes sense when multiple-layer apparatus criticus
+% are set. Therefore, it has no effect on single-layer apparatus
+% criticus.\\
+% \DescribeOption{noinitialrule}\hfill\tcboxverb{Default: not set}\\
+% This is a no-value option. It removes any previously set
+% |initialrule|.
+%
% \subsection{Single-Layer Apparatus Criticus}
% \label{sec:single-layer-app}
% \paragraph{Specific Commands}
@@ -3170,25 +3181,37 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+
% \iffalse
%<*example>
% \fi
-\begin{minted}[linenos=false]{latex}
+\begin{minted}{latex}
\SetHooks{
- refnumstyle=\normalfont
+ refnumstyle=\normalfont,
+ initialrule=\rule{0.7in}{0.4pt}
}
\DeclareApparatus{testium}[
sep={] },
delim=\hskip 1em,
- rule=\rule{0.7in}{0.4pt}
+ norule
]
\DeclareApparatus{default}[
sep={: },
delim=\hskip 1em,
- norule
+ rule=\relax
]
\end{minted}
% \iffalse
%
% \fi
-%
+%
+% \begin{remarks}
+% \item The general hook \texttt{initialrule} used here (l.~3) is
+% described above \vpageref{ref:initialrule}.
+% \item \cs{relax} (l.~13) is a \TeX\ primitive that instructs to do
+% nothing. Therefore, |rule=\relax| is not strictly equivalent to
+% |norule|: with the former, \cs{relax} removes the rule but leaves
+% untouched the subsequent carriage return: as a result, the layers
+% are visually separated from one another by a blank line. With the
+% latter everything is removed, carriage return included.
+% \end{remarks}
+%
% \paragraph{Limiting the Number of Entries per Page}
% \label{ref:maxentries}
% In some instances, it can be useful to set a limit to the number of
@@ -3442,7 +3465,7 @@ the American Continent, II.61--2.
\begin{minted}[linenos=false]{latex}
This is some \app{
\lem[alt=dummy]{\note[type=fontium, labelb=bnote, labele=enote,
- lem=dummy... command]{Text of the note}
+ lem=dummy... command]{Text of the note.}
dummy}
\rdg{pseudo}}
text to demonstrate how to insert a note in the argument of the
@@ -3461,7 +3484,7 @@ text to demonstrate how to insert a note in the argument of the
% \begin{specimen}
% This is some \app{
% \lem[alt=dummy]{\note[type=fontium, labelb=bnote, labele=enote,
-% lem=dummy... command]{Text of the note}
+% lem=dummy... command]{Text of the note.}
% dummy}
% \rdg{pseudo}}
% text to demonstrate how to insert a note in the argument of the
@@ -3481,7 +3504,7 @@ text to demonstrate how to insert a note in the argument of the
dummy
Text of the
- note
+ note.
pseudo
text to demonstrate how to insert a note in the
argument of the
@@ -6233,6 +6256,9 @@ Sample text with a \textcolor{red}{word} in red.
store refnumstyle = \ekd@refnumstyle,
store postrefnum = \ekd@postrefnum,
store lemmastyle = \ekd@lemmastyle,
+ code initialrule = \def\ekd@initial@rule{#1\NLS},
+ default initialrule = \rule{0.4\columnwidth}{0.4pt},
+ noval noinitialrule = \undef\ekd@initial@rule,
initial appfontsize = \footnotesize,
initial refnumstyle = \bfseries,
initial postrefnum = ~,
@@ -6802,11 +6828,14 @@ Sample text with a \textcolor{red}{word} in red.
% documented.
% \begin{macrocode}
\newcommand*{\NLS}{%
- \par%
- \nobreak%
- \vspace{-\parskip}%
- \noindent%
- \ignorespaces}
+ \nobreak\@normalcr\relax
+ % \par
+ % \nobreak
+ % \vspace{-\parskip}%
+ % \leavevmode
+ % \noindent
+ % \ignorespaces
+}
% \end{macrocode}
% \end{macro}
% This boolean is used to test if a given entry is to be preceded by a
@@ -6823,34 +6852,53 @@ Sample text with a \textcolor{red}{word} in red.
% \begin{macrocode}
\newif\ifekd@inside@app
\def\add@@apparatus{%
- \if@pkg@parnotes\parnotes\else\fi%
- \if@pkg@footins%
- \bgroup%
- \ifrtl@app\setRL\else\setLR\fi%
+ \if@pkg@parnotes\parnotes\else\fi
+ \if@pkg@footins
+ \bgroup
+ \unless\ifekd@mapps
+ \ifrtl@app\pardir TRT\leavevmode\textdir TRT\else
+ \pardir TLT\leavevmode\textdir TLT\fi
+ \fi
\blfootnote{%
- \if@pkg@parnotes%
- \if@parnotesroman%
- \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi%
- \parnoteclear\else\fi%
+ \if@pkg@parnotes
+ \if@parnotesroman
+ \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi
+ \parnoteclear\else\fi
\ekd@inside@apptrue
- \footnotesize\apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi%
+ \ekd@appfontsize
+ \ifekd@mapps
+ \ifdefined\ekd@initial@rule
+ \ekd@initial@rule
+ \fi
+ \fi
+ \apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi
\ekd@inside@appfalse
\if@pkg@parnotes\parnotes\parnotereset\else\fi
}%
- \egroup%
- \fi%
- \if@pkg@float%
- \keyparbox[!b]{}{\ifrtl@app\setRL\else\setLR\fi%
- \if@pkg@parnotes%
- \if@parnotesroman%
- \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi%
- \parnoteclear\else\fi%
+ \egroup
+ \fi
+ \if@pkg@float
+ \keyparbox[!b]{}{%
+ \unless\ifekd@mapps
+ \ifrtl@app\pardir TRT\leavevmode\textdir TRT\else
+ \pardir TLT\leavevmode\textdir TLT\fi
+ \fi
+ \if@pkg@parnotes
+ \if@parnotesroman
+ \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi
+ \parnoteclear\else\fi
\ekd@inside@apptrue
- \ekd@appfontsize\apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi%
+ \ekd@appfontsize
+ \ifekd@mapps
+ \ifdefined\ekd@initial@rule
+ \ekd@initial@rule
+ \fi
+ \fi
+ \apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi
\ekd@inside@appfalse
- \if@pkg@parnotes\parnotes\parnotereset\else\fi%
+ \if@pkg@parnotes\parnotes\parnotereset\else\fi
}%
- \fi%
+ \fi
}
% \end{macrocode}
% Before inserting any new entry, \cs{add@apparatus} calls
@@ -9924,7 +9972,7 @@ function ekdosis.appout()
local output = {}
if next(apparatuses) == nil then
-- table.insert(output, "BEGIN")
- table.insert(output, "\\noindent\\csname ekd@default@rule\\endcsname\\NLS")
+ table.insert(output, "\\csname ekd@default@rule\\endcsname\\NLS")
table.insert(output, "\\csname ekd@begin@apparatus\\endcsname\\ignorespaces")
-- table.insert(output, "\\noindent ")
for i in string.gmatch(t,
@@ -9939,6 +9987,7 @@ function ekdosis.appout()
end
-- table.insert(output, "END")
else
+ local appinserted = false
local n = 1
while apparatuses[n]
do
@@ -9953,16 +10002,19 @@ function ekdosis.appout()
table.insert(output, "\\bgroup{}")
if apparatuses[n].direction == "LR"
then
- table.insert(output, "\\pardir TLT\\textdir TLT{}")
+ table.insert(output, "\\pardir TLT\\leavevmode\\textdir TLT{}")
elseif apparatuses[n].direction == "RL"
then
- table.insert(output, "\\pardir TRT\\textdir TRT{}")
+ table.insert(output, "\\pardir TRT\\leavevmode\\textdir TRT{}")
end
if apparatuses[n].rule == "none"
then
if n > 1
then
- table.insert(output, "\\NLS{}")
+ if appinserted
+ then
+ table.insert(output, "\\NLS{}")
+ end
else
table.insert(output, "\\noindent ")
end
@@ -9970,7 +10022,12 @@ function ekdosis.appout()
then
if n > 1
then
- table.insert(output, "\\NLS{}" .. apparatuses[n].rule .. "\\NLS{}")
+ if appinserted
+ then
+ table.insert(output, "\\NLS{}" .. apparatuses[n].rule .. "\\NLS{}")
+ else
+ table.insert(output, apparatuses[n].rule .. "\\NLS{}")
+ end
else
-- table.insert(output, "\\noindent ")
table.insert(output, apparatuses[n].rule .. "\\NLS{}")
@@ -9978,7 +10035,12 @@ function ekdosis.appout()
else
if n > 1
then
- table.insert(output, "\\NLS\\csname ekd@default@rule\\endcsname\\NLS{}")
+ if appinserted
+ then
+ table.insert(output, "\\NLS\\csname ekd@default@rule\\endcsname\\NLS{}")
+ else
+ table.insert(output, "\\csname ekd@default@rule\\endcsname\\NLS{}")
+ end
else
-- table.insert(output, "\\noindent ")
table.insert(output, "\\csname ekd@default@rule\\endcsname\\NLS{}")
@@ -10004,6 +10066,7 @@ function ekdosis.appout()
..curcol.."%-"..n..">")
do
table.insert(output, i)
+ appinserted = true
end
if apparatuses[n].ehook ~= ""
then
--
cgit v1.2.3