1

私のラテックスファイルで、私は定義しました

\newcommand{\replace}[2]{\textcolor{red}{\sout{#1} }\textcolor{blue}{{#2}}}

変更を強調するだけです。したがって、私のペーパー ドラフトでは、

\replace{old text}{new text}

現在、論文は受理されており、クリーン バージョンを取得したいと考えています。emacs Regex replacement を使用してそれらすべてを次のように変更するにはどうすればよいですか?

new text
4

2 に答える 2

1

これを行う非常に簡単な方法は、replaceコマンドを変更して、新しいテキストのみを出力するようにすることです。

\newcommand{\replace}[2]{#2}

それ以外の場合は、次のようなキーボードマクロを使用してこれを行います。

C-s           ;; isearch-forward
\             ;; self-insert-command
replace{      ;; self-insert-command * 8
RET           ;; newline
<left>        ;; backward-char
ESC <C-right> ;; forward-sexp
C-SPC         ;; set-mark-command
C-r           ;; isearch-backward
\             ;; self-insert-command
replace       ;; self-insert-command * 7
RET           ;; newline
C-w           ;; kill-region
2*C-SPC       ;; set-mark-command
ESC <C-right> ;; forward-sexp
DEL           ;; delete-backward-char
C-u C-SPC     ;; set-mark-command
C-d           ;; delete-char

このキーボードマクロの背後にあるロジックは、\replace{コマンドを検索し、を使用forward-sexpbackward-sexpて、バランスの取れた`中括弧のペアを移動することです。

編集:のバインディングforward-sexpは伝統的にとして記述されていることに注意してください。ただしC-M-<right>、このようなキーの押下はウィンドウマネージャーによって傍受される可能性があります(少なくともLinuxボックスでは非常に頻繁な動作です)。したがって、多くの場合、ESCC-<right>代わりに入力する方が簡単です。

于 2012-12-11T06:52:51.723 に答える
1

コマンドquery-replace-regexp(M-x query-replace-regexpまたはC-M-%) を次のパターンで使用します。

\\replace{.+?}{\(.+?\)}

および次の置換文字列:

\1

中かっこ内のクエスチョン マークに注意してください。これにより、検索が遅延 (非貪欲) になり、一致する文字ができるだけ少なくなることを意味します。

于 2012-12-11T08:28:23.383 に答える