У меня есть несколько уравнений, смешанных по всему документу, которые отображаются в следующих формах:
5^4 %A
3^-1 %B
5.01 x 10^2.05 %C
5.01 x 10^2 %D
-5 x 10^3 %E
Другими словами, они соответствуют формату x^y
или z * x^y
, где z, x и y могут быть любым целым или рациональным числом (выраженным десятичной точкой), положительным или отрицательным.
Я хочу преобразовать их в математический режим для TeX. E.g.:
$5.01 \cdot 10^2$
При большой помощи других мне удалось создать сценарий BASH
с sed
для решения пунктов A и B:
sed "s/\-\{0,1\}[0-9]\{1,\}^\-\{0,1\}[0-9]\{1,\}/$&$/" input > output
Это позволяет конвертировать элементы A и B в математический режим, но я обнаружил, что он конвертирует только первое обнаруженное в строке вхождение. Например, если строка говорит 5^10 is greater than 1^2
, она преобразует это в $5^10$ is greater than 1^2
. Второй проход со сценарием приводит к $$5^10$$ is greater than 1^2
.
Мне удалось изменить приведенный выше скрипт для обработки элементов C, D и E, но я не могу понять, как обрабатывать заднюю вторую часть (я пометил его как «???»):
sed "s/\-\{0,1\}[0-9]\{1,\}\ x\ \-\{0,1\}[0-9]\{1,\}^\-\{0,1\}[0-9]\{1,\}/???/" input > output
Это создает проблему:
- Даже если вышеперечисленное может сработать, если я сначала запускаю первый сценарий
sed
, а затем запускаю второй, первый смешивает второй, т. Е. Я получаю 5.01 x $10^2.05$
. Если бы я сначала запустил второй скрипт, то после запуска второго скрипта я бы получил $5.01 x $10^2.05$$
.
Короче говоря, как я могу выполнить этот вид преобразования для всех элементов в документе?
5^4 --> $5^4$
3^-1 --> $3^-1$
5.01 x 10^2.05 --> $5.01 \cdot 10^2.05$
5.01 x 10^2 --> $5.01 \cdot 10^2$
-5 x 10^3 --> $-5 \cdot 10^3$