Я пишу скрипт Python, который принимает открытый текст как ввод и производит Код LaTeX в качестве вывода. В какой-то момент сценарий должен процитировать все символы , которые имеют особое значение в TeX, например %
, &
, \
, и поэтому .строка цитаты для ввода 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
Проблема заключается в {
и }
символы, так как они потенциально получают более ранней замены (\
->\textbackslash{}
), в этом случае не должен быть заменен. Я думаю, что решение будет делать все замены за один шаг, но я не знаю, как это сделать.