2011-12-19 64 views
0

我打擾你有這個問題的一些提示:我正在Latex中使用一個非常髒的代碼,由writer2latex(相當不錯的程序生成),使用Emacs,我試圖查詢 - 替換多行的代碼,例如:Emacs(TeX):如何搜索和替換整個區域?

{\centering [Warning: Image ignored] % Unhandled or unsupported graphics: 
%\includegraphics[width=11.104cm,height=8.23cm]{img34} 

有可能成爲:

\begin{figure}[tpb] 
\begin{center} 
\includegraphics[width=\textwidth]{img34} 

使用的Mx重新建設者,我發現我可以強調整個區域,我需要用字符串來查詢替換: \{.*centering.*.*cm]但是,如果我Mx替換電子正則表達式使用此,我只得到:Invalid regexp: "Invalid content of \\{\\}" 任何關於如何執行查詢的建議?我有大量這樣的線代替...... :-)

回答

1

你收到此錯誤消息,因爲在Emacs的正則​​表達式花括號\{\}有特殊意義的正則表達式應該工作。這些大括號用於指定大括號之前的正則表達式部分應該匹配一定次數。

從GNU Emacs的documentation上正則表達式:

\ {N \} 的後綴操作符指定重複n次[...]

\ {N,M \} 是一個後綴運算n和m之間重複指定[...]

如果你希望你的正則表達式實際匹配大括號,不帶前導斜槓轉義:

{.*centering.*C-Q&A-J.*cm]

爲了在你有一個反斜槓逃脫它替換字符串使用反斜槓。 (當在代碼中這樣做時,它很快就會變得非常醜陋,因爲在雙引號字符串中,反斜槓本身必須已經被轉義。但是,由於您正在交互地進行替換,所以不需要雙轉義,因此兩個反斜槓就足夠了。 )

MC-%{.*centering.*CQ CJ.*cm]RET\\begin{figure}[tpb]CQ CJ\\begin{center}CQ CJ\\includegraphics[width=\\textwidth]RET

+0

謝謝你,完美的選擇區域,但是我只能用沒有任何「\」的文本字符串替換「{」,我在乳膠中需要它們!任何建議?ThanX – user1106732 2011-12-20 23:25:59

+0

大括號在替換字符串中不是問題,但是必須轉義反斜槓。我相應地更新了我的答案。如果它適用於您,請記住將答案標記爲「正確」。謝謝。 – Thomas 2011-12-21 06:00:55

+0

謝謝!你拯救了一個骯髒的新手:-P – user1106732 2011-12-21 21:35:28

1

確保重新語法是「讀取」,C-c標籤。刪除最初的反斜槓。現在,如果你拔成replace-regexp

+0

我做了:M-x重新生成器,C-C TAB,我得到:「Select syntax:read」。我需要在我的查詢中也有「\」和「{」,因爲它們對Latex非常重要... – user1106732 2011-12-20 23:22:12