2012-01-01 2 views
5

Я пишу макросы с m4, чтобы легко вставлять математику в HTML-код. Слизы должны быть экранированы, и я хочу автоматизировать этот процесс, но я еще не понял хороший способ.Автоматическое удаление косых черт в m4 для команд оболочки

Запуск m4 на следующих показывает проблему:

define(`_imath', `esyscmd(`echo "$ $1 $"')')dnl 
_imath(y = \frac{1}{2} x^{2.3} + 2) 

Мой выход в следующем:

$ y = 
     rac{1}{2} x^{2.3} + 2 $ 

Если я заменяю \frac с \\\frac я получить желаемый результат. Я мог делать это каждый раз, но я хочу автоматизировать этот процесс, если смогу. Желаемый результат, кстати, является

$ y = \frac{1}{2} x^{2.3} + 2 $ 

, которая передается по каналу в другую команду, которая будет производить HTML-код или изображение (за пределами этого минимального примера).

Я знаю один неудовлетворительный способ обойти эту проблему. Я мог использовать другой символ (или комбинацию символов) для TeX's \ и определить другой макрос, чтобы его автоматически заменить. Это неудовлетворительно, потому что я хочу использовать прямой код LaTeX без изменений, и это не намного проще, чем использование трех сокращений.

Как я могу изменить свой макрос, чтобы автоматически избежать косой черты, чтобы я мог использовать прямой код LaTeX?

ответ

4

Это заняло у меня достаточно долго, чтобы понять это, но это работает:

define(`_imath', `esyscmd(echo "$ patsubst(`$1',`\\',`\\\\\\') $")')dnl 
_imath(y = \frac{1}{2} x^{2.3} + 2) 
Смежные вопросы