在对齐环境中可选地将多行切换为红色

在对齐环境中可选地将多行切换为红色

我正在编写一份包含一些数学证明的文档。我想在 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

在此处输入图片描述

然而,虽然这适用于这个非常简单的例子,但它可能不适用于其他更复杂的情况下……

相关内容