Как заменить разделители $ LaTex с помощью инструмента командной строки, такого как perl или sed? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть куча ноутбуков Jupyter с уравнениями, написанными на LaTex.Я знаю, что могу конвертировать блокнот в HTML следующим образом.

jupyter nbconvert --to html --template basic test.ipynb test.html

Однако разметка LaTex сохраняется.Например, если у меня есть $y = w'x$, то это все равно отображается в выходном HTML.Я хочу получить этот сгенерированный HTML-код в WordPress (в основном, копировать / вставить), но WordPress разделяет LaTex следующим образом $latex y = w'x$.

Как использовать perl или sed(или что-нибудь еще), чтобы преобразовать $y = w'x в $latex y = w'x$?

Я знаю, что могу просто написать программу для этого, но я думаю, что это излишне, потому что я уверен, что эти доступные инструменты командной строки могут это сделать.Кроме того, любой инструмент, доступный как в Windows, так и в Mac / Linux, был бы бонусом, так как я работаю с обоими типами среды и не хочу прибегать к среде, подобной * nix, чтобы выполнить это преобразование (хотя Windows делаеттеперь у меня есть подсистема Windows Linux, так что я думаю, что это может быть хорошо, если это просто инструмент Linux).

Я пытался изменить это выражение sed из этого post (на Mac),но это не сработало.

sed -e ' /\$\$/{s/\$\$/{\$latex }/;:a;N;/\$\$/!ba;s/\$\$/{\$}/};s/^\(\$\)\(.*\)\(\$\)$/{\$latex }\2{\$}/' test.html

неожиданный EOF (в ожидании})

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы можете использовать следующую команду sed:

sed -e 's/\$\([^$]*\)\$/$\\latex \1$/g'

ВХОД:

$ echo -e "abc \$y = w'x$ toto\n123 \$u = v'w$ xyz"
abc $y = w'x$ toto
123 $u = v'w$ xyz

ВЫВОД:

echo -e "abc \$y = w'x$ toto\n123 \$u = v'w$ xyz" | sed -e 's/\$\([^$]*\)\$/$\\latex \1$/g'
abc $\latex y = w'x$ toto
123 $\latex u = v'w$ xyz

Пояснения:

Вы используете sed в режиме поиска и замены, и он заменит все между двумя $ символами через это регулярное выражение: \$\([^$]*\)\$ на то, что уже здесь (обратная ссылка) и добавит \latex в начале.

И последнее, но не менее важное: следующая команда sed -e 's/\$\([^$]*\)\$/$latex \1$/g' sed выполняет замену $latex без \

0 голосов
/ 10 мая 2018

Я не уверен, какой может быть весь формат вашего файла. Если я возьму ваш пример за чистую монету и предположу, что первый $ в любой строке находится в столбце 1, то

sed -e's/^\$/$\\latex /'

у меня работает. Но если строка для преобразования в любом месте в файле, то все становится сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...