Quando estou editando o código-fonte no TeXShop, muitas vezes descubro que quero remover a ênfase de uma palavra ou frase. Mas excluir \emph
o início da palavra e o {}
entorno é um pouco mais chato do que eu gostaria que fosse.
Suponho que o que estou procurando é um script que eu possa executar no início de um comando (como \emph
) que varrerá da esquerda para a direita e excluirá tudo, exceto o texto entre chaves (ou seja, isso excluirá o "\emph", o "{" e o "}")
Algo que me tiraria de
This is \emph{emphasized} text
para
This is emphasized text
No próprio código.
Responder1
Não é uma solução TeX, mas você pode usar uma expressão regular, por exemplo, no vim:
:%s/\\emph{\([^}]*\)}/\1/g
Advertências: não remove inner \emph
's ( \emph{foo \emph{bar} baz}
), nem se \emph
abrange várias linhas. (Sinta-se à vontade para comentar sobre melhorias!)
Responder2
Se as mesmas modificações precisarem ser feitas paratodoso \emph
comando em documentos grandes ou em algumas partes grandes, sugiro que você não toque no comando \emph, mas redefina o comando (no preâmbulo ou no corpo do documento). A principal vantagem é que você pode alternar facilmente entre os estilos sem tocar em cada palavra enfatizada. O 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}
Responder3
Se bem entendi você quer algo assim:
\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}