組版する直前にLaTeXドキュメントでいくつかの正規表現置換を行うPythonスクリプトを作成しようとしていますが、置換を有効にするのに問題があるようです。私のスクリプトは次のとおりです。
# -*- coding: utf-8 -*-
import os, re, sys
tex = sys.argv[-1]
tex_file = open(tex, "r+")
tex_file_data = tex_file.read()
# DO SOME REGEXES
tex_file_data = re.sub(r"\b_(.*?)_\b", r"\emph{\1}", tex_file_data)
tex_file.write(tex_file_data)
# PROCESS THE DOCUMENT
os.system("xelatex --shell-escape " + tex_file.name)
ただし、このスクリプトを使用してドキュメントを処理しようとするたびに、通常の! Missing $ inserted.
エラーが発生します。正規表現によると、これらのアンダースコアは適切な構文に置き換えられるはずでした。ただし、最後の行をに置き換えるprint(tex_file_data)
と、変更が有効になっているドキュメントがコンソールに表示されます。私の知る限り、編集したドキュメントが正しく保存されていないことが問題のようですが、何が間違っているのかわかりません。
スクリプトを使用してドキュメントを処理できるように、この問題をどのように修正できますか?
編集: @Yuushiの提案で、私は次のようにスクリプトを編集しました:
# -*- coding: utf-8 -*-
import os, re, sys
with open(sys.argv[-1], "r+") as tex_file:
tex_file_data = tex_file.read()
tex_file_data = re.sub(r"\_(.*)\_", r"\\emph{\1}", tex_file_data)
tex_file.write(tex_file_data)
os.system("xelatex --shell-escape " + tex_file.name)
ただし、まだ! Missing $ inserted.
エラーが発生しています。これは、元のドキュメントが、再登録されたドキュメントではなく、LaTeXコンパイラに送信されていることを示しています。