2011-12-19 9 views
0

私はこの問題のためにいくつかのヒントを持っておかなければならない:私は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再Builderを使用して、私は私が文字列で照会、交換する必要がある地域全体に下線を引くことができることが分かりました: \{.*centering.*.*cm]ただし、I Mx replac e-regexpこれを使用して、私は得る:Invalid regexp: "Invalid content of \\{\\}" どのようにクエリを実行するための任意の提案?

答えて

1

にそれをヤンク場合はEmacsの正規表現で、中括弧\{\}は特別な意味を持っているので、あなたは、このエラーメッセージを取得している動作するはずです。これらの中かっこは、中括弧の直前の正規表現の部分が特定の回数だけ一致するように指定するために使用されます。

正規表現にGNU Emacsの documentationから

\ {N \} がn繰り返しを指定する後置演算子である[...]

\ {N、Mの\} であります

:あなたの正規表現は、実際に中括弧を一致させたい場合は、スラッシュでエスケープしていない

[...] nとm回の繰り返しの間で指定後置演算子

{.*centering.*C-Q C-jを使用すると、別のバックスラッシュでエスケープする必要が置換文字列にバックスラッシュを使用するためには.*cm]

。 (二重引用符で囲まれた文字列のバックスラッシュ自体が既にエスケープされていなければならないので、コード内でこれを行うと、すごく醜いものになります。 )

MC-%{.*centering.*CqをCjと.*cm]RET\\begin{figure}[tpb]CqをCjと\\begin{center}CqをCjと\\includegraphics[width=\\textwidth]RET

+0

地域を選択していただきありがとうございますが、「\」と"{"、私はラテックスでそれらが必要です!なにか提案を?ThanX – user1106732

+0

中括弧は置換文字列では問題ありませんが、バックスラッシュはエスケープする必要があります。私はそれに応じて私の答えを更新しました。それがあなたのために働く場合、答えを「正しい」と覚えておいてください。ありがとう。 – Thomas

+0

ありがとうございました!あなたは汚い初心者を救った: - P – user1106732

1

再構文が "read"、C-cタブであることを確認してください。最初のバックスラッシュを削除します。これで正規表現を使用すると、replace-regexp

+0

私は:M-x再ビルダー、C-c TABを取得しました。「構文の選択:読み取り」を取得しました。私は自分のクエリーに「\」と「{」を持っている必要があります。ラテックスにとっては非常に重要です。 – user1106732