Когда я редактирую исходный текст в TeXShop, я часто обнаруживаю, что хочу убрать акцент со слова или фразы. Но удаление the \emph
в начале слова и {}
вокруг него немного раздражает больше, чем мне бы хотелось.
Полагаю, я ищу скрипт, который можно выполнить в начале команды (например, \emph
), который будет сканировать слева направо и удалять все, кроме текста между фигурными скобками (т. е. который удалит «\emph», «{» и «}»).
Что-то, что унесло бы меня от
This is \emph{emphasized} text
к
This is emphasized text
В самом коде.
решение1
Это не решение TeX, но вы можете использовать регулярное выражение, например, в vim:
:%s/\\emph{\([^}]*\)}/\1/g
Предостережения: не удаляет внутренние \emph
скобки ( \emph{foo \emph{bar} baz}
), а также если они \emph
занимают несколько строк. (Не стесняйтесь оставлять комментарии для улучшений!)
решение2
Если те же самые изменения должны быть сделаны длявсекоманда \emph
в больших документах или некоторых больших частях, я предлагаю вам вообще не трогать команду \emph, а переопределить команду (в преамбуле или в теле документа). Главное преимущество в том, что вы можете легко переключаться между стилями, не трогая каждое выделенное слово. MWE:
\documentclass{article}
\begin{document}
% Normal behaviour
normal text \emph{emphasis text} \par
% Emphasis out
\renewcommand{\emph}[1]{#1}
normal text \emph{emphasis text} \par
% Emphasis become bold text
\renewcommand{\emph}[1]{\textbf{#1}}
normal text \emph{emphasis text} \par
% Emphasis become underlined text
\renewcommand{\emph}[1]{\underline{#1}}
normal text \emph{emphasis text} \par
\end{document}
решение3
Если я правильно понял, вы хотите что-то вроде этого:
\documentclass{article}
% \disable takes two arguments and only uses the second
\makeatletter
\let\disable\@secondoftwo
\makeatother
\begin{document}
This is \emph{emphasized} text
This is \disable\emph{emphasized} text
\end{document}