如何將 $...$ 轉換為 \(...\)

如何將 $...$ 轉換為 \(...\)

所以根據 為什麼 \[ ... \] 優於 $$ ... $$?對於數學模式來說,\( 和 \) 比美元符號好嗎? 我應該使用\(...\)代替$...$\[...\]代替 $$...$$

但是,如果我的文件中已經使用了一些美元符號怎麼辦?我如何轉換它們?簡單的查找和替換將不起作用,因為:

  1. 它不會在乎 $$ 是開始還是結束;和
  2. 我在文本中使用美元符號(指貨幣)。

有人對此有什麼巧妙的建議嗎?

答案1

這在很大程度上取決於您使用的編輯器及其提供的功能,因此我懷疑是否會有一個單一的答案;但是,如果您的編輯器具有良好的正規表示式支持,那麼這應該很容易。

您可以透過以下方式進行配對$...$

/\s\$(.|\n)+?\$/g

類似地,匹配$$...$$

/\s\$\$(.|\n)+?\$\$/g

這將與美元符號不匹配,因為它們必須使用轉義,\$並且上述模式需要美元符號之前的任何空白字元(空格、製表符或換行符)。你可以看到一個很好的視覺化效果這裡這裡分別。

如果您的編輯器支援sPerl 的標誌,那麼您也可以簡化(.|\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

Single$很好,並且支援內聯數學語法,甚至$$對於顯示數學也大多可以。它們的風格很糟糕,但大多數時候(如果您不使用fleqn)它們會給出相同的輸出,因此\[..\]您可以在編輯公式時將其更改$$\[常規編輯的一部分,如果您對正則表達式替換沒有信心並不迫切需要對文件進行全域編輯,如果正規表示式錯誤,這可能弊大於利。因此,請嘗試使用\[“前進”,但不要因為$$文件中已經存在的內容而失眠:-)

相關內容