aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ekdosis.dtx139
1 files changed, 103 insertions, 36 deletions
diff --git a/ekdosis.dtx b/ekdosis.dtx
index cc31f61..165a9a6 100644
--- a/ekdosis.dtx
+++ b/ekdosis.dtx
@@ -328,8 +328,9 @@ Running "make install" installs the files in the local TeX tree.
328\RequirePackage[addpageno]{lineno} 328\RequirePackage[addpageno]{lineno}
329\RequirePackage{vplref} 329\RequirePackage{vplref}
330\RequirePackage{keyfloat} 330\RequirePackage{keyfloat}
331\RequirePackage{afterpage} 331% \RequirePackage{afterpage}
332\RequirePackage{refcount} 332\RequirePackage{refcount}
333\RequirePackage[user,abspage]{zref}
333\if@pkg@parnotes 334\if@pkg@parnotes
334 \RequirePackage{parnotes} 335 \RequirePackage{parnotes}
335\fi 336\fi
@@ -343,22 +344,48 @@ Running "make install" installs the files in the local TeX tree.
343% \end{macrocode} 344% \end{macrocode}
344% \begin{macrocode} 345% \begin{macrocode}
345\newbool{isapp} 346\newbool{isapp}
347\newbool{doapp}
346\newbool{ekdstate} 348\newbool{ekdstate}
347\newbool{ekdstarted} 349% \newbool{ekdstarted}
348\providebool{al@rlmode} 350\providebool{al@rlmode}
349\newcounter{ekd@lab} 351\newcounter{ekd@lab}
352\def\blfootnote{\gdef\@thefnmark{\relax}\@footnotetext}
353\def\add@@apparatus{%
354 % \blfootnote{\apparatus}%
355 \if@pkg@parnotes\parnotes\else\fi%
356 \keyparbox[b!]{}{%
357 \rule{5cm}{0.5pt}\\
358 \if@pkg@parnotes%
359 \if@parnotesroman%
360 \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi%
361 \parnoteclear\else\fi%
362 \footnotesize\apparatus%
363 \if@pkg@parnotes\parnotes\parnotereset\else\fi%
364 }%
365}
366\def\add@apparatus{%
367 \ifbool{isapp}{\testapparatus}{\add@@apparatus%
368 \global\setbool{isapp}{true}}%
369 \ifbool{doapp}{\add@@apparatus}{}%
370}
350\NewDocumentCommand{\append}{+m}{% 371\NewDocumentCommand{\append}{+m}{%
351 \ifbool{ekdstate}{% 372 \ifbool{ekdstate}{%
352 \label{ekd:\theekd@lab}% 373 \luadirect{appin(\luastring{<\zref@extract{ekd:\theekd@lab}{abspage}>},
353 \luadirect{appin(\luastring{<\getpagerefnumber{ekd:\theekd@lab}>},
354 "no")}% 374 "no")}%
355 \luadirect{appin(\luastringN{#1}, "no")}% 375 \luadirect{appin(\luastringN{#1}, "no")}%
356 \luadirect{appin(\luastring{</\getpagerefnumber{ekd:\theekd@lab}>}, 376 \luadirect{appin(\luastring{</\zref@extract{ekd:\theekd@lab}{abspage}>},
357 "yes")}% 377 "yes")}%
358 \stepcounter{ekd@lab}}{}} 378 }{}}
359\NewDocumentCommand{\obappend}{+m}% 379\NewDocumentCommand{\obappend}{+m}%
360 {\luadirect{tex.sprint(ekdosis.mdvappend(\luastringN{#1}))}} 380 {\luadirect{tex.sprint(ekdosis.mdvappend(\luastringN{#1}))}}
361\NewDocumentCommand{\app}{+m}{#1} 381\NewDocumentCommand{\app}{+m}{%
382 \stepcounter{ekd@lab}%
383 \zlabel{ekd:\theekd@lab}%
384 \luadirect{%
385 ekdosis.storeabspg(\luastring{\zref@extract{ekd:\theekd@lab}{abspage}},
386 "pg_ii")}%
387 \add@apparatus%
388 #1}
362\NewDocumentCommand{\lem}{o +m}{% 389\NewDocumentCommand{\lem}{o +m}{%
363 \ifbool{al@rlmode}% 390 \ifbool{al@rlmode}%
364 {\IfNoValueTF{#1}% 391 {\IfNoValueTF{#1}%
@@ -380,34 +407,29 @@ Running "make install" installs the files in the local TeX tree.
380} 407}
381\NewDocumentCommand{\apparatus}{}{\luadirect{tex.sprint(appout())}} 408\NewDocumentCommand{\apparatus}{}{\luadirect{tex.sprint(appout())}}
382\NewDocumentCommand{\testapparatus}{}{% 409\NewDocumentCommand{\testapparatus}{}{%
383 \luadirect{tex.sprint(testapparatus())}} 410 \luadirect{tex.sprint(ekdosis.testapparatus())}}
384\def\blfootnote{\gdef\@thefnmark{\relax}\@footnotetext} 411 % \def\add@apparatus{%
385\def\add@@apparatus{% 412 % \add@@apparatus%
386 \testapparatus% 413 % \afterpage{\add@apparatus}}
387 \ifbool{isapp}{% 414 % \NewDocumentCommand{\EkdosisStart}{}{%
388 % \blfootnote{\apparatus}% 415 % \add@@apparatus%
389 \if@pkg@parnotes\parnotes\else\fi% 416 % \afterpage{\add@apparatus}}
390 \keyparbox[b!]{}{%
391 \rule{5cm}{0.5pt}\\
392 \if@pkg@parnotes%
393 \if@parnotesroman%
394 \renewcommand*{\theparnotemark}{\roman{parnotemark}}\else\fi%
395 \parnoteclear\else\fi%
396 \footnotesize\apparatus%
397 \if@pkg@parnotes\parnotes\parnotereset\else\fi%
398 }%
399}{}}
400\def\add@apparatus{%
401 \add@@apparatus%
402 \afterpage{\add@apparatus}}
403\NewDocumentCommand{\EkdosisStart}{}{% 417\NewDocumentCommand{\EkdosisStart}{}{%
404 \add@@apparatus% 418 \stepcounter{ekd@lab}%
405 \afterpage{\add@apparatus}} 419 \zlabel{ekd:\theekd@lab}%
420 \luadirect{%
421 ekdosis.storeabspg(\luastring{\zref@extract{ekd:\theekd@lab}{abspage}},
422 "pg_i")}%
423}
406\NewDocumentCommand{\EkdosisOn}{}{\setbool{ekdstate}{true}} 424\NewDocumentCommand{\EkdosisOn}{}{\setbool{ekdstate}{true}}
407\NewDocumentCommand{\EkdosisOff}{}{\setbool{ekdstate}{false}} 425\NewDocumentCommand{\EkdosisOff}{}{%
426 \setbool{ekdstate}{false}%
427 \global\setbool{isapp}{false}%
428}
408\newenvironment{ekdosis}{% 429\newenvironment{ekdosis}{%
409\ifbool{ekdstarted}{}{\EkdosisStart\global\setbool{ekdstarted}{true}} 430 % \ifbool{ekdstarted}{}{\EkdosisStart\global\setbool{ekdstarted}{true}}
410\EkdosisOn}{\EkdosisOff} 431 \EkdosisStart%
432 \EkdosisOn}{\EkdosisOff}
411% \end{macrocode} 433% \end{macrocode}
412% \iffalse 434% \iffalse
413%</package> 435%</package>
@@ -431,6 +453,37 @@ function remove()
431 os.remove(tex.jobname..".ekd") 453 os.remove(tex.jobname..".ekd")
432end 454end
433 455
456local pg_i = 0
457local pg_ii = 0
458local cur_abs_pg = 0
459
460ekdosis.update_abspg = function(n)
461 cur_abs_pg = n
462 return true
463end
464
465ekdosis.get_abs_page = function()
466 return cur_abs_pg
467end
468
469ekdosis.storeabspg = function(n, pg)
470 if pg == "pg_i" then
471 pg_i = n
472 elseif pg == "pg_ii" then
473 pg_ii = n
474 end
475 cur_abs_pg = n
476 return true
477end
478
479ekdosis.getabspg = function(pg) --not used
480 if pg == "pg_i" then
481 return pg_i
482 elseif pg == "pg_ii" then
483 return pg_ii
484 end
485end
486
434function isintable(table, value) 487function isintable(table, value)
435 for _, v in pairs(table) do 488 for _, v in pairs(table) do
436 if v == value then return true end 489 if v == value then return true end
@@ -456,18 +509,19 @@ function appout()
456 t = f:read("*a") 509 t = f:read("*a")
457 local output = {} 510 local output = {}
458 for i in string.gmatch(t, 511 for i in string.gmatch(t,
459 "<"..tex.count[0]..">.-</"..tex.count[0]..">") 512 "<"..cur_abs_pg..">.-</"..cur_abs_pg..">")
460 do 513 do
461 table.insert(output, i) 514 table.insert(output, i)
462 end 515 end
463 f:close() 516 f:close()
464 str = table.concat(output, "\n") 517 str = table.concat(output, "\n")
465 str = string.gsub(str, "</"..tex.count[0]..">", " ") 518 str = string.gsub(str, "</"..cur_abs_pg..">", " ")
466 str = string.gsub(str, "<"..tex.count[0]..">", "") 519 str = string.gsub(str, "<"..cur_abs_pg..">", "")
467 return str 520 return str
468 else end 521 else end
469end 522end
470 523
524--[[
471function testapparatus() 525function testapparatus()
472 local file = io.open(tex.jobname..".ekd", "r") 526 local file = io.open(tex.jobname..".ekd", "r")
473 if file ~= nil then 527 if file ~= nil then
@@ -477,6 +531,17 @@ function testapparatus()
477 else return "\\boolfalse{isapp}" end 531 else return "\\boolfalse{isapp}" end
478 file:close() 532 file:close()
479end 533end
534--]]
535
536ekdosis.testapparatus = function()
537 if pg_ii == pg_i then
538 return "\\boolfalse{doapp}"
539 elseif pg_ii > pg_i then
540 return "\\booltrue{doapp}"
541 else
542 return "\\boolfalse{doapp}"
543 end
544end
480 545
481md5items = {} 546md5items = {}
482local salt = 0 547local salt = 0
@@ -490,7 +555,9 @@ ekdosis.mdvappend = function(str)
490 table.insert(md5items, i) 555 table.insert(md5items, i)
491 salt = salt + 1 556 salt = salt + 1
492 end 557 end
493 return "\\linelabel{"..i.."}\\append{\\textbf{\\getrefnumber{"..i.."}} "..str.."}" 558 return "\\linelabel{"..i.."}"
559 ..
560 "\\append{\\textbf{\\getrefnumber{"..i.."}} "..str.."}"
494end 561end
495 562
496--[[ -- of no use 563--[[ -- of no use