我正在用m4编写宏,以便在HTML代码中轻松嵌入数学。斜杠需要转义,我想自动化这个过程,但我还没有找到一个好方法。
在下面运行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的
使用不同的字符(或字符组合),并定义另一个宏来自动替换它。这是不令人满意的,因为我想直接使用LaTeX代码而不进行修改,而且它并不比使用三个斜杠简单得多。
我怎么能改变我的宏自动转义斜杠正确,所以我可以使用直接的LaTeX代码?
我花了很长时间才弄明白这一点,但这是可行的:
define(`_imath', `esyscmd(echo "$ patsubst(`$1',`\',`\\\') $")')dnl
_imath(y = frac{1}{2} x^{2.3} + 2)