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.sty174
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
%%