From 0dc074bf8f05cc19dac70475375f81f42571c49c Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Thu, 2 Apr 2020 23:28:29 +0200 Subject: textotei: started working on collecting chunks of parallel texts and reassembling them under xml divs --- ekdosis.dtx | 90 +++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 26 deletions(-) diff --git a/ekdosis.dtx b/ekdosis.dtx index aadd46b..d6a328e 100644 --- a/ekdosis.dtx +++ b/ekdosis.dtx @@ -1064,10 +1064,10 @@ Running "make install" installs the files in the local TeX tree. \NewDocumentEnvironment{ekdosis}{+b}{% \ekd@setlineno% \runninglinenumbers - % \EkdosisStart + % \EkdosisColStart \EkdosisOn#1}{% \EkdosisOff - % \EkdosisStop + % \EkdosisColStop \endrunninglinenumbers% \iftei@export\luadirect{ekdosis.exporttei(\luastringN{#1})}\else\fi} % \end{macrocode} @@ -1092,7 +1092,9 @@ Running "make install" installs the files in the local TeX tree. \endgroup}{% \ifekd@pagelineation\resetlinenumber\fi \endgroup}{}{} -\NewDocumentCommand{\EkdosisStart}{}{% +\NewDocumentCommand{\EkdosisColStart}{}{% + \ekd@setlineno% + \runninglinenumbers \ekd@storecol% \stepcounter{ekd@lab}% \zlabel{ekd:\theekd@lab}% @@ -1103,12 +1105,13 @@ Running "make install" installs the files in the local TeX tree. \luadirect{tex.sprint(ekdosis.checkresetlineno())} \fi } -\NewDocumentCommand{\EkdosisStop}{}{% +\NewDocumentCommand{\EkdosisColStop}{}{% \stepcounter{ekd@lab}% \zlabel{ekd:\theekd@lab}% \luadirect{% ekdosis.storeabspg(\luastring{\zref@extract{ekd:\theekd@lab}{abspage}}, "pg_ii")}% + \endrunninglinenumbers% } \NewDocumentEnvironment{alignment}{O{}} {% @@ -1129,6 +1132,7 @@ Running "make install" installs the files in the local TeX tree. \fi } {\end{paracol} + \iftei@export\luadirect{ekdosis.export_coldata_totei()}\fi \luadirect{ekdosis.flushenvdata()} \luadirect{ekdosis.flushcolnums()} } @@ -1966,6 +1970,7 @@ end local aligned_texts = {} local texts_w_apparatus = {} +local coldata_totei = {} function ekdosis.mkenvdata(str, opt) str = str ..";" @@ -1975,8 +1980,10 @@ function ekdosis.mkenvdata(str, opt) if opt == "texts" then repeat local nexti = string.find(str, "%;", fieldstart) - table.insert(aligned_texts, {text = string.sub(str, fieldstart, nexti-1), - column = col}) + table.insert(aligned_texts, { text = string.sub(str, fieldstart, nexti-1), + column = col }) + table.insert(coldata_totei, { environment = string.sub(str, fieldstart, nexti-1), + data = {} }) col = col + 1 fieldstart = nexti + 1 until fieldstart > string.len(str) @@ -1991,7 +1998,7 @@ function ekdosis.mkenvdata(str, opt) end end --- the following two variables are already set above +-- Reminder: the following two variables are already set above -- local prevcol = nil -- local curcol = "x" @@ -2009,6 +2016,13 @@ end function ekdosis.flushenvdata() aligned_texts = {} texts_w_apparatus = {} + coldata_totei = {} + return true +end + +function ekdosis.storecoldata(nthcol, chunk) + local tindex = tonumber(nthcol) + 1 + table.insert(coldata_totei[tindex].data, chunk) return true end @@ -2018,41 +2032,65 @@ function ekdosis.mkenv() do if isfound(texts_w_apparatus, aligned_texts[i].text) then - table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."}{}" + table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."}{+b}" .."{\\begin{nthcolumn}{".. aligned_texts[i].column.."}" - .."\\EkdosisStart" - .."\\begin{ekdosis}" --- .."\\csname ekd@storecol\\endcsname" .."\\par" - .."}{\\end{ekdosis}" - .."\\EkdosisStop" - .."\\end{nthcolumn}}") - table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."*}{}" + .."\\EkdosisColStart" + .."\\EkdosisOn#1" + .."}{\\EkdosisOff" + .."\\EkdosisColStop" + .."\\end{nthcolumn}" + .."\\csname iftei@export\\endcsname\\luadirect{ekdosis.storecoldata(" + .. aligned_texts[i].column + ..", \\luastringN{#1})}\\fi" + .."}") + table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."*}{+b}" .."{\\begin{nthcolumn*}{".. aligned_texts[i].column.."}[]" - .."\\EkdosisStart" - .."\\begin{ekdosis}" --- .."\\csname ekd@storecol\\endcsname" .."\\par" - .."}{" - .."\\end{ekdosis}" - .."\\EkdosisStop" - .."\\end{nthcolumn*}}") + .."\\EkdosisColStart" + .."\\EkdosisOn#1" + .."}{\\EkdosisOff" + .."\\EkdosisColStop" + .."\\end{nthcolumn*}" + .."\\csname iftei@export\\endcsname\\luadirect{ekdosis.storecoldata(" + .. aligned_texts[i].column + ..", \\luastringN{#1})}\\fi" + .."}") else - table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."}{}" + table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."}{+b}" .."{\\begin{nthcolumn}{".. aligned_texts[i].column.."}" .."\\par" - .."}{\\end{nthcolumn}}") - table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."*}{}" + .."#1" + .."}{\\end{nthcolumn}" + .."\\csname iftei@export\\endcsname\\luadirect{ekdosis.storecoldata(" + .. aligned_texts[i].column + ..", \\luastringN{#1})}\\fi" + .."}") + table.insert(environments, "\\NewDocumentEnvironment{".. aligned_texts[i].text.."*}{+b}" .."{\\begin{nthcolumn*}{"..aligned_texts[i].column.."}[]" .."\\par" + .."#1" .."}{" - .."\\end{nthcolumn*}}") + .."\\end{nthcolumn*}" + .."\\csname iftei@export\\endcsname\\luadirect{ekdosis.storecoldata(" + .. aligned_texts[i].column + ..", \\luastringN{#1})}\\fi" + .."}") end end str = table.concat(environments) return str end +function ekdosis.export_coldata_totei() + for i = 1,#coldata_totei + do + ekdosis.exporttei("\\begin{".. coldata_totei[i].environment .."}" + .. table.concat(coldata_totei[i].data) + .. "\\end{".. coldata_totei[i].environment .."}") + end +end + -- handle multiple layers in apparatuses -- local apparatuses = {} -- cgit v1.2.3