diff options
author | Robert Alessi <alessi@robertalessi.net> | 2019-04-20 18:35:09 +0200 |
---|---|---|
committer | Robert Alessi <alessi@robertalessi.net> | 2019-04-20 18:35:09 +0200 |
commit | 2fdee0eddbb03f4d12888b53b5d0bc5b9aaf0c81 (patch) | |
tree | 25aa9be129ddb95cd17177d3200c7a5cb3b122ce | |
parent | 58397c235c5ddfa78dc109e2fdb6a3e5f8b82f7e (diff) | |
download | ekdosis-2fdee0eddbb03f4d12888b53b5d0bc5b9aaf0c81.tar.gz |
new functions ekdosis.newscholar() and ekdosis.setxmlbibresource(); import .xml bib file into main TEI file
-rw-r--r-- | ekdosis.dtx | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ekdosis.dtx b/ekdosis.dtx index 7687345..690f8f5 100644 --- a/ekdosis.dtx +++ b/ekdosis.dtx | |||
@@ -399,6 +399,11 @@ idno={}, msName={}, origDate={}][3]{% | |||
399 | \luastringN{#4})} | 399 | \luastringN{#4})} |
400 | } | 400 | } |
401 | \@onlypreamble\DeclareNewHand | 401 | \@onlypreamble\DeclareNewHand |
402 | \NewDocumentCommand{\DeclareNewScholar}{m m}{ | ||
403 | \luadirect{ekdosis.newscholar(\luastringN{#1}, | ||
404 | \luastringN{#2})} | ||
405 | } | ||
406 | \@onlypreamble\DeclareNewScholar | ||
402 | \NewDocumentCommand{\getsiglum}{m}{% | 407 | \NewDocumentCommand{\getsiglum}{m}{% |
403 | \luadirect{tex.sprint(ekdosis.getsiglum(\luastringN{#1}))}% | 408 | \luadirect{tex.sprint(ekdosis.getsiglum(\luastringN{#1}))}% |
404 | } | 409 | } |
@@ -420,6 +425,10 @@ idno={}, msName={}, origDate={}][3]{% | |||
420 | \luadirect{ekdosis.setteifilename(\luastringN{#1})} | 425 | \luadirect{ekdosis.setteifilename(\luastringN{#1})} |
421 | } | 426 | } |
422 | \@onlypreamble\SetTEIFileName | 427 | \@onlypreamble\SetTEIFileName |
428 | \NewDocumentCommand{\SetxmlBibResource}{m}{ | ||
429 | \luadirect{ekdosis.setxmlbibresource(\luastringN{#1})} | ||
430 | } | ||
431 | \@onlypreamble\SetxmlBibResource | ||
423 | % \end{macrocode} | 432 | % \end{macrocode} |
424 | % \begin{macrocode} | 433 | % \begin{macrocode} |
425 | \newbool{ekd@started} | 434 | \newbool{ekd@started} |
@@ -748,6 +757,30 @@ function ekdosis.newhand(id, witid, siglum, description) | |||
748 | return true | 757 | return true |
749 | end | 758 | end |
750 | 759 | ||
760 | local xmlbibresource = nil | ||
761 | |||
762 | function ekdosis.setxmlbibresource(str) | ||
763 | xmlbibresource = str..".xml" | ||
764 | return true | ||
765 | end | ||
766 | |||
767 | function ekdosis.newscholar(id, siglum) | ||
768 | if xmlidfound(id) | ||
769 | then | ||
770 | tex.print([[\unexpanded{\PackageWarning{ekdosis}{"]] | ||
771 | ..id.. | ||
772 | [[" already exists as a xml:id. ]] | ||
773 | .. | ||
774 | [[Please pick another id.}}]]) | ||
775 | else | ||
776 | table.insert(xmlids, {xmlid = id}) | ||
777 | table.sort(xmlids, function(a ,b) return(#a.xmlid > #b.xmlid) end) | ||
778 | table.insert(idsRend, {xmlid = id, head = siglum}) | ||
779 | table.sort(idsRend, function(a ,b) return(#a.xmlid > #b.xmlid) end) | ||
780 | end | ||
781 | return true | ||
782 | end | ||
783 | |||
751 | function ekdosis.getsiglum(str, opt) | 784 | function ekdosis.getsiglum(str, opt) |
752 | str = str.."," | 785 | str = str.."," |
753 | str = string.gsub(str, "%s-(%,)", "%1") | 786 | str = string.gsub(str, "%s-(%,)", "%1") |
@@ -876,6 +909,7 @@ end | |||
876 | 909 | ||
877 | function ekdosis.openteistream() | 910 | function ekdosis.openteistream() |
878 | local f = io.open(teifilename.."_tmp.xml", "a+") | 911 | local f = io.open(teifilename.."_tmp.xml", "a+") |
912 | f:write('<?xml version="1.0" encoding="utf-8"?>', "\n") | ||
879 | f:write("<TEI xmlns=\"http://www.tei-c.org/ns/1.0\">", "\n") | 913 | f:write("<TEI xmlns=\"http://www.tei-c.org/ns/1.0\">", "\n") |
880 | f:write("<teiHeader>", "\n") | 914 | f:write("<teiHeader>", "\n") |
881 | f:write("<listWit>", "\n") | 915 | f:write("<listWit>", "\n") |
@@ -944,6 +978,20 @@ local tidy = nil | |||
944 | function ekdosis.closeteistream(opt) | 978 | function ekdosis.closeteistream(opt) |
945 | local f = io.open(teifilename.."_tmp.xml", "a+") | 979 | local f = io.open(teifilename.."_tmp.xml", "a+") |
946 | f:write("\n", "</body>", "\n") | 980 | f:write("\n", "</body>", "\n") |
981 | if xmlbibresource ~= nil then | ||
982 | bibf = assert(io.open(xmlbibresource, "r")) | ||
983 | t = bibf:read("*a") | ||
984 | f:write("<back>", "\n") | ||
985 | f:write("<listBibl>", "\n") | ||
986 | for i in string.gmatch(t, "<biblStruct.->.-</biblStruct>") | ||
987 | do | ||
988 | f:write("\n", i, "\n") | ||
989 | end | ||
990 | f:write("</listBibl>", "\n") | ||
991 | f:write("</back>", "\n") | ||
992 | bibf:close() | ||
993 | else | ||
994 | end | ||
947 | f:write("</text>", "\n") | 995 | f:write("</text>", "\n") |
948 | f:write("</TEI>", "\n") | 996 | f:write("</TEI>", "\n") |
949 | f:close() | 997 | f:close() |