regex - 如何使用 perl 或 sed 等命令行工具替换 LaTex $ 分隔符?
问题描述
我有一堆用 LaTex 编写的方程式的 Jupyter Notebooks。我知道我可以将笔记本转换为 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
or sed
(或其他任何东西)转换$y = w'x
为$latex y = w'x$
?
我知道我可以编写一个程序来完成它,但我认为这有点过头了,因为我确信这些可用的命令行工具可以做到这一点。此外,在 Windows 和 Mac/Linux 上都可用的任何工具都会是一个奖励,因为我在这两种环境类型上工作,并且不想求助于类似 *nix 的环境来进行这种转换(虽然,Windows 确实现在有 Windows Linux 子系统,所以我想如果它只是一个 Linux 工具可能没问题)。
我试图从这篇文章sed
(在 Mac 上)修改这个表达式,但它不起作用。
sed -e ' /\$\$/{s/\$\$/{\$latex }/;:a;N;/\$\$/!ba;s/\$\$/{\$}/};s/^\(\$\)\(.*\)\(\$\)$/{\$latex }\2{\$}/' test.html
意外的 EOF(待处理的 })
解决方案
您可以使用以下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
没有\
推荐阅读
- database - Ignite:推送数据后可以设置亲和力键吗?
- excel - 列平均值的数据透视表 DAX 度量
- java - 应用程序登录,但重定向回登录
- java - 将 JHipster 项目部署到 tomcat
- c# - 将 Outlook 邮件和附件转换为 PDF 的最佳方法(最好将它们合并)?
- php - 重力形式 (AJAX) 响应出现在 iframe 中
- hibernate - Hibernate - 在一个查询中初始化多个集合
- reactjs - ThemeProvider 不会将主题应用于材质 ui 库中的子组件
- rust - 我如何才能限定或保持更高的优先级,而不是由特征提供的方法?
- postgresql - 如何在 yii2 updateAll() 中使用替换查询?