用於從 TeXShop 中的來源中刪除命令和關聯的大括號的腳本?

用於從 TeXShop 中的來源中刪除命令和關聯的大括號的腳本?

當我在 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}

相關內容