當我在 TeXShop 中編輯原始碼時,我經常發現我想要刪除某個單字或短語的強調。但是\emph
從單字的開頭和{}
周圍刪除 the 比我希望的更煩人。
我想我正在尋找的是一個可以在命令(例如\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 命令,而是重新定義該命令(在序言或正文文檔中)。主要優點是您可以輕鬆地在樣式之間切換,而無需觸摸每個強調的單字。氣象局:
\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}