不渲染(“评论”)具有特定颜色的文本

不渲染(“评论”)具有特定颜色的文本

\textcolor{Aquamarine}{...}假设我已使用不同颜色(例如、、、等)做了注释(内联注释或几段注释)。现在我想将和中的所有文本\textcolor{cyan}{...}视为注释,以便从编译的 PDF 中删除它们,而不必手动将它们包装在(包的)中间。\textcolor{Orange}{...}Orangecyan\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}

相关内容