使用命令对齐颜色和 vspace

使用命令对齐颜色和 vspace

我正在尝试为课堂准备笔记,并希望在多个区域使用对齐环境,但可能有两种可能性。以下是 mwe

\documentclass{amsart}
\usepackage{xcolor}

\newcommand\usehidden{1}
\ifnum \usehidden=1
    \newcommand{\hidden}[2]{\vspace*{#1}}
\else
    \newcommand{\hidden}[2]{{\color{red}{#2}}}
\fi 

\begin{document}
    \begin{align*}
        f(x) &= (x+1)^2\\
            &\hidden{7cm}{= (x+1)(x+1)\\
            &= x^2 + x + x + 1}\\
        &= x^2 + 2x + 1
    \end{align*}
\end{document}

基本上,这个想法是,当我打印学生的副本时,usehidden设置为1,并插入一个垂直空间,让学生手动填写。在我的副本上usehidden设置为0,信息实际上是打印出来的,但用红色,所以我知道那是学生被排除的部分。

因此,当我设置时,这种方法有效\usehidden{1},但当\usehidden{0}我因为颜色环境而遇到问题时。有没有办法在对齐环境中为多条线添加颜色?

另外,我注意到vspace没有给出合适的尺寸。有没有办法让它给出正确的尺寸?

问题是,我想多次使用这种格式。(我想我大概有 50 次?)因此,任何可以推广而不仅限于这个特定示例的东西都会很好。

答案1

我建议您使用\phantom{}而不是猜测要留下多少空间:

enter image description here

笔记:

  • 这确实需要你\hidden使用每个需要隐藏的行。

参考:

代码:

\documentclass{amsart}
\usepackage{xcolor}

%% https://tex.stackexchange.com/questions/85033/colored-symbols-in-latex
\newcommand*{\MathColor}{}
\def\MathColor#1#{\mathcoloraux{#1}}
\newcommand*{\mathcoloraux}[3]{%
  \protect\leavevmode
  \begingroup
    \color#1{#2}#3%
  \endgroup
}

\providecommand\usehidden{0}
\ifnum \usehidden=1\relax
    \newcommand{\hidden}[1]{\phantom{#1}}
\else
    \newcommand{\hidden}[1]{{\MathColor{red}{#1}}}
\fi 

\begin{document}
\begin{align*}
    f(x) &= (x+1)^2 \\
         & \hidden{= (x+1)(x+1)} \\
         & \hidden{= x^2 + x + x + 1} \\
    &= x^2 + 2x + 1
\end{align*}
\end{document}

答案2

如果可能的话,最好仍然可以使用数组来获得解决方案,但是在此之前,我发现使用数组的以下解决方法:

\documentclass{amsart}
\usepackage{xcolor}
\usepackage{array}


\newcommand\usehidden{0}

\ifnum \usehidden=1
    \newcommand{\hidden}[2]{&\vspace*{#1}\\}
\else
    \newcommand{\hidden}[2]{%
        \noalign{\gdef\mycolor{\color{red}}} %
        #2
        \noalign{\gdef\mycolor{}} 
    }
\fi 

\begin{document}
\def\mycolor{}
\newcolumntype{R}{>{\mycolor}r}
\newcolumntype{C}{>{\mycolor}c}
\newcolumntype{L}{>{\mycolor}l}

\[  
    \begin{array}{RL}
        f(x) &= (x+1)^2\\
        \hidden{7cm}{&= (x+1)(x+1)\\
            &= x^2 + x + x + 1\\}
        &= x^2 + 2x + 1
    \end{array}
\]
\end{document}

这个想法来自于: 为数组中的一条线着色

相关内容