ラテックス構文の小さな拡張をしたいと思います。
この解析作業を回避するための純粋なラテックスの方法があり、私はそれらを知っています。
この質問の目標は、次の解析問題を解決することです。
If \ep is small --> If \epsilon is small
\theorem --> \begin{theorem}
(tab) lorem ipsum --> (tab) lorem ipsum
(tab) lorem ipsum --> (tab) lorem ipsum
(no tab) Some text --> \end{theorem}
Some text
A function \oldFunction{x}{y} --> A function \newFunction{x}{y}
Some other text with latex construct like \frac{1}{2} (not part of the grammar)
などのキーワードがいくつかあるので、新しいキーワードに変換したいと考えていますep
。
それらは入れ子にすることができます。 oldFunction
\oldFunction{\ep}{\ep}
theorem
のように、コンテンツを囲む「タブ」一貫性のあるキーワードがあります。
このタブで構成されるキーワークはネストできます。
\theorem
(tab) \lemma
(tab) (tab) \oldFunction{\ep}{\ep}
また、前の行のように、キーワード\ep
と\theorem
キーワードを混在させることもできます。
次に、他のすべてのラテックス構造がありますが、私は触れずにそのままにしておきます。
pyParsing とcodeTalkerを調べます。
codeTalker は文脈自由文法です。記述文法が文脈自由であるかどうかはわかりません。
pyParsing はそれを行うことができます。ドキュメントを調べますが、適用方法がわかりません。
解析の問題に遭遇したのはこれが初めてです。