diff options
-rw-r--r-- | ekdosis.dtx | 150 |
1 files changed, 119 insertions, 31 deletions
diff --git a/ekdosis.dtx b/ekdosis.dtx index 30b19f0..0237235 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/08/18 v1.3 Typesetting TEI xml-compliant critical editions] | 64 | [2021/08/24 v1.4-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} |
@@ -441,6 +441,11 @@ along with this program. If not, see | |||
441 | } | 441 | } |
442 | \end{filecontents} | 442 | \end{filecontents} |
443 | \begin{filecontents}[overwrite]{\jobname-ekd.cfg} | 443 | \begin{filecontents}[overwrite]{\jobname-ekd.cfg} |
444 | %% fixfoot:--- | ||
445 | \DeclareFixedFootnote{\seeekdsep}{See below | ||
446 | \vpageref{ref:ekdsep-subsep} for more information and | ||
447 | \vref{lst:emend-coni-corr}, ll.~23--5 for an illustrative example.} | ||
448 | %% ekdosis:--- | ||
444 | \footnotelayout{m} | 449 | \footnotelayout{m} |
445 | \SetCritSymbols{suppbegin = 〈,suppend = 〉} | 450 | \SetCritSymbols{suppbegin = 〈,suppend = 〉} |
446 | \EnvtoTEI{ancientgreek}{p}[xml:lang="grc"] | 451 | \EnvtoTEI{ancientgreek}{p}[xml:lang="grc"] |
@@ -558,14 +563,14 @@ along with this program. If not, see | |||
558 | \defaultfontfeatures{Renderer=Harfbuzz} | 563 | \defaultfontfeatures{Renderer=Harfbuzz} |
559 | \usepackage[latin.classic,greek.ancient,american]{babel} | 564 | \usepackage[latin.classic,greek.ancient,american]{babel} |
560 | \babelfont{rm}{Old Standard} | 565 | \babelfont{rm}{Old Standard} |
561 | \babelfont{sf}{NewComputerModernSans10} | 566 | \babelfont{sf}{NewCMSans10-Book} |
562 | \babelfont{tt}{NewComputerModernMono10} | 567 | \babelfont{tt}{NewCMMono10-Book} |
563 | \babelfont[greek]{rm}[ | 568 | \babelfont[greek]{rm}[ |
564 | Script=Greek, | 569 | Script=Greek, |
565 | RawFeature={+ss05;+ss06} | 570 | RawFeature={+ss05;+ss06} |
566 | ]{Old Standard} | 571 | ]{Old Standard} |
567 | \babelfont[greek]{sf}[Script=Greek]{NewComputerModernSans10} | 572 | \babelfont[greek]{sf}[Script=Greek]{NewCMSans10-Book} |
568 | \babelfont[greek]{tt}[Script=Greek]{NewComputerModernMono10} | 573 | \babelfont[greek]{tt}[Script=Greek]{NewCMMono10-Book} |
569 | \newfontfamily{\junicode}{Junicode}[ | 574 | \newfontfamily{\junicode}{Junicode}[ |
570 | Ligatures=TeX, | 575 | Ligatures=TeX, |
571 | RawFeature={+hist}] | 576 | RawFeature={+hist}] |
@@ -575,6 +580,10 @@ along with this program. If not, see | |||
575 | \usepackage[Old Standard]{mathfont} | 580 | \usepackage[Old Standard]{mathfont} |
576 | \usepackage[biblatex=true]{embrac} | 581 | \usepackage[biblatex=true]{embrac} |
577 | \usepackage{chifoot} | 582 | \usepackage{chifoot} |
583 | \usepackage{fixfoot} | ||
584 | \usepackage[nospace,american]{varioref} | ||
585 | \newcommand\phts{\phantomsection} | ||
586 | \usepackage{nameref} | ||
578 | \usepackage{arabluatex} | 587 | \usepackage{arabluatex} |
579 | \usepackage[parnotes=roman, teiexport=tidy, poetry=verse]{ekdosis} | 588 | \usepackage[parnotes=roman, teiexport=tidy, poetry=verse]{ekdosis} |
580 | \AddxmlBibResource{bibdata.xml} | 589 | \AddxmlBibResource{bibdata.xml} |
@@ -628,9 +637,6 @@ along with this program. If not, see | |||
628 | \labelformat{figure}{fig.~#1} | 637 | \labelformat{figure}{fig.~#1} |
629 | \usepackage[defaultindex=none,citecmd=autocite]{icite} | 638 | \usepackage[defaultindex=none,citecmd=autocite]{icite} |
630 | \bibinput{ekdosis} | 639 | \bibinput{ekdosis} |
631 | \usepackage[nospace,american]{varioref} | ||
632 | \newcommand\phts{\phantomsection} | ||
633 | \usepackage{nameref} | ||
634 | \newcommand\vnref[1]{\vref{#1}, \enquote{\nameref{#1}}} | 640 | \newcommand\vnref[1]{\vref{#1}, \enquote{\nameref{#1}}} |
635 | \usepackage[style=oxnotes-inote,dashed]{biblatex} | 641 | \usepackage[style=oxnotes-inote,dashed]{biblatex} |
636 | \DefineBibliographyStrings{english}{ | 642 | \DefineBibliographyStrings{english}{ |
@@ -849,7 +855,7 @@ along with this program. If not, see | |||
849 | %</driver> | 855 | %</driver> |
850 | % \fi | 856 | % \fi |
851 | % | 857 | % |
852 | % \CheckSum{2519} | 858 | % \CheckSum{0} |
853 | % | 859 | % |
854 | % \CharacterTable | 860 | % \CharacterTable |
855 | % {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 | 861 | % {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 |
@@ -1905,14 +1911,12 @@ yesterday. | |||
1905 | % |nosep| must be used when for some reason no \cs{rdg} command | 1911 | % |nosep| must be used when for some reason no \cs{rdg} command |
1906 | % follows a \cs{lem} command that has just been used, as shown below | 1912 | % follows a \cs{lem} command that has just been used, as shown below |
1907 | % in \vref{lst:emend-coni-corr}, l.~7. | 1913 | % in \vref{lst:emend-coni-corr}, l.~7. |
1908 | % | 1914 | % \danger If |nosep| be used so as to insert an explanatory note after |
1909 | % \needspace{2\baselineskip} | 1915 | % the lemma text with the \cs{note} command described below |
1910 | % \danger \DescribeMacro{\ekdsep} If |nosep| be used so as to insert | 1916 | % \vpageref{ref:editorial-notes}, then the |sep| optional argument of |
1911 | % an explanatory note after the lemma text with the \cs{note} command | 1917 | % \cs{note} can be used to put back in the separator. This technique |
1912 | % described below \vpageref{ref:editorial-notes}, then \cs{ekdsep} can | 1918 | % is demonstrated below in |
1913 | % be used\---for instance as value of the |post| optional argument of | 1919 | % \vref{lst:emend-coni-corr}, ll.~23--5.\\ |
1914 | % the note\---to put back in the separator. This technique is | ||
1915 | % demonstrated below in \vref{lst:emend-coni-corr}, ll.~23--5.\\ | ||
1916 | % \DescribeOption{nolem} |nolem|$=$\verb+true|false+\\ | 1920 | % \DescribeOption{nolem} |nolem|$=$\verb+true|false+\\ |
1917 | % This named argument does not need a value as it defaults to |true| | 1921 | % This named argument does not need a value as it defaults to |true| |
1918 | % if used. |nolem| completely removes the lemma text from the related | 1922 | % if used. |nolem| completely removes the lemma text from the related |
@@ -1987,6 +1991,19 @@ yesterday. | |||
1987 | % \DescribeOption{post} |post|$=$\meta{words}\\ | 1991 | % \DescribeOption{post} |post|$=$\meta{words}\\ |
1988 | % \DescribeOption{prewit} |prewit|$=$\meta{words}\\ | 1992 | % \DescribeOption{prewit} |prewit|$=$\meta{words}\\ |
1989 | % \DescribeOption{postwit} |postwit|$=$\meta{words}\\ | 1993 | % \DescribeOption{postwit} |postwit|$=$\meta{words}\\ |
1994 | % \DescribeOption{subsep} |subsep|$=$\meta{subseparator}\\ | ||
1995 | % \newfeature[v1.4] |subsep| inserts a subseparator to be printed | ||
1996 | % \emph{before} the current entry as described below | ||
1997 | % \vpageref{ref:setsubseparator}. This option is supposed to be used | ||
1998 | % when no subseparator is defined, or when one is defined but for some | ||
1999 | % reason a different subseparator is needed for the current | ||
2000 | % entry.\\ | ||
2001 | % \DescribeOption{nosubsep} This argument-less option removes the | ||
2002 | % subseparator from the current entry, provided one has been set by | ||
2003 | % means of \cs{SetSubseparator}, \cs{SetApparatus} or | ||
2004 | % \cs{DeclareApparatus}.\footnote{See | ||
2005 | % \vpagerefrange{ref:setsubseparator}{ref:apparatus-settings-e} and | ||
2006 | % \vref{sec:declaring-layers} for details.} | ||
1990 | % | 2007 | % |
1991 | % \paragraph{Notes} | 2008 | % \paragraph{Notes} |
1992 | % \DescribeMacro{\note}\phts\label{ref:notes-b}\DescribeMacro{\note*} | 2009 | % \DescribeMacro{\note}\phts\label{ref:notes-b}\DescribeMacro{\note*} |
@@ -2007,6 +2024,10 @@ yesterday. | |||
2007 | % |pre| inserts \meta{words} immediately before the note.\\ | 2024 | % |pre| inserts \meta{words} immediately before the note.\\ |
2008 | % \DescribeOption{post} |post|$=$\meta{words}\\ | 2025 | % \DescribeOption{post} |post|$=$\meta{words}\\ |
2009 | % |post| inserts \meta{words} immediately after the note.\\ | 2026 | % |post| inserts \meta{words} immediately after the note.\\ |
2027 | % \DescribeOption{sep} This argument-less option is equivalent to | ||
2028 | % |post=\ekdsep|.\seeekdsep\\ | ||
2029 | % \DescribeOption{subsep} This argument-less option is equivalent to | ||
2030 | % |pre=\ekdsubsep|.\seeekdsep\\ | ||
2010 | % | 2031 | % |
2011 | % \danger Under no circumstances is it permitted to insert this | 2032 | % \danger Under no circumstances is it permitted to insert this |
2012 | % command \cs{note} or \cs{note*} inside the argument of \cs{lem} or | 2033 | % command \cs{note} or \cs{note*} inside the argument of \cs{lem} or |
@@ -2639,7 +2660,7 @@ friend | |||
2639 | 2660 | ||
2640 | Πάντων δὲ \app{ | 2661 | Πάντων δὲ \app{ |
2641 | \lem[resp=egomute, type=emendation, nosep]{\supplied{τῶν πυρετῶν}} | 2662 | \lem[resp=egomute, type=emendation, nosep]{\supplied{τῶν πυρετῶν}} |
2642 | \note[post=\ekdsep]{addidi (\arb{^gamI`a 'l-.hummayAti} | 2663 | \note[sep]{addidi (\arb{^gamI`a 'l-.hummayAti} |
2643 | \getsiglum{Gal})} | 2664 | \getsiglum{Gal})} |
2644 | \rdg[nordg, source=Gal]{\arb{al-.hummayAti}} | 2665 | \rdg[nordg, source=Gal]{\arb{al-.hummayAti}} |
2645 | \rdg[wit=codd, source=edd, alt=om.]{} | 2666 | \rdg[wit=codd, source=edd, alt=om.]{} |
@@ -2676,7 +2697,7 @@ friend | |||
2676 | % | 2697 | % |
2677 | % Πάντων δὲ \app{ | 2698 | % Πάντων δὲ \app{ |
2678 | % \lem[resp=egomute, type=emendation, nosep]{\supplied{τῶν πυρετῶν}} | 2699 | % \lem[resp=egomute, type=emendation, nosep]{\supplied{τῶν πυρετῶν}} |
2679 | % \note[post=\ekdsep]{addidi (\arb{^gamI`a 'l-.hummayAti} | 2700 | % \note[sep]{addidi (\arb{^gamI`a 'l-.hummayAti} |
2680 | % \getsiglum{Gal})} | 2701 | % \getsiglum{Gal})} |
2681 | % \rdg[nordg, source=Gal]{\arb{al-.hummayAti}} | 2702 | % \rdg[nordg, source=Gal]{\arb{al-.hummayAti}} |
2682 | % \rdg[wit=hcodd, source=hedd, alt=om.]{} | 2703 | % \rdg[wit=hcodd, source=hedd, alt=om.]{} |
@@ -2985,7 +3006,7 @@ friend | |||
2985 | % \emph{semicolons}, as shown in red in the listing below at the end | 3006 | % \emph{semicolons}, as shown in red in the listing below at the end |
2986 | % of lines~1 and 2. | 3007 | % of lines~1 and 2. |
2987 | % \begin{enumerate} | 3008 | % \begin{enumerate} |
2988 | % \item[\dbend] The colon at the end of line~3 closes the whole | 3009 | % \item[\dbend] The comma at the end of line~3 closes the whole |
2989 | % value of |text| and acts as a higher level separator. | 3010 | % value of |text| and acts as a higher level separator. |
2990 | % \end{enumerate} | 3011 | % \end{enumerate} |
2991 | % \item \phts\label{it:lang-subopt} Each name may be followed by a | 3012 | % \item \phts\label{it:lang-subopt} Each name may be followed by a |
@@ -3386,10 +3407,38 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ | |||
3386 | % right-to-left. | 3407 | % right-to-left. |
3387 | % | 3408 | % |
3388 | % \DescribeMacro{\SetSeparator} \cs{SetSeparator}\marg{separator} is | 3409 | % \DescribeMacro{\SetSeparator} \cs{SetSeparator}\marg{separator} is |
3389 | % used to change the separator between lemma texts and variants | 3410 | % used to change the separator between lemma texts and variant |
3390 | % readings. By default, the separator is a closing square bracket | 3411 | % readings. By default, the separator is a closing square bracket |
3391 | % followed by a space (\verb*+] +). | 3412 | % followed by a space (\verb*+] +). |
3392 | % | 3413 | % |
3414 | % \DescribeMacro{\SetSubseparator}\label{ref:setsubseparator} | ||
3415 | % \newfeature[v1.4] \cs{SetSubseparator}\marg{subseparator} is used to | ||
3416 | % set or change the \enquote{subseparator} between succeeding variant | ||
3417 | % readings. By default, no subseparator is set. | ||
3418 | % | ||
3419 | % \danger As the subseparator applies to subsequent variant readings | ||
3420 | % only, it is naturally preceded by a breakable space. This space can | ||
3421 | % be removed by \cs{unskip}. As an example, what follows replaces the | ||
3422 | % breakable space with an unbreakable space, then prints a colon as | ||
3423 | % subseparator followed by a space:--- | ||
3424 | % | ||
3425 | % \iffalse | ||
3426 | %<*example> | ||
3427 | % \fi | ||
3428 | \begin{minted}[linenos=false]{latex} | ||
3429 | \SetSubseparator{\unskip~: } | ||
3430 | \end{minted} | ||
3431 | % \iffalse | ||
3432 | %</example> | ||
3433 | % \fi | ||
3434 | % | ||
3435 | % \danger \DescribeMacro{\ekdsep} \DescribeMacro{\ekdsubsep} | ||
3436 | % \phts\label{ref:ekdsep-subsep} Once the separator and if applicable | ||
3437 | % the subseparator have been set, they can be accessed by \cs{ekdsep} | ||
3438 | % and \cs{ekdsubsep} respectively. It is therefore advisable to use | ||
3439 | % these commands instead of the mere symbols at whatever place one | ||
3440 | % would have them printed. | ||
3441 | % | ||
3393 | % \DescribeMacro{\SetBeginApparatus} | 3442 | % \DescribeMacro{\SetBeginApparatus} |
3394 | % \cs{SetBeginApparatus}\marg{characters\textbar commands} can be used | 3443 | % \cs{SetBeginApparatus}\marg{characters\textbar commands} can be used |
3395 | % to append \meta{characters} or \meta{commands} at the beginning of | 3444 | % to append \meta{characters} or \meta{commands} at the beginning of |
@@ -3452,6 +3501,9 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ | |||
3452 | % \DescribeOption{sep} |sep|$=$\meta{command \textbar\ chars} | 3501 | % \DescribeOption{sep} |sep|$=$\meta{command \textbar\ chars} |
3453 | % \hfill\tcboxverb{Default: ]␣}\\ | 3502 | % \hfill\tcboxverb{Default: ]␣}\\ |
3454 | % The separator between lemma texts and variant readings.\\ | 3503 | % The separator between lemma texts and variant readings.\\ |
3504 | % \DescribeOption{subsep} |subsep|$=$\meta{command \textbar\ chars} | ||
3505 | % \hfill\tcboxverb{Default: not set}\\ | ||
3506 | % The \enquote{subseparator} between succeeding variant readings.\\ | ||
3455 | % \DescribeOption{delim} |delim|$=$\meta{delimiter} | 3507 | % \DescribeOption{delim} |delim|$=$\meta{delimiter} |
3456 | % \hfill\tcboxverb{Default: not set}\\ | 3508 | % \hfill\tcboxverb{Default: not set}\\ |
3457 | % The delimiter between entries in the apparatus criticus. As said | 3509 | % The delimiter between entries in the apparatus criticus. As said |
@@ -3470,7 +3522,7 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ | |||
3470 | % between the edition text and the apparatus criticus.\\ | 3522 | % between the edition text and the apparatus criticus.\\ |
3471 | % \DescribeOption{norule}\hfill\tcboxverb{Default: not set}\\ | 3523 | % \DescribeOption{norule}\hfill\tcboxverb{Default: not set}\\ |
3472 | % |norule| does not accept any value and is used to remove the | 3524 | % |norule| does not accept any value and is used to remove the |
3473 | % line.\phts\label{ref:apparatus-settings-e}\\ | 3525 | % line.\\ |
3474 | % \DescribeOption{lang} |lang|$=$\meta{languagename} | 3526 | % \DescribeOption{lang} |lang|$=$\meta{languagename} |
3475 | % \newfeature[v1.2]\phts\label{ref:app-lang-opt} | 3527 | % \newfeature[v1.2]\phts\label{ref:app-lang-opt} |
3476 | % \hfill\tcboxverb{Default: not set}\\ | 3528 | % \hfill\tcboxverb{Default: not set}\\ |
@@ -3489,7 +3541,8 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ | |||
3489 | % \cs{note}\oarg{options}\marg{text}\===a language different from the | 3541 | % \cs{note}\oarg{options}\marg{text}\===a language different from the |
3490 | % one that is selected in the edition text. |languagename| can be any | 3542 | % one that is selected in the edition text. |languagename| can be any |
3491 | % value accepted by \pkg{babel} or \pkg{polyglossia}. | 3543 | % value accepted by \pkg{babel} or \pkg{polyglossia}. |
3492 | % | 3544 | % \phts\label{ref:apparatus-settings-e} |
3545 | % | ||
3493 | % As an example, an apparatus criticus with references to line numbers | 3546 | % As an example, an apparatus criticus with references to line numbers |
3494 | % printed in normal font, a colon as a separator between lemma texts | 3547 | % printed in normal font, a colon as a separator between lemma texts |
3495 | % and variant readings, a broad space as a delimiter between entries | 3548 | % and variant readings, a broad space as a delimiter between entries |
@@ -3578,6 +3631,7 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ | |||
3578 | % \label{sec:layout-layers} | 3631 | % \label{sec:layout-layers} |
3579 | % \DescribeOption{direction} | 3632 | % \DescribeOption{direction} |
3580 | % \DescribeOption{sep} | 3633 | % \DescribeOption{sep} |
3634 | % \DescribeOption{subsep} | ||
3581 | % \DescribeOption{delim} | 3635 | % \DescribeOption{delim} |
3582 | % \DescribeOption{bhook} | 3636 | % \DescribeOption{bhook} |
3583 | % \DescribeOption{ehook} | 3637 | % \DescribeOption{ehook} |
@@ -3603,7 +3657,7 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ | |||
3603 | % \iffalse | 3657 | % \iffalse |
3604 | %<*example> | 3658 | %<*example> |
3605 | % \fi | 3659 | % \fi |
3606 | \begin{minted}{latex} | 3660 | \begin{minted}[numbersep=6pt]{latex} |
3607 | \SetHooks{ | 3661 | \SetHooks{ |
3608 | refnumstyle=\normalfont, | 3662 | refnumstyle=\normalfont, |
3609 | initialrule=\rule{0.7in}{0.4pt} | 3663 | initialrule=\rule{0.7in}{0.4pt} |
@@ -8008,6 +8062,7 @@ Sample text with a \textcolor{red}{word} in red. | |||
8008 | nmeta norule = {rule=none}, | 8062 | nmeta norule = {rule=none}, |
8009 | code delim = \def\delim@val{\unexpanded{#1}}, | 8063 | code delim = \def\delim@val{\unexpanded{#1}}, |
8010 | store sep = \sep@val, | 8064 | store sep = \sep@val, |
8065 | store subsep = \subsep@val, | ||
8011 | store bhook = \bhook@val, | 8066 | store bhook = \bhook@val, |
8012 | store ehook = \ehook@val, | 8067 | store ehook = \ehook@val, |
8013 | store maxentries = \limit@val, | 8068 | store maxentries = \limit@val, |
@@ -8042,6 +8097,7 @@ Sample text with a \textcolor{red}{word} in red. | |||
8042 | \luastringO{\rule@val}, | 8097 | \luastringO{\rule@val}, |
8043 | \luastringO{\delim@val}, | 8098 | \luastringO{\delim@val}, |
8044 | \luastringO{\sep@val}, | 8099 | \luastringO{\sep@val}, |
8100 | \luastringO{\subsep@val}, | ||
8045 | \luastringO{\bhook@val}, | 8101 | \luastringO{\bhook@val}, |
8046 | \luastringO{\ehook@val}, | 8102 | \luastringO{\ehook@val}, |
8047 | \luastringO{\limit@val}, | 8103 | \luastringO{\limit@val}, |
@@ -8181,12 +8237,14 @@ Sample text with a \textcolor{red}{word} in red. | |||
8181 | % \begin{macrocode} | 8237 | % \begin{macrocode} |
8182 | \newif\ifrtl@app | 8238 | \newif\ifrtl@app |
8183 | \edef\ekdsep{] } | 8239 | \edef\ekdsep{] } |
8240 | \edef\ekdsubsep{} | ||
8184 | \ekvdefinekeys{default@app}{ | 8241 | \ekvdefinekeys{default@app}{ |
8185 | choice direction = {LR = \rtl@appfalse, | 8242 | choice direction = {LR = \rtl@appfalse, |
8186 | RL = \rtl@apptrue}, | 8243 | RL = \rtl@apptrue}, |
8187 | unknown-choice direction = \PackageError{ekdosis}{unknown | 8244 | unknown-choice direction = \PackageError{ekdosis}{unknown |
8188 | direction=#1}{`direction' must be either `LR' or `RL'.}, | 8245 | direction=#1}{`direction' must be either `LR' or `RL'.}, |
8189 | code sep = \edef\ekdsep{#1}, | 8246 | code sep = \edef\ekdsep{#1}, |
8247 | code subsep = \edef\ekdsubsep{#1}, | ||
8190 | store bhook = \ekd@begin@apparatus, | 8248 | store bhook = \ekd@begin@apparatus, |
8191 | initial bhook = {}, | 8249 | initial bhook = {}, |
8192 | store ehook = \ekd@end@apparatus, | 8250 | store ehook = \ekd@end@apparatus, |
@@ -8232,6 +8290,15 @@ Sample text with a \textcolor{red}{word} in red. | |||
8232 | \NewDocumentCommand{\SetSeparator}{m}{\edef\ekdsep{#1}} | 8290 | \NewDocumentCommand{\SetSeparator}{m}{\edef\ekdsep{#1}} |
8233 | % \end{macrocode} | 8291 | % \end{macrocode} |
8234 | % \end{macro} | 8292 | % \end{macro} |
8293 | % \begin{macro}{\SetSubseparator} | ||
8294 | % \changes{v1.4}{2021/08/24}{New command for subseparators} | ||
8295 | % \cs{SetSubseparator}\marg{sub-separator} allows to change the | ||
8296 | % \enquote{subseparator} between variant readings. By default, | ||
8297 | % no subseparator is set:--- | ||
8298 | % \begin{macrocode} | ||
8299 | \NewDocumentCommand{\SetSubseparator}{m}{\edef\ekdsubsep{#1}} | ||
8300 | % \end{macrocode} | ||
8301 | % \end{macro} | ||
8235 | % \begin{macro}{\SetBeginApparatus} | 8302 | % \begin{macro}{\SetBeginApparatus} |
8236 | % \cs{SetBeginApparatus}\marg{characters} can be used to append | 8303 | % \cs{SetBeginApparatus}\marg{characters} can be used to append |
8237 | % characters at the beginning of the apparatus block. By default, | 8304 | % characters at the beginning of the apparatus block. By default, |
@@ -8817,6 +8884,9 @@ Sample text with a \textcolor{red}{word} in red. | |||
8817 | code post = \def\ekdlr@post{#1}, | 8884 | code post = \def\ekdlr@post{#1}, |
8818 | code prewit = \def\ekdlr@prewit{#1}, | 8885 | code prewit = \def\ekdlr@prewit{#1}, |
8819 | code postwit = \def\ekdlr@postwit{#1}, | 8886 | code postwit = \def\ekdlr@postwit{#1}, |
8887 | store subsep = \ekdr@subsep, | ||
8888 | initial subsep = \ekdsubsep, | ||
8889 | bool nosubsep = \ifekdr@nosubsep, | ||
8820 | store type = \ekdlr@type, | 8890 | store type = \ekdlr@type, |
8821 | bool nordg = \ifekdr@nordg | 8891 | bool nordg = \ifekdr@nordg |
8822 | } | 8892 | } |
@@ -8987,8 +9057,11 @@ Sample text with a \textcolor{red}{word} in red. | |||
8987 | % \cs{rdg}\oarg{options}\marg{variant reading} inserts \meta{variant | 9057 | % \cs{rdg}\oarg{options}\marg{variant reading} inserts \meta{variant |
8988 | % reading} in the second part of the entry, after the lemma text and | 9058 | % reading} in the second part of the entry, after the lemma text and |
8989 | % the separator, in the apparatus criticus. This command accepts the | 9059 | % the separator, in the apparatus criticus. This command accepts the |
8990 | % optional key-value arguments defined above. | 9060 | % optional key-value arguments defined above. This command sets |
9061 | % \cs{ifekd@subsq@rdg} to true, which instructs \pkg{ekdosis} that | ||
9062 | % \enquote{subseparators} may be used for subsequent entries. | ||
8991 | % \begin{macrocode} | 9063 | % \begin{macrocode} |
9064 | \newif\ifekd@subsq@rdg | ||
8992 | \NewDocumentCommand{\rdg}{O{} m}{% | 9065 | \NewDocumentCommand{\rdg}{O{} m}{% |
8993 | \bgroup% | 9066 | \bgroup% |
8994 | \ekvset{rdg}{#1}% | 9067 | \ekvset{rdg}{#1}% |
@@ -9005,6 +9078,9 @@ Sample text with a \textcolor{red}{word} in red. | |||
9005 | \else% | 9078 | \else% |
9006 | \ifbool{al@rlmode}{% | 9079 | \ifbool{al@rlmode}{% |
9007 | \edef\rdg@app{% | 9080 | \edef\rdg@app{% |
9081 | \ifekd@subsq@rdg | ||
9082 | \unless\ifekdr@nosubsep\unexpanded\expandafter{\ekdr@subsep}\fi | ||
9083 | \fi | ||
9008 | \ifdefined\ekdlr@alt% | 9084 | \ifdefined\ekdlr@alt% |
9009 | \ifdefined\ekdlr@post% | 9085 | \ifdefined\ekdlr@post% |
9010 | \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi | 9086 | \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi |
@@ -9031,6 +9107,9 @@ Sample text with a \textcolor{red}{word} in red. | |||
9031 | }% | 9107 | }% |
9032 | {% | 9108 | {% |
9033 | \edef\rdg@app{% | 9109 | \edef\rdg@app{% |
9110 | \ifekd@subsq@rdg | ||
9111 | \unless\ifekdr@nosubsep\unexpanded\expandafter{\ekdr@subsep}\fi | ||
9112 | \fi | ||
9034 | \ifdefined\ekdlr@alt% | 9113 | \ifdefined\ekdlr@alt% |
9035 | \ifdefined\ekdlr@pre% | 9114 | \ifdefined\ekdlr@pre% |
9036 | \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi | 9115 | \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi |
@@ -9061,13 +9140,14 @@ Sample text with a \textcolor{red}{word} in red. | |||
9061 | \space\unexpanded\expandafter{\ekdlr@postwit}\else\fi | 9140 | \space\unexpanded\expandafter{\ekdlr@postwit}\else\fi |
9062 | }% | 9141 | }% |
9063 | }% | 9142 | }% |
9064 | \ifekd@mapps% | 9143 | \ifekd@mapps |
9065 | \append@app[\ekdan@type]{\rdg@app}% | 9144 | \append@app[\ekdan@type]{\rdg@app}% |
9066 | \else% | 9145 | \else |
9067 | \append@app{\rdg@app}% | 9146 | \append@app{\rdg@app}% |
9068 | \fi% | 9147 | \fi |
9069 | \fi% | 9148 | \fi |
9070 | \egroup% | 9149 | \egroup |
9150 | \ekd@subsq@rdgtrue | ||
9071 | } | 9151 | } |
9072 | % \end{macrocode} | 9152 | % \end{macrocode} |
9073 | % \end{macro} | 9153 | % \end{macro} |
@@ -9177,7 +9257,9 @@ Sample text with a \textcolor{red}{word} in red. | |||
9177 | % \begin{macrocode} | 9257 | % \begin{macrocode} |
9178 | \ekvdefinekeys{ekd@note}{ | 9258 | \ekvdefinekeys{ekd@note}{ |
9179 | store pre = \pre@value, | 9259 | store pre = \pre@value, |
9180 | store post = \post@value | 9260 | store post = \post@value, |
9261 | nmeta sep = {post=\ekdsep}, | ||
9262 | nmeta subsep = {pre=\ekdsubsep} | ||
9181 | } | 9263 | } |
9182 | % \end{macrocode} | 9264 | % \end{macrocode} |
9183 | % The following three commands, \cs{note@app}, \cs{ekd@note} and | 9265 | % The following three commands, \cs{note@app}, \cs{ekd@note} and |
@@ -11806,6 +11888,7 @@ function ekdosis.newapparatus(teitype, | |||
11806 | apprule, | 11888 | apprule, |
11807 | appdelim, | 11889 | appdelim, |
11808 | appsep, | 11890 | appsep, |
11891 | appsubsep, | ||
11809 | appbhook, | 11892 | appbhook, |
11810 | appehook, | 11893 | appehook, |
11811 | applimit, | 11894 | applimit, |
@@ -11822,6 +11905,7 @@ function ekdosis.newapparatus(teitype, | |||
11822 | rule = apprule, | 11905 | rule = apprule, |
11823 | delim = appdelim, | 11906 | delim = appdelim, |
11824 | sep = appsep, | 11907 | sep = appsep, |
11908 | subsep = appsubsep, | ||
11825 | bhook = appbhook, | 11909 | bhook = appbhook, |
11826 | ehook = appehook, | 11910 | ehook = appehook, |
11827 | limit = applimit, | 11911 | limit = applimit, |
@@ -12026,6 +12110,10 @@ function ekdosis.appout() | |||
12026 | table.insert(output, "\\edef\\ekdsep{" .. apparatuses[n].sep .. "}") | 12110 | table.insert(output, "\\edef\\ekdsep{" .. apparatuses[n].sep .. "}") |
12027 | else | 12111 | else |
12028 | end | 12112 | end |
12113 | if apparatuses[n].subsep ~= "" | ||
12114 | then | ||
12115 | table.insert(output, "\\edef\\ekdsubsep{" .. apparatuses[n].subsep .. "}") | ||
12116 | end | ||
12029 | if apparatuses[n].bhook ~= "" | 12117 | if apparatuses[n].bhook ~= "" |
12030 | then | 12118 | then |
12031 | table.insert(output, apparatuses[n].bhook) | 12119 | table.insert(output, apparatuses[n].bhook) |