我正在编写一个 Python 脚本,它将纯文本作为输入并生成 LaTeX 代码作为输出。在某些时候,脚本必须引用所有在 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{}
) 产生的,在这种情况下不应该被替换。我认为解决方案是一步完成所有替换,但我不知道该怎么做。