summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty')
-rw-r--r--Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty371
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'.