我有一箇舊的LaTeX文檔(有很多的格式命令),我要轉換爲更現代的乳膠(我想要做的更新有以下幾個原因,而不是其中至少是減少內容和格式之間的耦合)。無論如何,文檔有很多電話到過時的命令\pmatrix{ .... }
,我願與新amsmath命令\begin{pmatrix} ... \end{pmatrix}
取代的。我一直在嘗試使用sed
來進行這種轉換,但我以前從未使用過它,並且遇到了麻煩。轉換乳膠pmatrix命令amsmath pmatrix環境中使用的sed
這裏是一個MWE LaTeX的輸入字符串
\pmatrix{0&0\cr \frac{1}{2}&0\cr 0&0\cr}\pmatrix{1&1\cr 1&1\cr 1&1\cr}
與預期輸出
\begin{pmatrix}0&0\\ \frac{1}{2}&0\\ 0&0\end{pmatrix}\begin{pmatrix}1&1\\ 1&1\\ 1&1\end{pmatrix}
,我一直在試圖使用的命令如下
sed 's/\\pmatrix{\(.*\cr[ ]*\)}/\\begin{pmatrix}\1 \\end{pmatrix}/g' <$WORKING_FILE >$OUTPUT_FILE
的變種
,但我已經能夠實現的最接近的輸出是
\begin{pmatrix}0 & 0 \\ 0 & 0 \\ 0 & 0 \end{pmatrix}
我敢肯定,這個問題涉及具有兩個調用pmatrix
並排,但我不知道如何修改正則表達式來完成這項工作。
我已搜查谷歌,但這麼新的正則表達式,我剛剛通過的所有版本的存在,並且其混淆使用,以及如何正確格式化這樣的事情。
謝謝,我會在一個位測試,並接受它是否工作 – slbass
這是非常接近,但也有一些'}'前的最後'\\}'。我編輯了這個問題來反映這一點。我認爲這個解決方案要求我以某種方式檢查一個不重複的字符序列'\\}',而不是'}',但我還沒有找到一種方法去做。 – slbass
@slbass上面的編輯可能適合你。如果你想讓輸出出現在同一行,輸出到'paste -sd'''。 – devnull