diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty | 174 |
1 files changed, 152 insertions, 22 deletions
diff --git a/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty b/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty index 3e8a82fbb1f..3e8094f9c14 100644 --- a/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty +++ b/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty @@ -41,7 +41,7 @@ %% Running "make inst" installs the files in the user's TeX tree. \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{ekdosis} - [2020/08/14 v1.0 Typesetting TEI xml compliant critical editions] + [2020/11/04 v1.1 Typesetting TEI xml-compliant critical editions] \RequirePackage{iftex} \RequireLuaTeX \RequirePackage{expkv-opt} @@ -64,6 +64,7 @@ initial divs = ekdosis, unknown-choice divs = \PackageError{ekdosis}{unknown divs=#1}{`divs' must be either `ekdosis' or `latex'.}, + bool verse = \if@pkg@verse, choice parnotes = {false = {}, true = {\@pkg@parnotestrue}, roman = {\@pkg@parnotestrue\@parnotesromantrue}}, @@ -86,7 +87,6 @@ \ekvoProcessLocalOptions{ekdosis} \RequirePackage{luacode} \RequirePackage{paracol} -\RequirePackage{xparse} \RequirePackage{etoolbox} \RequirePackage{lineno} \RequirePackage{keyfloat} @@ -94,8 +94,11 @@ \RequirePackage{zref-user} \RequirePackage{zref-abspage} \RequirePackage{ltxcmds} -\RequirePackage{atbegshi} +\RequirePackage{pdftexcmds} \RequirePackage{ifoddpage} +\if@pkg@verse + \RequirePackage{verse} +\fi \if@pkg@parnotes \RequirePackage{parnotes} \fi @@ -145,11 +148,32 @@ \luastringN{#4})} } \@onlypreamble\DeclareHand -\NewDocumentCommand{\DeclareScholar}{m m}{ - \luadirect{ekdosis.newscholar(\luastringN{#1}, - \luastringN{#2})} +\ekvdefinekeys{ekd@scholar}{ + store rawname = \rawname@value, + store forename = \forename@value, + store surname = \surname@value, + store addname = \addname@value, + store note = \note@value } +\NewDocumentCommand{\DeclareScholar}{m m O{}}{% + \bgroup + \ekvset{ekd@scholar}{#3} + \luadirect{ekdosis.newscholar( + \luastringN{#1}, + \luastringN{#2}, + \luastringO{\rawname@value}, + \luastringO{\forename@value}, + \luastringO{\surname@value}, + \luastringO{\addname@value}, + \luastringO{\note@value})} + \egroup + } \@onlypreamble\DeclareScholar +\NewDocumentCommand{\DeclareSource}{m m}{ + \luadirect{ekdosis.newsource(\luastringN{#1}, + \luastringN{#2})} +} +\@onlypreamble\DeclareSource \NewDocumentCommand{\DeclareShorthand}{m m m}{ \luadirect{ekdosis.newshorthand(\luastringN{#1}, \luastringN{#2}, @@ -189,17 +213,17 @@ \luastringN{#4})} } } -\NewDocumentCommand{\TeXtoTEIPatt}{m m}{% +\NewDocumentCommand{\TeXtoTEIPat}{m m}{% \luadirect{ekdosis.newpatttotag(\luastringN{#1}, \luastringN{#2})} } \NewDocumentCommand{\SetTEIFileName}{m}{ \luadirect{ekdosis.setteifilename(\luastringN{#1})} } \@onlypreamble\SetTEIFileName -\NewDocumentCommand{\SetxmlBibResource}{m}{ - \luadirect{ekdosis.setxmlbibresource(\luastringN{#1})} +\NewDocumentCommand{\AddxmlBibResource}{m}{ + \luadirect{ekdosis.addxmlbibresource(\luastringN{#1})} } -\@onlypreamble\SetxmlBibResource +\@onlypreamble\AddxmlBibResource \newif\ifekd@mapps \ekvdefinekeys{ekd@newapp}{ choice direction = {LR = \def\direction@val{LR}, @@ -236,6 +260,10 @@ \egroup } \@onlypreamble\DeclareApparatus +\NewDocumentCommand{\addentries}{O{\ekdan@type} m}{% + \luadirect{ekdosis.addto_bagunits(\luastringO{#1}, \luastringN{#2})}% + \ignorespaces +} \newbool{do@app} \newif\ifekd@state \newif\ifekd@isinapp @@ -327,6 +355,7 @@ \ignorespaces} \newif\ifsubsq@unit \subsq@unittrue +\newif\ifekd@inside@app \def\add@@apparatus{% \if@pkg@parnotes\parnotes\else\fi% \if@pkg@footins% @@ -337,8 +366,10 @@ \if@parnotesroman% \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi% \parnoteclear\else\fi% + \ekd@inside@apptrue \footnotesize\apparatus\unless\ifekd@mapps\ekd@end@apparatus\fi% - \if@pkg@parnotes\parnotes\parnotereset\else\fi% + \ekd@inside@appfalse + \if@pkg@parnotes\parnotes\parnotereset\else\fi }% \egroup% \fi% @@ -348,7 +379,9 @@ \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@inside@appfalse \if@pkg@parnotes\parnotes\parnotereset\else\fi% }% \fi% @@ -396,7 +429,7 @@ \NewDocumentCommand{\ekdatbegshihook}{}{% \ifekd@pagelineation\resetlinenumber\fi } -\AtBeginShipout{\ekdatbegshihook} +\AddToHook{shipout/before}{\ekdatbegshihook} \newif\ifekd@elidednumbers \ekvdefinekeys{ekd@lineation}{ choice lineation = {page = \ekd@pagelineationtrue, @@ -405,6 +438,9 @@ lineation=#1}{`lineation' 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, choice numbers = {elided = \ekd@elidednumberstrue, full = \ekd@elidednumbersfalse}, unknown-choice numbers = \PackageError{ekdosis}{unknown @@ -429,6 +465,7 @@ \NewDocumentCommand{\SetDefaultApparatus}{m}{% \ekvset{appnote}{type=#1}} \NewDocumentCommand{\app}{O{} > { \TrimSpaces } +m}{% + \leavevmode \begingroup \ekvset{appnote}{#1}% \ekd@isinapptrue% @@ -443,9 +480,9 @@ \def\current@ref@arg#1#2{{%\textdir TLT% \unexpanded\expandafter{\ekd@refnumstyle}% \ifnum% - \getpagerefnumber{#1} + \pdf@strcmp{\getpagerefnumber{#1}}{\getpagerefnumber{#2}} = - \getpagerefnumber{#2} + 0 \ifnum% \getrefnumber{#1} = @@ -497,9 +534,11 @@ \def\current@ref{{%\textdir TLT% \unexpanded\expandafter{\ekd@refnumstyle}% \ifnum% - \getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b} + \pdf@strcmp{% + \getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + {\getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}} = - \getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e} + 0 \ifnum% \getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b} = @@ -550,6 +589,8 @@ } \ekvdefinekeys{lem}{ code wit = \def\ekdlr@wit{#1}, + code source = \def\ekdlr@source{#1}, + code resp = \def\ekdlr@resp{#1}, code alt = \def\ekdlr@alt{#1}, code pre = \def\ekdlr@pre{#1}, code post = \def\ekdlr@post{#1}, @@ -563,6 +604,8 @@ } \ekvdefinekeys{rdg}{ code wit = \def\ekdlr@wit{#1}, + code source = \def\ekdlr@source{#1}, + code resp = \def\ekdlr@resp{#1}, code alt = \def\ekdlr@alt{#1}, code pre = \def\ekdlr@pre{#1}, code post = \def\ekdlr@post{#1}, @@ -571,6 +614,9 @@ store type = \ekdlr@type, bool nordg = \ifekdr@nordg } +\NewDocumentCommand{\rdgGrp}{O{} > {\TrimSpaces } m}{% + \luadirect{tex.sprint(ekdosis.removesp(\luastringN{#2}))}% +} \NewDocumentCommand{\lem}{O{} m}{% \ekd@isinlemtrue% \luadirect{ekdosis.dolnlab(\luastringN{#2})}% @@ -623,6 +669,8 @@ \fi \ifdefined\ekdlr@postwit% \space\unexpanded\expandafter{\ekdlr@postwit}\else\fi + \ifdefined\ekdlr@resp\space\getsiglum{\ekdlr@resp}\else\fi + \ifdefined\ekdlr@source\space\getsiglum{\ekdlr@source}\else\fi \ifdefined\ekdlr@wit\space\getsiglum{\ekdlr@wit}\else\fi \ifdefined\ekdlr@prewit% \space\unexpanded\expandafter{\ekdlr@prewit}\space\else\fi @@ -660,6 +708,8 @@ \ifdefined\ekdlr@prewit% \space\unexpanded\expandafter{\ekdlr@prewit}\space\else\fi \ifdefined\ekdlr@wit\space\getsiglum{\ekdlr@wit}\else\fi + \ifdefined\ekdlr@source\space\getsiglum{\ekdlr@source}\else\fi + \ifdefined\ekdlr@resp\space\getsiglum{\ekdlr@resp}\else\fi \ifdefined\ekdlr@postwit% \space\unexpanded\expandafter{\ekdlr@postwit}\else\fi \ifekdl@nosep\else\unexpanded\expandafter{\ekdl@sep}\fi @@ -705,6 +755,8 @@ \fi \ifdefined\ekdlr@postwit% \space\unexpanded\expandafter{\ekdlr@postwit}\else\fi + \ifdefined\ekdlr@resp\space\getsiglum{\ekdlr@resp}\else\fi + \ifdefined\ekdlr@source\space\getsiglum{\ekdlr@source}\else\fi \ifdefined\ekdlr@wit\space\getsiglum{\ekdlr@wit}\else\fi \ifdefined\ekdlr@prewit% \space\unexpanded\expandafter{\ekdlr@prewit}\space\else\fi @@ -733,6 +785,8 @@ \ifdefined\ekdlr@prewit% \space\unexpanded\expandafter{\ekdlr@prewit}\space\else\fi \ifdefined\ekdlr@wit\space\getsiglum{\ekdlr@wit}\else\fi + \ifdefined\ekdlr@source\space\getsiglum{\ekdlr@source}\else\fi + \ifdefined\ekdlr@resp\space\getsiglum{\ekdlr@resp}\else\fi \ifdefined\ekdlr@postwit% \space\unexpanded\expandafter{\ekdlr@postwit}\else\fi }% @@ -756,7 +810,7 @@ initial sep = \ekdsep } \NewDocumentCommand{\note@noapp}{O{} +m}{% - \null + \leavevmode \bgroup% \ekvset{note}{#1}% \stepcounter{ekd@lab}% @@ -834,10 +888,10 @@ \bgroup% \ekvset{ekd@note}{#1}% \edef\note@contents{% - \ekvifdefinedNoVal{note}{pre}{}{% + \ekvifdefinedNoVal{ekd@note}{pre}{}{% \unexpanded\expandafter{\pre@value}}% {\unexpanded{#2}}% - \ekvifdefinedNoVal{note}{post}{}{% + \ekvifdefinedNoVal{ekd@note}{post}{}{% \unexpanded\expandafter{\post@value}}% }% \append@app{\note@contents}% @@ -848,10 +902,10 @@ \bgroup% \ekvset{ekd@note}{#1}% \edef\note@contents{% - \ekvifdefinedNoVal{note}{pre}{}{% + \ekvifdefinedNoVal{ekd@note}{pre}{}{% \unexpanded\expandafter{\pre@value}}% \unskip\noexpand\parnote{\unexpanded{#2}}% - \ekvifdefinedNoVal{note}{post}{}{% + \ekvifdefinedNoVal{ekd@note}{post}{}{% \unexpanded\expandafter{\post@value}}% }% \append@app{\note@contents}% @@ -883,6 +937,51 @@ \fi% \fi% } +\ekvdefinekeys{ekd@corr}{ + store suppbegin = \suppb@value, + store suppend = \suppe@value, + store delbegin = \delb@value, + store delend = \dele@value, + store sicbegin = \sicb@value, + store sicend = \sice@value, + store gapmark = \gapm@value, + initial suppbegin = \ifbool{al@rlmode}{>}{<}, + initial suppend = \ifbool{al@rlmode}{<}{>}, + initial delbegin = \ifbool{al@rlmode}{\}}{\{}, + initial delend = \ifbool{al@rlmode}{\{}{\}}, + initial sicbegin = \dag, + initial sicend = \dag, + initial gapmark = *** +} +\NewDocumentCommand{\supplied}{m}{% + \ifekd@inside@app + #1% + \else + \suppb@value #1\suppe@value + \fi +} +\NewDocumentCommand{\surplus}{m}{% + \ifekd@inside@app + #1% + \else + \delb@value #1\dele@value + \fi +} +\NewDocumentCommand{\sic}{s m}{% + \ifekd@inside@app + #2% + \else + \IfBooleanTF{#1} + {\sicb@value #2} + {\sicb@value #2\sice@value}% + \fi +} +\NewDocumentCommand{\gap}{m}{% + \gapm@value +} +\NewDocumentCommand{\SetCritSymbols}{m}{ + \ekvset{ekd@corr}{#1} +} \NewDocumentCommand{\apparatus}{}{% \luadirect{tex.sprint(ekdosis.appout())}} \NewDocumentCommand{\test@apparatus}{}{% @@ -1048,9 +1147,39 @@ \fi \endgroup } +\if@pkg@verse +\verselinenumfont{\normalfont\footnotesize} +\setcounter{poemline}{1} +\NewDocumentEnvironment{ekdverse}{O{\linewidth}}{% + \nolinenumbers + \let\linelabel\label + \stepcounter{verse@envctr}% + \addtocounter{poemline}{-1}\refstepcounter{poemline}% + \setcounter{vslineno}{1}% + \let\\=\@vscentercr + \list{}{\itemsep \z@ + \itemindent -\vindent% + \listparindent\itemindent + \parsep \stanzaskip + \setlength{\itemsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% + \ifdim #1 < \linewidth + \rightmargin \z@ + \setlength{\leftmargin}{\linewidth}% + \addtolength{\leftmargin}{-#1}% + \addtolength{\leftmargin}{-0.5\leftmargin}% + \else + \rightmargin \leftmargin + \fi + \addtolength{\leftmargin}{\vindent}}% + \item[]% +} +{\endlist} +\else \newlength{\ekdverseindentlength} \setlength{\ekdverseindentlength}{\parindent} -\newenvironment*{ekdverse}[1][\ekdverseindentlength]{ +\NewDocumentEnvironment{ekdverse}{O{\ekdverseindentlength}}{ \begin{list}{}{% \setlength{\leftmargin}{#1} \setlength{\itemsep}{0pt} @@ -1059,6 +1188,7 @@ } \item[] }{\end{list}} +\fi \NewDocumentEnvironment{ekdpar}{}{\par}{\par} \endinput %% |