diff options
-rw-r--r-- | ekdosis.dtx | 50 |
1 files changed, 41 insertions, 9 deletions
diff --git a/ekdosis.dtx b/ekdosis.dtx index 1490d4d..6ad89ae 100644 --- a/ekdosis.dtx +++ b/ekdosis.dtx | |||
@@ -501,8 +501,8 @@ idno={}, msName={}, origDate={}][3]{% | |||
501 | \edef\ekdsep{: } | 501 | \edef\ekdsep{: } |
502 | \NewDocumentCommand{\SetSeparator}{m}{\edef\ekdsep{#1}} | 502 | \NewDocumentCommand{\SetSeparator}{m}{\edef\ekdsep{#1}} |
503 | \newkeycommand+[\|]{\lem}[wit, alt, pre, post, prewit, postwit, | 503 | \newkeycommand+[\|]{\lem}[wit, alt, pre, post, prewit, postwit, |
504 | sep={\ekdsep}, | 504 | sep={\ekdsep}, choice nosep={false,,true}, |
505 | choice nosep={false,,true}, choice nolem={false,,true}][1]{% | 505 | choice nolem={false,,true}][1]{% |
506 | #1% | 506 | #1% |
507 | |\ifnum|% | 507 | |\ifnum|% |
508 | \commandkey{nolem}>0% | 508 | \commandkey{nolem}>0% |
@@ -551,7 +551,11 @@ choice nosep={false,,true}, choice nolem={false,,true}][1]{% | |||
551 | |\fi|% | 551 | |\fi|% |
552 | }}% | 552 | }}% |
553 | |\fi|} | 553 | |\fi|} |
554 | \newkeycommand+[\|]{\rdg}[wit, alt, pre, post, prewit, postwit][1]{% | 554 | \newkeycommand+[\|]{\rdg}[wit, alt, pre, post, prewit, postwit, |
555 | choice nordg={false,,true}][1]{% | ||
556 | |\ifnum|% | ||
557 | \commandkey{nordg}>0% | ||
558 | |\else|% | ||
555 | |\ifbool{al@rlmode}|% | 559 | |\ifbool{al@rlmode}|% |
556 | {\append@app{% | 560 | {\append@app{% |
557 | \bgroup% | 561 | \bgroup% |
@@ -584,7 +588,7 @@ choice nosep={false,,true}, choice nolem={false,,true}][1]{% | |||
584 | \ifcommandkey{wit}{ \getsiglum{\commandkey{wit}}}{}% | 588 | \ifcommandkey{wit}{ \getsiglum{\commandkey{wit}}}{}% |
585 | \ifcommandkey{postwit}{ \commandkey{postwit}}{}% | 589 | \ifcommandkey{postwit}{ \commandkey{postwit}}{}% |
586 | }}% | 590 | }}% |
587 | } | 591 | |\fi|} |
588 | \newkeycommand+[\|]{\ekd@note}[pre, post][1]{% | 592 | \newkeycommand+[\|]{\ekd@note}[pre, post][1]{% |
589 | \append@app{\ifcommandkey{pre}{\commandkey{pre}}{}% | 593 | \append@app{\ifcommandkey{pre}{\commandkey{pre}}{}% |
590 | #1% | 594 | #1% |
@@ -850,6 +854,11 @@ local cmdtotags = { | |||
850 | {a="arb", b="s", c=" xml:lang=\"arb-Latn\" type=\"transliterated\" subtype=\"arabtex\""} | 854 | {a="arb", b="s", c=" xml:lang=\"arb-Latn\" type=\"transliterated\" subtype=\"arabtex\""} |
851 | } | 855 | } |
852 | 856 | ||
857 | local envtotags = { | ||
858 | {a="center", b="p", c=" rend=\"centered\""} | ||
859 | {a="arab", b="p", c=" xml:lang=\"arb-Latn\" type=\"transliterated\" subtype=\"arabtex\""} | ||
860 | } | ||
861 | |||
853 | function ekdosis.newcmdtotag(cmd, tag, attr) | 862 | function ekdosis.newcmdtotag(cmd, tag, attr) |
854 | if isintable(cmdtotags, cmd) | 863 | if isintable(cmdtotags, cmd) |
855 | then | 864 | then |
@@ -887,7 +896,29 @@ local function lem_rdg_totei(str) | |||
887 | return str | 896 | return str |
888 | end | 897 | end |
889 | 898 | ||
890 | local function textotei(str) | 899 | local function envtotei(str) |
900 | for i = 1,#envtotags | ||
901 | do | ||
902 | str = gsub(str, lpeg.P("\\begin") * spcenc^-1 * lpeg.P("{") | ||
903 | * lpeg.Cs(envtotags[i].a) * lpeg.P("}") | ||
904 | * bsqbracketsii * bcbracesii * spcenc^-1, | ||
905 | "<"..envtotags[i].b..envtotags[i].c..">") | ||
906 | str = gsub(str, spcenc^-1 * lpeg.P("\\end") * spcenc^-1 * lpeg.P("{") | ||
907 | * lpeg.Cs(envtotags[i].a) * lpeg.P("}"), | ||
908 | "</"..envtotags[i].b..">") | ||
909 | end | ||
910 | str = gsub(str, lpeg.P("\\begin") * spcenc^-1 * lpeg.P("{") | ||
911 | * lpeg.Cs(ascii^1) * lpeg.P("}") * bsqbracketsii | ||
912 | * bcbracesii * spcenc^-1, | ||
913 | "<%1>") | ||
914 | str = gsub(str, spcenc^-1 * lpeg.P("\\end") * spcenc^-1 * lpeg.P("{") | ||
915 | * lpeg.Cs(ascii^1) * lpeg.P("}") * bsqbracketsii | ||
916 | * bcbracesii, | ||
917 | "</%1>") | ||
918 | return str | ||
919 | end | ||
920 | |||
921 | local function cmdtotei(str) | ||
891 | for i = 1,#cmdtotags | 922 | for i = 1,#cmdtotags |
892 | do | 923 | do |
893 | str = string.gsub(str, "(\\"..cmdtotags[i].a..")%s?%*?(%b{})", "%1[]%2") | 924 | str = string.gsub(str, "(\\"..cmdtotags[i].a..")%s?%*?(%b{})", "%1[]%2") |
@@ -899,7 +930,7 @@ local function textotei(str) | |||
899 | braces = string.sub(braces, 2, -2) | 930 | braces = string.sub(braces, 2, -2) |
900 | return string.format("\"%s\"", braces) | 931 | return string.format("\"%s\"", braces) |
901 | end) | 932 | end) |
902 | body = textotei(body) | 933 | body = cmdtotei(body) |
903 | -- return string.format("<"..cmdtotags[i].b..cmdtotags[i].c.." %s>%s</"..cmdtotags[i].b..">", arg, body) | 934 | -- return string.format("<"..cmdtotags[i].b..cmdtotags[i].c.." %s>%s</"..cmdtotags[i].b..">", arg, body) |
904 | return string.format("<"..cmdtotags[i].b..cmdtotags[i].c..">%s</"..cmdtotags[i].b..">", body) | 935 | return string.format("<"..cmdtotags[i].b..cmdtotags[i].c..">%s</"..cmdtotags[i].b..">", body) |
905 | end) | 936 | end) |
@@ -907,13 +938,13 @@ local function textotei(str) | |||
907 | str = string.gsub(str, "\\(%a+)%s?%*?(%b[])(%b{})", | 938 | str = string.gsub(str, "\\(%a+)%s?%*?(%b[])(%b{})", |
908 | function(cmd, opt, body) | 939 | function(cmd, opt, body) |
909 | body = string.sub(body, 2, -2) | 940 | body = string.sub(body, 2, -2) |
910 | body = textotei(body) | 941 | body = cmdtotei(body) |
911 | return string.format("<%s>%s</%s>", cmd, body, cmd) | 942 | return string.format("<%s>%s</%s>", cmd, body, cmd) |
912 | end) | 943 | end) |
913 | str = string.gsub(str, "\\(%a+)%s?%*?(%b{})", | 944 | str = string.gsub(str, "\\(%a+)%s?%*?(%b{})", |
914 | function(cmd, body) | 945 | function(cmd, body) |
915 | body = string.sub(body, 2, -2) | 946 | body = string.sub(body, 2, -2) |
916 | body = textotei(body) | 947 | body = cmdtotei(body) |
917 | return string.format("<%s>%s</%s>", cmd, body, cmd) | 948 | return string.format("<%s>%s</%s>", cmd, body, cmd) |
918 | end) | 949 | end) |
919 | str = string.gsub(str, "(%s)(%>)", "%2") | 950 | str = string.gsub(str, "(%s)(%>)", "%2") |
@@ -924,7 +955,8 @@ function ekdosis.textotei(str) | |||
924 | str = xml_entities(str) | 955 | str = xml_entities(str) |
925 | str = string.gsub(str, "%s?\\par%s?", "</p>\n<p>") | 956 | str = string.gsub(str, "%s?\\par%s?", "</p>\n<p>") |
926 | str = lem_rdg_totei(str) | 957 | str = lem_rdg_totei(str) |
927 | str = textotei(str) | 958 | str = envtotei(str) |
959 | str = cmdtotei(str) | ||
928 | return str | 960 | return str |
929 | end | 961 | end |
930 | 962 | ||