プレーンテキストを入力として受け取り、LaTeXコードを出力として生成するPythonスクリプトを書いています。ある時点で、スクリプトは、、、、など、TeXで特別な意味を持つすべての文字を引用符で囲む必要があり%
ます。&
\
これは思ったより難しいです。現在私はこれを持っています:
def ltx_quote(s):
s = re.sub(r'[\\]', r'\\textbackslash{}', s)
# s = re.sub(r'[{]', r'\\{{}', s)
# s = re.sub(r'[}]', r'\\}{}', s)
s = re.sub(r'[&]', r'\\&{}', s)
s = re.sub(r'[$]', r'\\${}', s)
s = re.sub(r'[%]', r'\\%{}', s)
s = re.sub(r'[_]', r'\\_{}', s)
s = re.sub(r'[\^]', r'\\^{}', s)
s = re.sub(r'[~]', r'\\~{}', s)
s = re.sub(r'[|]', r'\\textbar{}', s)
s = re.sub(r'[#]', r'\\#{}', s)
s = re.sub(r'[<]', r'\\textless{}', s)
s = re.sub(r'[>]', r'\\textgreater{}', s)
return s
問題は、{
and}
文字です。これは、以前の置換(\
-> \textbackslash{}
)によって生成される可能性があるためです。この場合、置換すべきではありません。解決策はすべての置換を1つのステップで行うことだと思いますが、その方法がわかりません。