Jinja2などのテンプレートエンジンをPythonで使用することを検討してください。
デフォルトの{%、{{など}から構文を変更して、LaTeX自身の互換性を高めることができます。たとえば:テンプレートの環境に渡される機能に加えて
env = jinja2.Environment(
loader=jinja2.FileSystemLoader(JINJA_DIRS),
comment_start_string='["', # don't conflict with e.g. {#1
comment_end_string = '"]',
block_start_string = '[%',
block_end_string = '%]',
variable_start_string = '[=',
variable_end_string = ']',
autoescape=True,
finalize=_jinja2_finalize_callback, # make a function that escapes TeX
)
template = env.get_template(self.template)
tex = template.render(content)
、Jinja2のはmacrosをサポートしています。期待通りたとえば、上記のコードは動作するはずです:
[% macro blah(egg, spam) -%]
foo [=egg] \to [=spam] bar
[%- endmacro %]
[= blah("chicken","pork") ]
% substitutes with "foo chicken \to pork"
私はあなたの目標が何であるかわからないんだけど、これは仕事のビットが必要ですが、あなたはなら全く克服できない問題ではありませんPythonに詳しい。
私は役立つことを願っています。
興味深い質問です。不可能ではないにしても、これは本当に難しいと思います。適切なTeXスクリプトはすべての行のすべてのトークンを解析し、それがユーザー定義のコマンドかどうかをチェックする必要があります。これはかなり複雑だと思います。ドキュメント内でのコード変更のようなことは、それをさらに複雑にします。私はあなたが完全に異なる解決策を見つけようとすることをお勧めします。 TeXは入力ファイルからDVIまたはPDF出力ファイルをタイプセットするのには問題ありませんが、他のものは非常に複雑です。 – Philipp
おそらく、あなたの.texファイルを解析してマクロを置き換えるためにperlやあなたの使用する言語を使うほうがずっと良いでしょう。 – Mica
[This](http://stackoverflow.com/questions/2462656/transform-a-tex-source-so-that-all-macros-are-replaced-by-their-definition)stackoverflow質問には答えがあります:[tme](http://www.astro.indiana.edu/~jthorn/software.html#tme) – Mauro