![如何将 $...$ 转换为 \(...\)](https://linux22.com/image/328353/%E5%A6%82%E4%BD%95%E5%B0%86%20%24...%24%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20%5C(...%5C)%20.png)
因此根据
为什么 \[ ... \] 比 $$ ... $$ 更可取?和
对于数学模式来说,\( 和 \) 是否比美元符号更可取?
我应该使用\(...\)
而不是$...$
和\[...\]
而不是
$$...$$
。
但是,如果我的文档中已经多次使用了美元符号,该怎么办?我该如何转换它们?简单的查找和替换不起作用,因为:
- 它不关心 $$ 是开始还是结束;并且
- 我在文中使用美元符号(指代货币)。
有人对此有好的建议吗?
答案1
这在很大程度上取决于您使用的编辑器及其提供的功能,因此我怀疑不会有一个答案;但是,如果您的编辑器具有良好的正则表达式支持,那么这应该非常容易。
以下是如何匹配$...$
/\s\$(.|\n)+?\$/g
类似地,匹配$$...$$
:
/\s\$\$(.|\n)+?\$\$/g
这将无法匹配美元符号,因为它们必须用转义符转义,\$
而上述模式要求美元符号前有任何空白字符(空格、制表符或换行符)。您可以看到一个很好的可视化效果这里和这里分别。
如果您的编辑器支持s
Perl 的标志,那么您可以简化(.|\n)+?
为.+?
就像.
匹配新行一样。
最后,将其与替换结合起来,你会得到:
s/(\s)\$(.+?)\$/\1\(\2\)/sg
请注意,我没有转义某些字符,因为这将取决于正则表达式的特定实现。特别是,组括号可能需要\(...\)
,并且替换中的+
和?
反斜杠可能也需要转义,具体取决于您使用的正则表达式实现。
如果您在命令行中并且有 Perl,那么以下两个命令应该可以解决问题:
perl -077pi.bak -e 's/(\s)\$\$(.+?)\$\$/\1\\[\2\\]/sg' document.tex
perl -077pi.bak -e 's/(\s)\$(.+?)\$/\1\\(\2\\)/sg' document.tex
请注意,这将不是匹配文件最开始的任何内容;不过,我认为这不会是一个大问题,因为文件的开头通常是一个注释,或者至少是\documentclass
。
答案2
单一$
是可以的,并且支持内联数学的语法,甚至$$
对于显示数学也大多没问题。它们的样式不好,但大多数时候(如果您不使用fleqn
),它们会给出与相同的输出,因此\[..\]
您可以在编辑公式时将其更改$$
为\[
作为常规编辑的一部分,如果您对正则表达式替换没有信心,则无需对文档进行全局编辑,如果正则表达式错误,这可能会弊大于利。因此,请尝试继续使用,但不要因为文档中已有内容\[
而失眠:-)$$