2012-01-01 11 views
5

Estoy escribiendo macros con m4 para incrustar fácilmente matemáticas en código HTML. Las barras deben ser escapadas y quiero automatizar este proceso, pero todavía no he descubierto una buena manera.escapes automáticamente en m4 para comandos de shell

Correr m4 en la siguiente muestra el problema:

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

Mi salida en el siguiente:

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

Si sustituyo \frac con \\\frac entonces consigo el resultado deseado. Podría hacerlo siempre, pero quiero automatizar este proceso si puedo. El resultado deseado, por cierto, es

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

que es canalizado a otro comando que va a producir el código HTML o una imagen (fuera de este mínimo ejemplo).

Conozco una forma insatisfactoria de solucionar este problema. Podría usar un personaje diferente (o una combinación de caracteres) para el \ de TeX y definir otra macro para reemplazarlo automáticamente. Esto no es satisfactorio porque quiero usar código LaTeX directo sin modificaciones y no es significativamente más simple que usar tres barras inclinadas.

¿Cómo puedo cambiar mi macro para escapar automáticamente de la barra oblicua, así puedo usar el código LaTeX directo?

Respuesta

4

Me tomó el tiempo suficiente para resolver esto, pero esto funciona:

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