对于 shell 命令,自动转义 m4 中的斜杠

发布于 2024-12-23 14:04:55 字数 700 浏览 0 评论 0原文

我正在使用 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 代码?

I'm writing macros with m4 to easily embed math in HTML code. Slashes need to be escaped and I want to automate this process but I have not yet figured out a good way.

Running m4 on the following shows the problem:

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

My output in the following:

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

If I replace \frac with \\\frac then I get the desired result. I could do that every time, but I want to automate this process if I can. The desired result, by the way, is

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

which is piped to another command that'll produce HTML code or an image (outside of this minimal example).

I know one unsatisfactory way to get around this problem. I could use a different character (or combination of characters) for TeX's \ and define another macro to automatically replace it. This is unsatisfactory because I want to use straight LaTeX code without modification and it is not significantly simpler than using three slashes.

How can I change my macro to automatically escape the slash correctly so I can use straight LaTeX code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼中杀气 2024-12-30 14:04:55

我花了很长时间才弄清楚这一点,但这有效:

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

It took me long enough to figure this out, but this works:

define(`_imath', `esyscmd(echo "$ patsubst(`$1',`\\',`\\\\\\') $")')dnl
_imath(y = \frac{1}{2} x^{2.3} + 2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文