\textcolor{Aquamarine}{...}
假设我已使用不同颜色(例如、、、等)做了注释(内联注释或几段注释)。现在我想将和中的所有文本\textcolor{cyan}{...}
视为注释,以便从编译的 PDF 中删除它们,而不必手动将它们包装在(包的)中间。\textcolor{Orange}{...}
Orange
cyan
\begin{comment} ... \end{comment}
comment
有没有一个好的方法可以做到这一点,比如命令/宏(使用 \iffalse ... \fi
?)它接受要省略的颜色列表并完成这项工作?
提前致谢。
答案1
我的方法如下:定义您自己的宏。例如,\myorangetext
;然后使用全局搜索和替换将每次出现的更改textcolor{Orange}
为myorangetext
;冲洗,重复。
现在你可以简单地做这件事:
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{xstring}
\newcommand{\EatOneArg}[1]{}
\newcommand{\myorangetext}{\textcolor{Orange}}
\newcommand{\myaquatext}{\textcolor{Aquamarine}}
%
% comment or uncomment these
%
% \renewcommand{\myorangetext}{\EatOneArg}
\renewcommand{\myaquatext}{\EatOneArg}
\begin{document}
And this is my code
\myaquatext{Some text Aquamarine},
some text without color,
\myorangetext{some text in Orange}
\end{document}
无论是否对命令的每次重新定义进行评论,您都可以更改它的外观...并且如果将来您想将橙色文本更改为脚注等,您可以这样做...
\renewcommand{\myaquatext}{\footnote}
这里主要的哲学区别在于,定义你自己的宏时,你不需要声明如何打印一些文字,但是文本是什么:这是关于 LaTeX 的基本思想:用语义描述,而不是视觉描述,尽可能将内容和可视化分开。
(所以,实际上,不要命名宏\myorangetext
等:称它们为\commentforFred
或\commentforProf
或无论它们真正意思是)
答案2
根据\commentColor
您设置并重新定义\textcolor
,这里有一个解决方案。
\documentclass{article}
\usepackage[svgnames]{xcolor}
%\usepackage{xparse} % not needed for LaTeX 2020-10-01 or later
\usepackage{xstring}
\let\textcolorold\textcolor
\def\commentColor{Orange}
\RenewDocumentCommand\textcolor{mm}{\IfStrEq{#1}{\commentColor}{}{\textcolorold{#1}{#2}}}
\begin{document}
And this is my code
\textcolor{Aquamarine}{Some text}, \textcolor{cyan}{Not a comment}, \textcolor{Orange}{considered as comment}
\end{document}