0

LateXML (バージョン 0.8.2)を使用して、 LatexファイルをXMLに変換したいと考えています。LateXML には (まだ) パッケージledmacの変換規則がないため、自分で記述しようとしましたが、これまでのところ失敗しています。

ledmac の典型的なユースケースは次のようになります。

\edtext{some text}{\lemma{text}\Afootnote{some explanation}}

結果として得たい

<edtext>
    some text
</edtext> 
<lemma>
    text
</lemma>
<Afootnote>
    some explanation
</Afootnote>

ファイル test1.tex:

\documentclass{article}
\usepackage{ledmac}

\begin{document}
    \section{First Section}
        Et et possimus non delectus et id dolor fugiat. Nemo aperiam in vitae atque. 
        Qui \edtext{pariatur ut fuga}{\lemma{fuga} \Afootnote{quaerat ratione dolorem ex dicta}}. 
        Sapiente hic est nobis eum. Rerum odit consectetur possimus et quaerat aut veritatis quae.
\end{document}

私のこれまでの試みは、ファイル ledmac.sty.ltxml を test1.tex と同じディレクトリに書き込むことでした。次の内容があります。

package LaTeXML::Package::Pool;
use strict;
use LaTeXML::Package;
use warnings;

#RegisterNamespace('scr'=>"http://bla.com/scr");

DefConstructor('\edtext{}', "<edtext>#1</edtext>");
DefConstructor('\lemma{}', "<lemma>#1</lemma>");
DefConstructor('\Afootnote{}',"<Afootnote>#1</Afootnote>");

Tag('edtext', autoClose=>1);
Tag('lemma', autoClose=>1);
Tag('Afootnote', autoClose=>1);
1;

ただし、これによりフォームの 6 つのエラーが発生します。

Error:malformed:edtext <edtext> isn't allowed here
at /media/sf_Dokumente/Leibniz/LeibnizFiles/LateXML-Leibniz/test1.tex; line 6 col 3
Currently in XMLDocument[54493616]<ltx:document _box="LaTeXML::Core::Whatsit=HASH(0x..." _font="Font[serif,medium,upright,10,b..." xmlns="http://dlmf.nist.gov/LaTeXML">...<ltx:section _box="LaTeXML::Core::Whatsit=HASH(0x..." _font="Font[serif,medium,upright,10,b..." refnum="1" xml:id="S1" _ID_counter_p_="1">...<ltx:para _box="LaTeXML::Core::Box=ARRAY(0x344f300)" _font="Font[serif,medium,upright,10,b..." xml:id="S1.p1">...<ltx:p _box="LaTeXML::Core::Box=ARRAY(0x344f300)" _font="Font[serif,medium,upright,10,b...">...
In Core::Document[@0x34474b8] at /media/sf_Dokumente/Leibniz/LeibnizFiles/LateXML-Leibniz/test1.tex; line 6 col 3
 <= Core::Definition::Constructor[\edtext... <= Whatsit[\edtext,Core::List[Box[p],Box... <= Core::Document[@0x34474b8] <= ...

Error:malformed:edtext Attempt to close </edtext>, which isn't open
at /media/sf_Dokumente/Leibniz/LeibnizFiles/LateXML-Leibniz/test1.tex; line 6 col 3
Currently in XMLDocument[54493616]<ltx:document _box="LaTeXML::Core::Whatsit=HASH(0x..." _font="Font[serif,medium,upright,10,b..." xmlns="http://dlmf.nist.gov/LaTeXML">...<ltx:section _box="LaTeXML::Core::Whatsit=HASH(0x..." _font="Font[serif,medium,upright,10,b..." refnum="1" xml:id="S1" _ID_counter_p_="1">...<ltx:para _box="LaTeXML::Core::Box=ARRAY(0x344f300)" _font="Font[serif,medium,upright,10,b..." xml:id="S1.p1">...<ltx:p _box="LaTeXML::Core::Box=ARRAY(0x344f300)" _font="Font[serif,medium,upright,10,b...">...
In Core::Document[@0x34474b8] at /media/sf_Dokumente/Leibniz/LeibnizFiles/LateXML-Leibniz/test1.tex; line 6 col 3
 <= Core::Definition::Constructor[\edtext... <= Whatsit[\edtext,Core::List[Box[p],Box... <= Core::Document[@0x34474b8] <= ...

これらのエラーは、変換しようとするコマンドごとに発生します。

LateXML の専門知識を持っている人が、ここから先に進む方法のヒントを教えてくれたら、本当に感謝しています!

編集: 私の質問を LateXML メーリング リストに投稿した後、LateXML に RelaxNG スキームを提供する必要があると言われました。したがって、これがエラーメッセージの理由のようです。

4

1 に答える 1

0

LateXML メーリング リストを参照した後、開発者は、結果の出力ファイルの構造を基本的に指定する RelaxNG スキームを指定する必要があるというヒントをくれました。

于 2017-01-31T12:35:01.707 に答える