我正在编写一份包含一些数学证明的文档。我想在 LaTeX 中定义一个命令,使我能够为证明添加一些附加段落,这些段落仅在启用某个选项时显示。此外,这些附加段落应具有与其余文本不同的颜色。
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{etoolbox}
\providetoggle{detail}
\settoggle{detail}{true}
\newcommand{\note}[2]{\iftoggle{detail}{
\color{red} #1 }{#2}}
\begin{document}
\begin{align}
a & = \note{b \\
& = c \\
& = d \\
& = } e.
\end{align}
\end{document}
上述代码是一个最小示例。LaTeX 编译如预期,但颜色仅适用于“b”,而不适用于 中包含的其他术语\note
。
答案1
我不确定这是否是一个无限稳定的解决方案,但到目前为止它似乎有效。这个想法是改变\everymath
。在这里,我到达
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{etoolbox}
\providetoggle{detail}
\settoggle{detail}{true}
\newcommand{\note}[2]{\iftoggle{detail}{%
\gdef\mycolor{red}%
\color{red}
#1 \gdef\mycolor{black}\color{black}
}{#2}}
\everymath\expandafter{\the\everymath\color{\mycolor}}
\def\mycolor{black}
\begin{document}
\begin{align}
a & = \note{b \\
& = c \\
& = d \\
& = e} e.
\end{align}
\settoggle{detail}{false}
\begin{align}
a & = \note{b \\
& = c \\
& = d \\
& = e} e.
\end{align}
\end{document}
可以让它更整洁。使用起来可能更干净,\colorlet
但我无法将其设为全局(或将其从组中偷运出来),除非使用,\globaldefs1
但这是不能使用的东西,所以我使用了宏。
答案2
如果您愿意在 中使用稍微改变的语法\note
,即\&
而不是&
,那么这可能会起作用:
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{etoolbox}
\providetoggle{detail}
\def\&{&\color{red}}
\def\note#1{\iftoggle{detail}{\color{red}#1\color{black}}{}}
\begin{document}
\settoggle{detail}{true}
\begin{align}
a & = \note{ b \\
\& = c \\
\& = d \\
\& = } e.
\end{align}
\settoggle{detail}{false}
\begin{align}
a & = \note{ b \\
\& = c \\
\& = d \\
\& = } e.
\end{align}
\end{document}
答案3
我认为您希望在切换开关为 时插入一些内容true
,并且这些内容应为红色。当切换开关为 时false
,这些内容应不可见。
这里的问题是\color
只能到达当前框的末尾,并且align
(或任何其他array
)环境中的每个单元格都代表这样的框。
因此,您需要以某种方式告诉 LaTeX 在每个后续框(单元格)的开头选择颜色。您可以按如下方式解决问题:
\documentclass{article}
\usepackage{amsmath,etoolbox,xcolor}
\providetoggle{detail}
\settoggle{detail}{false}
\newcommand{\note}[2]{\iftoggle{detail}{#1 \color{red} #2 \color{black}}{}}
\begin{document}
\begin{align}
a & = \note{}{ b \\ }
\note{ & }{ = c \\ }
\note{ & }{ = d \\ }
\note{ & }{ = } e
\end{align}
\end{document}
如果将切换设置为true
,则会输出以下内容:
当切换设置为时,结果如下false
:
然而,虽然这适用于这个非常简单的例子,但它可能不适用于其他更复杂的情况下……