Предположим, у меня есть скрипт python, который выводит x0+x1*x2+y40+y1
(переменные с индексами и арифметическими операторами).Форматирование вывода python для математического режима tex?
Теперь я хочу добавить этот вывод в файл tex
в математическом режиме. Таким образом, в этом случае, мне нужно форматированный вывод будет:
$ X_ {0} + x_ {1} \ аст x_ {2} + у- {40} + у- {1} $
(выражение заключено два $
-х, каждое число загорожено _{
и }
, *
заменяется \ast
).
Каков наилучший способ для этого?
Я не мог решить это даже сейчас. Проблема состоит в том, что числа индексов имеют произвольные длины.
Это моя наивная и неудачная попытка:
expr = 'x0+x1*x2+y40+y1'
expr = expr.replace('*', '\\ast ')
expr = expr.replace('x', 'x_')
expr = expr.replace('y', 'y_')
#import re
#for s in expr:
# if re.match(r'\D', s):
# print s,
expr = '$'+expr+'$'
print expr
Возможно, вы захотите попробовать https://github.com/JelteF/PyLaTeX (в частности, 'math = Subsection ('Math is wrong', data = [Math (data = ['2 * 3', ' = ', 9])]) 'строка может быть чем-то вроде вашего кода, если вы решите использовать эту библиотеку). Отказ от ответственности: я никогда не использовал это сам, просто нашел его прямо сейчас с помощью быстрого поиска Google. – Aristocrates
Это вряд ли требует регулярных выражений. Вероятно, вы можете получить с помощью 'string.replace()'. Это сказано - вы что-то пробовали? Не могли бы вы показать нам? – Dannnno
Если вы хотите сделать это самостоятельно, я бы посоветовал вам попытаться получить дерево _expression__и_и_и_определения, а затем определите правила написания выражения в файле \ LaTeX. Например, выражение x1 * x2 будет содержать на корневом уровне оператор умножения и как листья x1 и x2. Итак, правилом для оператора умножения было бы напечатать \ вместо символа *. Что касается x1 и x2, вы можете выполнить строковые операции, чтобы найти числовой компонент и поместить узел в индекс. Я не знаю, есть ли в Python существующая библиотека, которая может быть использована для получения дерева выражений. – aaragon