Emacs (TeX): как искать и заменять целый регион? - PullRequest
0 голосов
/ 20 декабря 2011

Я мешаю вам дать несколько советов по этой проблеме: я работаю в 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 re-builder, я обнаружил, что могу подчеркнуть всерегион, который мне нужно запросить-заменить строкой: \{.*centering.*.*cm] но, если я Mx replace-regexp, используя это, я получу только: Invalid regexp: "Invalid content of \\{\\}" Anyпредложение о том, как выполнить запрос?У меня ОГРОМНОЕ количество строк, подобных этим, чтобы заменить ...: -)

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Вы получаете это сообщение об ошибке, потому что в регулярных выражениях Emacs фигурные скобки \{ и \} имеют особое значение. Эти фигурные скобки используются для указания того, что часть регулярного выражения непосредственно перед фигурными скобками должна соответствовать определенному числу раз.

Из документации GNU Emacs для регулярных выражений:

\ {п \} это постфиксный оператор, задающий n повторений [...]

\ {п, т \} является постфиксным оператором, определяющим между 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

1 голос
/ 20 декабря 2011

Убедитесь, что повторный синтаксис «прочитан», C-c tab . Удалите начальную обратную косую черту. Теперь регулярное выражение должно работать, если вы введете его в replace-regexp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...