diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty | 371 |
1 files changed, 272 insertions, 99 deletions
diff --git a/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty b/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty index 3e8094f9c14..c313fe5d29c 100644 --- a/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty +++ b/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty @@ -15,7 +15,7 @@ %% This file is part of the `ekdosis' package %% %% ekdosis -- Typesetting TEI xml compliant critical editions -%% Copyright (C) 2020 Robert Alessi +%% Copyright (C) 2020--2021 Robert Alessi %% %% Please send error reports and suggestions for improvements to Robert %% Alessi <alessi@robertalessi.net> @@ -41,7 +41,7 @@ %% Running "make inst" installs the files in the user's TeX tree. \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{ekdosis} - [2020/11/04 v1.1 Typesetting TEI xml-compliant critical editions] + [2021/04/02 v1.2 Typesetting TEI xml-compliant critical editions] \RequirePackage{iftex} \RequireLuaTeX \RequirePackage{expkv-opt} @@ -52,6 +52,7 @@ \newif\if@parnotesroman \newif\if@pkg@parnotes \newif\iftei@export +\newif\if@pkg@poetry@verse \ekvdefinekeys{ekdosis}{ choice layout = {float = {\@pkg@floattrue}, footins = {\@pkg@floatfalse\@pkg@footinstrue}}, @@ -64,7 +65,9 @@ initial divs = ekdosis, unknown-choice divs = \PackageError{ekdosis}{unknown divs=#1}{`divs' must be either `ekdosis' or `latex'.}, - bool verse = \if@pkg@verse, + choice poetry = {verse = {\@pkg@poetry@versetrue}}, + unknown-choice poetry = \PackageError{ekdosis}{unknown + poetry=#1}{`poetry' must be `verse' for now.}, choice parnotes = {false = {}, true = {\@pkg@parnotestrue}, roman = {\@pkg@parnotestrue\@parnotesromantrue}}, @@ -85,6 +88,9 @@ `tidy'.} } \ekvoProcessLocalOptions{ekdosis} +\newif\ifekd@memoir@loaded +\@ifclassloaded{memoir}{% + \ekd@memoir@loadedtrue\@pkg@poetry@versetrue}{} \RequirePackage{luacode} \RequirePackage{paracol} \RequirePackage{etoolbox} @@ -96,7 +102,7 @@ \RequirePackage{ltxcmds} \RequirePackage{pdftexcmds} \RequirePackage{ifoddpage} -\if@pkg@verse +\if@pkg@poetry@verse \RequirePackage{verse} \fi \if@pkg@parnotes @@ -110,9 +116,16 @@ store appfontsize = \ekd@appfontsize, store refnumstyle = \ekd@refnumstyle, store postrefnum = \ekd@postrefnum, + store lemmastyle = \ekd@lemmastyle, + store readingstyle = \ekd@readingstyle, + 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 = ~ + initial postrefnum = ~, + initial lemmastyle = {}, + initial readingstyle = {} } \NewDocumentCommand{\SetHooks}{m}{\ekvset{ekd@hooks}{#1}} \ekvdefinekeys{ekd@witness}{ @@ -237,6 +250,7 @@ store bhook = \bhook@val, store ehook = \ehook@val, store maxentries = \limit@val, + store lang = \lang@val, initial direction = LR, initial delim = {}, initial ehook = {\csname ekd@end@apparatus\endcsname} @@ -255,7 +269,8 @@ \luastringO{\sep@val}, \luastringO{\bhook@val}, \luastringO{\ehook@val}, - \luastringO{\limit@val} + \luastringO{\limit@val}, + \luastringO{\lang@val} )} \egroup } @@ -264,6 +279,29 @@ \luadirect{ekdosis.addto_bagunits(\luastringO{#1}, \luastringN{#2})}% \ignorespaces } +\NewDocumentCommand{\ekdpb}{o m}{% + \def\@tmpoarg{#1}% + \def\@tmpmarg{#2}% + \luadirect{ekdosis.dolnlab(\luastringN{#2})}% + \linelabel{\luadirect{tex.sprint(ekdosis.getlnlab())}}% + \def\tmp@ln{% + \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}}}% + \def\tmp@pg{% + \getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}}}% + \IfNoValueTF{#1} + {\ifnum + \pdf@strcmp{\@tmpmarg}{\tmp@ln} = 0 + \pagebreak + \fi} + {\ifnum + \pdf@strcmp{\@tmpoarg}{\tmp@pg} = 0 + \ifnum + \pdf@strcmp{\@tmpmarg}{\tmp@ln} = 0 + \pagebreak + \fi + \fi + }\ignorespaces +} \newbool{do@app} \newif\ifekd@state \newif\ifekd@isinapp @@ -281,8 +319,8 @@ {\luadirect{ekdosis.appin(\luastringO{#2})}} {\luadirect{ekdosis.appin(\luastringO{#2}, \luastringO{#1})}}% } - % \def\blfootnote{\gdef\@thefnmark{\relax}\@footnotetext} -\def\blfootnote{\gdef\@thefnmark{}\@blfootnotetext} +\def\blfootnote{\gdef\@thefnmark{\relax}\@footnotetext} + % \def\blfootnote{\gdef\@thefnmark{}\@blfootnotetext} \long\def\@blfootnotetext#1{\insert\footins{% \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty @@ -316,7 +354,9 @@ initial delim = {}, store rule = \ekd@default@rule, initial rule = \rule{0.4\columnwidth}{0.4pt}, - noval norule = \def\ekd@default@rule{\mbox{}} + noval norule = \def\ekd@default@rule{\mbox{}}, + store lang = \ekd@singleapp@lang, + initial lang = \ltx@ifpackageloaded{babel}{\languagename}{} } \NewDocumentCommand{\SetApparatus}{m}{ \ekvset{default@app}{#1} @@ -327,6 +367,8 @@ \NewDocumentCommand{\SetBeginApparatus}{m}{\edef\ekd@begin@apparatus{#1}} \NewDocumentCommand{\SetEndApparatus}{m}{\edef\ekd@end@apparatus{#1}} \NewDocumentCommand{\SetUnitDelimiter}{m}{\def\ekd@unit@delim{#1}} +\NewDocumentCommand{\SetApparatusLanguage}{m}{% + \def\ekd@singleapp@lang{#1}} \newif\iffootnoterule \footnoteruletrue \let\dflt@footnoterule\footnoterule @@ -348,43 +390,65 @@ \def\ekd@default@rule{#1}% \fi} \newcommand*{\NLS}{% - \par% - \nobreak% - \vspace{-\parskip}% - \noindent% - \ignorespaces} + \nobreak\@normalcr\relax + % \par + % \nobreak + % \vspace{-\parskip}% + % \leavevmode + % \noindent + % \ignorespaces +} \newif\ifsubsq@unit \subsq@unittrue \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 } \def\add@apparatus{% \test@apparatus% @@ -403,8 +467,8 @@ {\luadirect{tex.sprint(ekdosis.mdvappend(\luastringO{#2}))}} {\luadirect{tex.sprint(ekdosis.mdvappend(\luastringO{#2}, \luastringO{#1}))}}} -\def\outerlinenumbers{ - \def\makeLineNumberRunning{ +\def\outerlinenumbers{% + \def\makeLineNumberRunning{% \checkoddpage \ifoddpage \linenumberfont\hskip\linenumbersep\hskip\textwidth @@ -412,10 +476,10 @@ \else \hss\linenumberfont\LineNumber\hskip\linenumbersep \fi - } + }% } -\def\innerlinenumbers{ - \def\makeLineNumberRunning{ +\def\innerlinenumbers{% + \def\makeLineNumberRunning{% \checkoddpage \ifoddpage \hss\linenumberfont\LineNumber\hskip\linenumbersep @@ -423,9 +487,10 @@ \linenumberfont\hskip\linenumbersep\hskip\textwidth \hbox to\linenumberwidth{\hss\LineNumber}\hss \fi - } + }% } \newif\ifekd@pagelineation +\newif\ifekd@pagevlineation \NewDocumentCommand{\ekdatbegshihook}{}{% \ifekd@pagelineation\resetlinenumber\fi } @@ -436,11 +501,17 @@ document = \ekd@pagelineationfalse}, unknown-choice lineation = \PackageError{ekdosis}{unknown lineation=#1}{`lineation' must be either `page' or `document'.}, + choice vlineation = {page = \ekd@pagevlineationtrue, + document = \ekd@pagevlineationfalse}, + unknown-choice vlineation = \PackageError{ekdosis}{unknown + vlineation=#1}{`vlineation' must be either `page' or `document'.}, code modulonum = \chardef\c@linenumbermodulo#1\relax, noval modulo = \modulolinenumbers, - code vmodulonum = \if@pkg@verse\poemlines{#1}\fi, - initial vmodulonum = 1, - noval vmodulo = \if@pkg@verse\poemlines{5}\fi, + code vmodulo = \ifekd@memoir@loaded\linenumberfrequency{#1} + \else\if@pkg@poetry@verse\poemlines{#1}\fi\fi, + initial vmodulo = 1, + default vmodulo = 5, + bool continuousvnum = \if@continuous@vnum, choice numbers = {elided = \ekd@elidednumberstrue, full = \ekd@elidednumbersfalse}, unknown-choice numbers = \PackageError{ekdosis}{unknown @@ -452,7 +523,12 @@ outer = \outerlinenumbers}, unknown-choice margin = \PackageError{ekdosis}{unknown margin=#1}{`margin' must be either `left', `right', \MessageBreak - `inner' or `outer'} + `inner' or `outer'}, + choice vmargin = { + right = \if@pkg@poetry@verse\verselinenumbersright\fi, + left = \if@pkg@poetry@verse\verselinenumbersleft\fi}, + unknown-choice vmargin = \PackageError{ekdosis}{unknown + vmargin=#1}{`margin' must be either `left' ot `right'} } \NewDocumentCommand{\SetLineation}{m}{ \ekvset{ekd@lineation}{#1} @@ -484,34 +560,36 @@ = 0 \ifnum% - \getrefnumber{#1} + \pdf@strcmp{\getrefnumber{#1}}{\getrefnumber{#2}} = - \getrefnumber{#2} + 0 % \ifekd@mapps% \ifbool{subsq@unit@\ekdan@type}{% \ifnum% - \getrefnumber{#1} + \pdf@strcmp{\getrefnumber{#1}}{% + \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevnotelab())}}} = - \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevnotelab())}} + 0 \else - \LRnum{\getrefnumber{#1}}% issue the no + \LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi% }% - {\LRnum{\getrefnumber{#1}}}% issue the no + {\LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}}% issue the no \else \ifsubsq@unit% % \ifnum% - \getrefnumber{#1} + \pdf@strcmp{\getrefnumber{#1}}{% + \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevnotelab())}}} = - \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevnotelab())}} + 0 \else - \LRnum{\getrefnumber{#1}}% issue the no + \LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi % \else - \LRnum{\getrefnumber{#1}}% issue the no + \LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi \fi % @@ -519,17 +597,18 @@ \ifekd@elidednumbers \luadirect{tex.sprint(ekdosis.numrange(\luastring{\getrefnumber{#1}}, \luastring{\getrefnumber{#2}}))}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the nos \else \LRnum{\getrefnumber{#1}}--% - \LRnum{\getrefnumber{#2}}% issue the nos + \LRnum{\getrefnumber{#2}}\unexpanded\expandafter{\ekd@postrefnum}% issue the nos \fi \fi% \else \LRnum{\getrefnumber{#1}}--% \LRnum{\getpagerefnumber{#2}}.% - \LRnum{\getrefnumber{#2}}% issue pg and ln nos + \LRnum{\getrefnumber{#2}}\unexpanded\expandafter{\ekd@postrefnum}% issue pg and ln nos \fi% - }\unexpanded\expandafter{\ekd@postrefnum}% + }% } \def\current@ref{{%\textdir TLT% \unexpanded\expandafter{\ekd@refnumstyle}% @@ -540,33 +619,41 @@ = 0 \ifnum% - \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b} + \pdf@strcmp{% + \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + {\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}} = - \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e} + 0 % \ifekd@mapps% \ifbool{subsq@unit@\ekdan@type}{% \ifnum% - \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b} + \pdf@strcmp{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + {\getrefnumber{\luadirect{tex.sprint(ekdosis.getprevlnlab())}-b}} = - \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevlnlab())}-b} + 0 \else - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% issue the no + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi% - }{\LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}}% issue the no + }{\LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}}% issue the no \else \ifsubsq@unit% % \ifnum% - \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b} + \pdf@strcmp{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + {\getrefnumber{\luadirect{tex.sprint(ekdosis.getprevlnlab())}-b}} = - \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevlnlab())}-b} + 0 \else - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% issue the no + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi % \else - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% issue the no + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi \fi % @@ -574,18 +661,21 @@ \ifekd@elidednumbers \luadirect{tex.sprint(ekdosis.numrange( \luastring{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}, - \luastring{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}))}% issue the nos + \luastring{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}))}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the nos \else \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}--% - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% issue the nos + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the nos \fi \fi% \else \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}--% \LRnum{\getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}.% - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% issue pg and ln nos + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue pg and ln nos \fi% - }\unexpanded\expandafter{\ekd@postrefnum}% + }% } \ekvdefinekeys{lem}{ code wit = \def\ekdlr@wit{#1}, @@ -617,6 +707,13 @@ \NewDocumentCommand{\rdgGrp}{O{} > {\TrimSpaces } m}{% \luadirect{tex.sprint(ekdosis.removesp(\luastringN{#2}))}% } +\def\app@lang{% + \ifekd@mapps + \luadirect{tex.sprint(ekdosis.getapplang(\luastring{\ekdan@type}))}% + \else + \ekd@singleapp@lang + \fi +} \NewDocumentCommand{\lem}{O{} m}{% \ekd@isinlemtrue% \luadirect{ekdosis.dolnlab(\luastringN{#2})}% @@ -657,13 +754,15 @@ \ifdefined\ekdlr@alt% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi - {\textdir TRT\unexpanded\expandafter{\ekdlr@alt}}% + {\textdir TRT\unexpanded\expandafter{\ekd@lemmastyle}% + \unexpanded\expandafter{\ekdlr@alt}}% \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \else \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi - {\textdir TRT\unexpanded{#2}}% + {\textdir TRT\unexpanded\expandafter{\ekd@lemmastyle}% + \unexpanded{#2}}% \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \fi @@ -691,17 +790,21 @@ \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \ltx@ifpackageloaded{babel}% - {\noexpand\selectlanguage{\languagename}% - \unexpanded\expandafter{\ekdlr@alt}}% - {\unexpanded\expandafter{\ekdlr@alt}}% + {{\unexpanded\expandafter{\ekd@lemmastyle}% + \noexpand\selectlanguage{\app@lang}% + \unexpanded\expandafter{\ekdlr@alt}}}% + {\unexpanded\expandafter{\ekd@lemmastyle}% + \unexpanded\expandafter{\ekdlr@alt}}% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi \else \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \ltx@ifpackageloaded{babel}% - {{\noexpand\selectlanguage{\languagename}\unexpanded{#2}}}{% - {\unexpanded{#2}}}% + {{\unexpanded\expandafter{\ekd@lemmastyle}% + \noexpand\selectlanguage{\app@lang}% + \unexpanded{#2}}}{% + {\unexpanded\expandafter{\ekd@lemmastyle}\unexpanded{#2}}}% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi \fi @@ -743,13 +846,15 @@ \ifdefined\ekdlr@alt% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi - {\textdir TRT\unexpanded\expandafter{\ekdlr@alt}}% + {\textdir TRT\unexpanded\expandafter{\ekd@readingstyle}% + \unexpanded\expandafter{\ekdlr@alt}}% \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \else \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi - {\textdir TRT\unexpanded{#2}}% + {\textdir TRT\unexpanded\expandafter{\ekd@readingstyle}% + \unexpanded{#2}}% \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \fi @@ -768,17 +873,20 @@ \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \ltx@ifpackageloaded{babel}% - {\noexpand\selectlanguage{\languagename}% - \unexpanded\expandafter{\ekdlr@alt}}% - {\unexpanded\expandafter{\ekdlr@alt}}% + {{\unexpanded\expandafter{\ekd@readingstyle}% + \noexpand\selectlanguage{\app@lang}% + \unexpanded\expandafter{\ekdlr@alt}}}% + {\unexpanded\expandafter{\ekd@readingstyle}% + \unexpanded\expandafter{\ekdlr@alt}}% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi \else \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \ltx@ifpackageloaded{babel}% - {{\noexpand\selectlanguage{\languagename}\unexpanded{#2}}}{% - {\unexpanded{#2}}}% + {{\unexpanded\expandafter{\ekd@readingstyle}% + \noexpand\selectlanguage{\app@lang}\unexpanded{#2}}}{% + {\unexpanded\expandafter{\ekd@readingstyle}\unexpanded{#2}}}% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi \fi @@ -845,7 +953,8 @@ \fi% \current@ref@arg{\ekdn@labelb}{\ekdn@labele}%\hskip .25em \ifdefined\ekdn@lem% - {\textdir TRT\unexpanded\expandafter{\ekdn@lem}}% + {\textdir TRT\unexpanded\expandafter{\ekd@lemmastyle}% + \unexpanded\expandafter{\ekdn@lem}}% \unless\ifekdn@nosep \unexpanded\expandafter{\ekdn@sep}\fi \else\fi% @@ -861,14 +970,16 @@ \current@ref@arg{\ekdn@labelb}{\ekdn@labele}%\hskip .25em \ifdefined\ekdn@lem \ltx@ifpackageloaded{babel}% - {\noexpand\selectlanguage{\languagename}% + {{\unexpanded\expandafter{\ekd@lemmastyle}% + \noexpand\selectlanguage{\app@lang}% + \unexpanded\expandafter{\ekdn@lem}}}% + {\unexpanded\expandafter{\ekd@lemmastyle}% \unexpanded\expandafter{\ekdn@lem}}% - {\unexpanded\expandafter{\ekdn@lem}}% \unless\ifekdn@nosep \unexpanded\expandafter{\ekdn@sep}\fi \else\fi% \ltx@ifpackageloaded{babel}% - {{\noexpand\selectlanguage{\languagename}\unexpanded{#2}}}{% + {{\noexpand\selectlanguage{\app@lang}\unexpanded{#2}}}{% {\unexpanded{#2}}}}}% \ifekd@mapps% \unconditional@appin[\ekdan@type]{\note@contents}% @@ -894,7 +1005,11 @@ \ekvifdefinedNoVal{ekd@note}{post}{}{% \unexpanded\expandafter{\post@value}}% }% + \ifekd@mapps% + \append@app[\ekdan@type]{\note@contents}% + \else% \append@app{\note@contents}% + \fi% \egroup% } \NewDocumentCommand{\ekd@note@star}{O{} m}{% @@ -911,7 +1026,11 @@ \append@app{\note@contents}% \egroup% \else - \append@app{\unskip\footnote{#2}}% + \ifekd@mapps% + \append@app[\ekdan@type]{\note@contents}% + \else% + \append@app{\note@contents}% + \fi% \fi% } \NewDocumentCommand{\note@app}{s O{} +m}{% @@ -1147,13 +1266,52 @@ \fi \endgroup } -\if@pkg@verse -\verselinenumfont{\normalfont\footnotesize} +\newif\ifekd@test@vpnum +\newcounter{ekd@vpnum} +\globalcounter{ekd@vpnum} +\NewDocumentCommand{\test@vpnum}{}{% + \ifekd@test@vpnum + \edef\@tempa{\theekd@vpnum}% + \stepcounter{ekd@vpnum}% + \label{vpnum:\theekd@vpnum}% + \ifnum + \pdf@strcmp{\getpagerefnumber{vpnum:\@tempa}}% + {\getpagerefnumber{vpnum:\theekd@vpnum}} + = 0 + \else + \resetvlinenumber + \fi + \else + \label{vpnum:\theekd@vpnum}% + \global\ekd@test@vpnumtrue + \fi +} +\if@pkg@poetry@verse +\patchcmd{\start@vsline}{% + \ifaltindent}{% + \ifekd@pagevlineation\test@vpnum\fi + \ifaltindent}{}{} +\ekvdefinekeys{ekd@verse}{ + dimen width = \vwidth@val, + initial width = \linewidth, + code type = \def\type@value{#1}, +} +\ifekd@memoir@loaded + \linenumberfont{\normalfont\footnotesize} +\else + \verselinenumfont{\normalfont\footnotesize} +\fi \setcounter{poemline}{1} -\NewDocumentEnvironment{ekdverse}{O{\linewidth}}{% +\NewDocumentEnvironment{ekdverse}{!O{}}{% + \ekvset{ekd@verse}{#1}% + \if@continuous@vnum\setverselinenums{\thelinenumber}{0}\fi \nolinenumbers \let\linelabel\label - \stepcounter{verse@envctr}% + \ifekd@memoir@loaded + \refstepcounter{verse}% + \else + \stepcounter{verse@envctr}% + \fi \addtocounter{poemline}{-1}\refstepcounter{poemline}% \setcounter{vslineno}{1}% \let\\=\@vscentercr @@ -1164,22 +1322,23 @@ \setlength{\itemsep}{0pt}% \setlength{\topsep}{0pt}% \setlength{\partopsep}{0pt}% - \ifdim #1 < \linewidth + \ifdim\vwidth@val < \linewidth \rightmargin \z@ \setlength{\leftmargin}{\linewidth}% - \addtolength{\leftmargin}{-#1}% + \addtolength{\leftmargin}{-\vwidth@val}% \addtolength{\leftmargin}{-0.5\leftmargin}% \else \rightmargin \leftmargin \fi \addtolength{\leftmargin}{\vindent}}% - \item[]% + \item[]\ifekd@pagevlineation\test@vpnum\fi% } -{\endlist} +{\endlist + \if@continuous@vnum\resetlinenumber[\thepoemline]\fi} \else \newlength{\ekdverseindentlength} \setlength{\ekdverseindentlength}{\parindent} -\NewDocumentEnvironment{ekdverse}{O{\ekdverseindentlength}}{ +\NewDocumentEnvironment{ekdverse}{!O{\ekdverseindentlength}}{ \begin{list}{}{% \setlength{\leftmargin}{#1} \setlength{\itemsep}{0pt} @@ -1189,7 +1348,21 @@ \item[] }{\end{list}} \fi +\NewDocumentCommand{\resetvlinenumber}{O{1}}{% + \if@pkg@poetry@verse + \setverselinenums{#1}{0}% + \fi +} +\ekvdefinekeys{ekd@stanza}{ + code type = \def\type@value{#1} +} +\NewDocumentEnvironment{ekdstanza}{!O{}}{% + \leavevmode\unskip + \ekvset{ekd@stanza}{#1}% + \ignorespaces +}{} \NewDocumentEnvironment{ekdpar}{}{\par}{\par} +\IfFileExists{\jobname-ekd.cfg}{\input{\jobname-ekd.cfg}}{} \endinput %% %% End of file `ekdosis.sty'. |