summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/ekdosis
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2021-04-04 01:53:22 +0000
committerNorbert Preining <preining@logic.at>2021-04-04 01:53:22 +0000
commitc4c34aedd2080aa9180cbd259e124e491aecfd96 (patch)
tree4d9515b0f761dd745b9b153d2f8fdfb576847f17 /Master/texmf-dist/tex/lualatex/ekdosis
parentb33e03e753e3f34613edf68fbcece8772a5e859a (diff)
ekdosis (4apr21)
git-svn-id: svn://tug.org/texlive/trunk@58721 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/ekdosis')
-rw-r--r--Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.lua185
-rw-r--r--Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.sty371
2 files changed, 415 insertions, 141 deletions
diff --git a/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.lua b/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.lua
index 55d42fbc7bc..4916d9c586b 100644
--- a/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.lua
+++ b/Master/texmf-dist/tex/lualatex/ekdosis/ekdosis.lua
@@ -2,7 +2,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>
@@ -52,14 +52,17 @@ local app = lpeg.Cs("app")
local lemrdg = lpeg.Cs(lpeg.Cs("lem") + lpeg.Cs("rdg"))
local note = lpeg.Cs("note")
local lnbrk = lpeg.Cs("\\\\")
-local poemline = lpeg.Cs(lnbrk * bsqbrackets^-1)
-local endpoem = lpeg.Cs(lnbrk * lpeg.S("*!") * bsqbrackets^-1)
+local poemline = lpeg.Cs(lnbrk * spcenc^-1 * lpeg.S("*!")^-1 * bsqbrackets^-1 * spcenc^-1)
+local poemlinebreak = lpeg.Cs(lnbrk * spcenc^-1 * lpeg.P("&gt;") * bsqbrackets^-1 * spcenc^-1)
+local linegroup = lpeg.Cs{ "<lg" * ((1 - lpeg.S"<>") + lpeg.V(1))^0 * ">" }
+local bclinegroup = lpeg.Cs(linegroup + lpeg.P("</lg>"))
+local endpoem = lpeg.Cs(lnbrk * lpeg.S("*!") * bsqbrackets^-1) -- not used
local sections = lpeg.Cs(lpeg.P("book") + lpeg.P("part") + lpeg.P("chapter")
+ lpeg.P("section") + lpeg.P("subsection")
+ lpeg.P("subsubsection"))
local par = lpeg.P(lpeg.P("\\par") * spce^0)
-local parb = lpeg.P(lpeg.Cs("\\p@rb") * spce^0)
-local para = lpeg.P(lpeg.Cs("\\p@ra") * spce^0)
+local parb = lpeg.P(lpeg.P("\\p@rb") * spce^0)
+local para = lpeg.P(lpeg.P("\\p@ra") * spce^0)
local labelrefcmds = lpeg.Cs(lpeg.P("label")
+ lpeg.P("linelabel")
+ lpeg.P("lineref")
@@ -401,28 +404,37 @@ local texpatttotags = {
{a="\\addentries%s+%[(.-)%]{(.-)}", b=""},
{a="\\addentries%s+{(.-)}", b=""},
{a="\\setverselinenums%s+{(.-)}{(.-)}", b=""},
+ {a="\\resetvlinenumber%s+%[(.-)%]", b=""},
+ {a="\\resetvlinenumber%s+", b=""},
{a="\\resetlinenumber%s+%[(.-)%]", b=""},
{a="\\resetlinenumber%s+", b=""},
+ {a="\\indentpattern%s+{(.-)}", b=""},
+ {a="\\settowidth%s+{(.-)}{(.-)}", b=""},
{a="\\poemlines%s+{(.-)}", b=""},
{a="\\pagebreak%s+%[[1-4]%]", b=""},
{a="\\pagebreak%s+", b=""},
{a="\\altrfont%s+", b=""},
{a="\\mbox%s+{(.-)}", b="%1"},
{a="\\LR%s+{(.-)}", b="%1"},
- {a="\\RL%s+{(.-)}", b="%1"}
+ {a="\\RL%s+{(.-)}", b="%1"},
+ {a="\\%=%=%=%s?", b="—"},
+ {a="\\%-%-%-%s?", b="—"},
+ {a="\\%=%=%s?", b="–"},
+ {a="\\%-%-%s?", b="–"},
+ {a="\\%=%/%s?", b="‐"},
+ {a="\\%-%/%s?", b="‐"},
+ {a="\\vin%s+", b=""}
}
local envtotags = {
{a="flushright", b="p", c=" rend=\"align(right)\""},
{a="flushleft", b="p", c=" rend=\"align(left)\""},
{a="quotation", b="quote", c=""},
- {a="ekdverse", b="lg", c=""},
{a="txarabtr", b="p", c=" xml:lang=\"ar-Latn\" type=\"transliterated\""},
{a="quoting", b="quote", c=""},
{a="ekdpar", b="p", c=""},
{a="txarab", b="p", c=" xml:lang=\"arb\""},
{a="center", b="p", c=" rend=\"align(center)\""},
- {a="verse", b="lg", c=""},
{a="arab", b="p",
c=" xml:lang=\"ar-Latn\" type=\"transliterated\" subtype=\"arabtex\""}
}
@@ -457,8 +469,16 @@ function ekdosis.newpatttotag(pat, repl)
pat = string.gsub(pat, "([%[%]])", "%%%1")
pat = string.gsub(pat, "%#[1-9]", "(.-)")
repl = string.gsub(repl, "%#([1-9])", "%%%1")
- table.insert(texpatttotags, { a = pat, b = repl })
- table.sort(texpatttotags, function(a ,b) return(#a.a > #b.a) end)
+ if isintable(texpatttotags, pat)
+ then
+ local index = get_a_index(pat, texpatttotags)
+ table.remove(texpatttotags, index)
+ table.insert(texpatttotags, { a = pat, b = repl })
+ table.sort(texpatttotags, function(a ,b) return(#a.a > #b.a) end)
+ else
+ table.insert(texpatttotags, { a = pat, b = repl })
+ table.sort(texpatttotags, function(a ,b) return(#a.a > #b.a) end)
+ end
return true
end
@@ -632,32 +652,69 @@ local function relocate_notes(str)
end
local function linestotei(str)
--- str = "\n<l>"..str
- str = string.gsub(str, "^%s?(.-)\\\\[%!%*]?%s?$", "\n<l>%1</l>\n")
--- str = gsub(str, endpoem, "</l>\n")
- str = gsub(str, poemline * spcenc^-1 * lpeg.P("&gt;"), "\n<lb/>")
- str = gsub(str, poemline * spcenc^-1, "</l>\n<l>")
--- str = str.."</l>\n"
+ if not string.find(str, "^%s?<lg")
+ then
+ str = "\n<l>"..str
+ end
+ str = gsub(str, poemline * spcenc^0 * bclinegroup, "</l>\n%2")
+ str = gsub(str, linegroup * -(spcenc^0 * bclinegroup), "%1\n<l>")
+ str = gsub(str, lpeg.Cs("</lg>") * -(spcenc^0 * (bclinegroup + -1)), "%1\n<l>")
+ -- str = gsub(str, poemline * spcenc^-1 * -1, "</l>\n")
+ str = gsub(str, poemlinebreak, "<lb/> ")
+ -- str = gsub(str, poemline * spcenc^-1 * lpeg.Cs("<lg"), "</l>%2")
+ -- str = gsub(str, lpeg.Cs("</lg>") * spcenc^1 * -lpeg.P("<l"), "%1\n<l>")
+ str = gsub(str, poemline, "</l>\n<l>")
+ return str
+end
+
+local function stanzatotei(str)
+ str = string.gsub(str, "\\begin%s?%{ekdstanza%}(%b[])(.-)\\end%s?%{ekdstanza%}", function(opt, arg)
+ arg = string.gsub(arg, "\\par%s?", "")
+ opt = string.sub(opt, 2, -2)
+ teitype = get_attr_value(opt, "type")
+ if teitype ~= "" then teitype = " type=\""..teitype.."\"" else end
+ if opt == ""
+ then
+ return string.format("<lg>%s</lg>", arg)
+ else
+ return string.format("<lg%s>%s</lg>", teitype, arg)
+ end
+ end)
+ str = string.gsub(str, "\\begin%s?%{ekdstanza%}(.-)\\end%s?%{ekdstanza%}", function(arg)
+ arg = string.gsub(arg, "\\par%s?", "")
+ return string.format("<lg>%s</lg>", arg)
+ end)
return str
end
-- better use lpeg: look into this later
local function versetotei(str)
- str = string.gsub(str, "(\\begin%s?%{ekdverse%})(%b[])(.-)(\\end%s?%{ekdverse%})", function(benv, opt, arg, eenv)
- arg = linestotei(arg)
- return string.format("%s%s%s%s", benv, opt, arg, eenv)
+ str = string.gsub(str, "\\begin%s?%{ekdverse%}(%b[])(.-)\\end%s?%{ekdverse%}", function(opt, arg)
+ arg = string.gsub(arg, "\\par%s?", "")
+ arg = string.gsub(arg, "\\begin%s?%{patverse%*?%}", "")
+ arg = string.gsub(arg, "\\end%s?%{patverse%*?%}", "")
+ arg = string.gsub(arg, "\\indentpattern%s?%b{}", "")
+ opt = string.sub(opt, 2, -2)
+ teitype = get_attr_value(opt, "type")
+ if teitype ~= "" then teitype = " type=\""..teitype.."\"" else end
+ if opt == ""
+ then
+ return "\\p@rb "..linestotei(string.format("<lg>%s</lg>", arg)).."\\p@ra "
+ else
+ return "\\p@rb "..linestotei(string.format("<lg%s>%s</lg>", teitype, arg)).."\\p@ra "
+ end
end)
- str = string.gsub(str, "(\\begin%s?%{ekdverse%})(.-)(\\end%s?%{ekdverse%})", function(benv, arg, eenv)
- arg = linestotei(arg)
- return string.format("%s%s%s", benv, arg, eenv)
+ str = string.gsub(str, "\\begin%s?%{ekdverse%}(.-)\\end%s?%{ekdverse%}", function(arg)
+ arg = string.gsub(arg, "\\par%s?", "")
+ return "\\p@rb "..linestotei(string.format("<lg>%s</lg>", arg)).."\\p@ra "
end)
- str = string.gsub(str, "(\\begin%s?%{verse%})(%b[])(.-)(\\end%s?%{verse%})", function(benv, opt, arg, eenv)
- arg = linestotei(arg)
- return string.format("%s%s%s%s", benv, opt, arg, eenv)
+ str = string.gsub(str, "\\begin%s?%{verse%}%b[](.-)\\end%s?%{verse%}", function(arg)
+ arg = string.gsub(arg, "\\par%s?", "")
+ return "\\p@rb "..linestotei(string.format("<lg>%s</lg>", arg)).."\\p@ra "
end)
- str = string.gsub(str, "(\\begin%s?%{verse%})(.-)(\\end%s?%{verse%})", function(benv, arg, eenv)
- arg = linestotei(arg)
- return string.format("%s%s%s", benv, arg, eenv)
+ str = string.gsub(str, "\\begin%s?%{verse%}(.-)\\end%s?%{verse%}", function(arg)
+ arg = string.gsub(arg, "\\par%s?", "")
+ return "\\p@rb "..linestotei(string.format("<lg>%s</lg>", arg)).."\\p@ra "
end)
return str
end
@@ -1128,7 +1185,7 @@ local function close_ekddivs_in_between(str)
end
for ndivi = 1, maxdepth
do
- str = string.gsub(str, "(<div .-depth%=\")("..ndivi..")(\".->)(.-)(<div .-depth%=\")(%d)(\".->)",
+ str = string.gsub(str, "(<div [^%>]-[Dd]epth%=\")("..ndivi..")(\".->)(.-)(<div [^%>]-depth%=\")(%d)(\".->)",
function(bdivi, ndivi, edivi, between, bdivii, ndivii, edivii)
local firstdiv = ndivi
local lastdiv = ndivii
@@ -1145,11 +1202,17 @@ local function close_ekddivs_in_between(str)
firstdivindex = firstdivindex - 1
end
end
+ bdivii = string.gsub(bdivii, "depth", "Depth")
return string.format("%s%s%s%s%s%s%s%s",
- bdivi, ndivi, edivi, between, closedivs, bdivii, ndivii, edivii)
+ bdivi, ndivi, edivi, between,
+ closedivs, bdivii, ndivii, edivii)
end)
end
- str = string.gsub(str, "(<div.-)(%sdepth%=\"%d\")(.->)", "%1%3")
+ return str
+end
+
+local function clean_ekddivs(str)
+ str = string.gsub(str, "(<div.-)(%s[Dd]epth%=\"%d\")(.->)", "%1%3")
used_ndivs = {}
return str
end
@@ -1157,7 +1220,7 @@ end
local function close_ndivs_in_between(str)
for ndivi = 1, 6
do
- str = string.gsub(str, "(<div)("..ndivi..")(.->)(.-)(<div)([1-6])(.->)",
+ str = string.gsub(str, "(<[Dd]iv)("..ndivi..")(.->)(.-)(<div)([1-6])(.->)",
function(bdivi, ndivi, edivi, between, bdivii, ndivii, edivii)
local firstdiv = ndivi
local lastdiv = ndivii
@@ -1174,11 +1237,17 @@ local function close_ndivs_in_between(str)
firstdivindex = firstdivindex - 1
end
end
+ bdivii = string.gsub(bdivii, "div", "Div")
return string.format("%s%s%s%s%s%s%s%s",
- bdivi, ndivi, edivi, between, closedivs, bdivii, ndivii, edivii)
-
+ bdivi, ndivi, edivi, between,
+ closedivs, bdivii, ndivii, edivii)
end)
end
+ return str
+end
+
+local function clean_latexdivs(str)
+ str = string.gsub(str, "(<Div)([1-6])(.->)", "<div%2%3")
used_ndivs = {}
return str
end
@@ -1191,6 +1260,7 @@ local function textotei(str)
str = rdgGrp_totei(str)
str = lem_rdg_totei(str)
str = relocate_notes(str)
+ str = stanzatotei(str)
str = versetotei(str)
str = envtotei(str)
str = ekddivs_totei(str)
@@ -1203,9 +1273,13 @@ local function textotei(str)
then
str = close_ekddivs_at_end(str)
str = close_ekddivs_in_between(str)
+ str = close_ekddivs_in_between(str)
+ str = clean_ekddivs(str)
else
str = close_ndivs_at_end(str)
str = close_ndivs_in_between(str)
+ str = close_ndivs_in_between(str)
+ str = clean_latexdivs(str)
end
return str
end
@@ -1709,7 +1783,8 @@ function ekdosis.newapparatus(teitype,
appsep,
appbhook,
appehook,
- applimit)
+ applimit,
+ applang)
if isintable(apparatuses, teitype)
then
tex.print("\\unexpanded{\\PackageWarning{ekdosis}{\""
@@ -1723,12 +1798,23 @@ function ekdosis.newapparatus(teitype,
sep = appsep,
bhook = appbhook,
ehook = appehook,
- limit = applimit})
+ limit = applimit,
+ lang = applang})
end
bagunits[teitype] = 1
return true
end
+function ekdosis.getapplang(teitype)
+ i = get_a_index(teitype, apparatuses)
+ if apparatuses[i].lang ~= ""
+ then
+ return apparatuses[i].lang
+ else
+ return "\\languagename"
+ end
+end
+
function ekdosis.getappdelim(str)
for i = 1,#apparatuses
do
@@ -1824,7 +1910,7 @@ function ekdosis.appout()
local output = {}
if next(apparatuses) == nil then
-- table.insert(output, "BEGIN")
- table.insert(output, "\\noindent\\csname ekd@default@rule\\endcsname\\NLS")
+ table.insert(output, "\\csname ekd@default@rule\\endcsname\\NLS")
table.insert(output, "\\csname ekd@begin@apparatus\\endcsname\\ignorespaces")
-- table.insert(output, "\\noindent ")
for i in string.gmatch(t,
@@ -1839,6 +1925,7 @@ function ekdosis.appout()
end
-- table.insert(output, "END")
else
+ local appinserted = false
local n = 1
while apparatuses[n]
do
@@ -1853,16 +1940,19 @@ function ekdosis.appout()
table.insert(output, "\\bgroup{}")
if apparatuses[n].direction == "LR"
then
- table.insert(output, "\\pardir TLT\\textdir TLT{}")
+ table.insert(output, "\\pardir TLT\\leavevmode\\textdir TLT{}")
elseif apparatuses[n].direction == "RL"
then
- table.insert(output, "\\pardir TRT\\textdir TRT{}")
+ table.insert(output, "\\pardir TRT\\leavevmode\\textdir TRT{}")
end
if apparatuses[n].rule == "none"
then
if n > 1
then
- table.insert(output, "\\NLS{}")
+ if appinserted
+ then
+ table.insert(output, "\\NLS{}")
+ end
else
table.insert(output, "\\noindent ")
end
@@ -1870,7 +1960,12 @@ function ekdosis.appout()
then
if n > 1
then
- table.insert(output, "\\NLS{}" .. apparatuses[n].rule .. "\\NLS{}")
+ if appinserted
+ then
+ table.insert(output, "\\NLS{}" .. apparatuses[n].rule .. "\\NLS{}")
+ else
+ table.insert(output, apparatuses[n].rule .. "\\NLS{}")
+ end
else
-- table.insert(output, "\\noindent ")
table.insert(output, apparatuses[n].rule .. "\\NLS{}")
@@ -1878,7 +1973,12 @@ function ekdosis.appout()
else
if n > 1
then
- table.insert(output, "\\NLS\\csname ekd@default@rule\\endcsname\\NLS{}")
+ if appinserted
+ then
+ table.insert(output, "\\NLS\\csname ekd@default@rule\\endcsname\\NLS{}")
+ else
+ table.insert(output, "\\csname ekd@default@rule\\endcsname\\NLS{}")
+ end
else
-- table.insert(output, "\\noindent ")
table.insert(output, "\\csname ekd@default@rule\\endcsname\\NLS{}")
@@ -1904,6 +2004,7 @@ function ekdosis.appout()
..curcol.."%-"..n..">")
do
table.insert(output, i)
+ appinserted = true
end
if apparatuses[n].ehook ~= ""
then
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'.