2011-12-19 3 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] но, если I Mx replac e-regexp, используя это, я получаю только: Invalid regexp: "Invalid content of \\{\\}" Любое предложение о том, как выполнить запрос? У меня ОГРОМНОЕ количество строк, подобных этим, чтобы заменить ... :-)

ответ

1

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

С GNU Emacs documentation на регулярных выражениях:

\ {п \} является постфикс оператор определения п повторы [...]

\ {п, т \} является постфикса оператор задания между п и м повторениями [...]

Если вы хотите, чтобы ваше регулярное выражение на самом деле соответствовать фигурной скобке, не денется с слэшем:

{.*centering.*С-д С-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

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

+0

Я сделал: M-x re-builder, C-c TAB, я получил: «Выберите синтаксис: прочитайте». Мне нужно иметь в моем запросе также «\» и «{», потому что они очень важны для Latex ... – user1106732

 Смежные вопросы

  • Нет связанных вопросов^_^