[英]Emacs (TeX): how to search and replace a whole region?
我打擾你有一些關於這個問題的提示:我正在使用一個非常臟的代碼在Latex中工作,由writer2latex生成(相當不錯的程序),使用Emacs,我正在嘗試查詢 - 替換多行代碼, 例如:
{\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.*
cq cj .*cm]
來查詢整個區域,但是,如果我使用這個替換-regexp,我只得到: Invalid regexp: "Invalid content of \\\\{\\\\}"
有關如何執行查詢的任何建議? 我有很多像這樣的線來代替...... :-)
確保重新語法是“讀取”, Cc選項卡 。 刪除初始反斜杠。 現在regexp應該可以工作,如果你把它拉到replace-regexp
您收到此錯誤消息,因為在Emacs的正則表達式中,花括號\\{
和\\}
具有特殊含義。 這些大括號用於指定緊跟在大括號之前的正則表達式部分應該匹配一定次數。
從regexp上的GNU Emacs 文檔 :
\\ {n \\}是一個后綴運算符,指定n次重復[...]
\\ {n,m \\}是一個后綴運算符,指定n和m次重復[...]
如果你希望你的正則表達式實際匹配大括號,請不要使用前導斜杠將其轉義:
{.*centering.*
Cq Cj .*cm]
為了在替換字符串中使用反斜杠,您必須使用另一個反斜杠來轉義它。 (當在代碼中執行此操作時,它很快變得非常難看,因為在雙引號字符串中,反斜杠本身必須已經轉義。但是,由於您以交互方式進行替換,因此不需要雙重轉義,因此兩個反斜杠就足夠了。 )
MC-% {.*centering.*
Cq Cj .*cm]
RET \\\\begin{figure}[tpb]
Cq Cj \\\\begin{center}
Cq Cj \\\\includegraphics[width=\\\\textwidth]
RET
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.