我正在尝试为课堂准备笔记,并希望在多个区域使用对齐环境,但可能有两种可能性。以下是 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{}
而不是猜测要留下多少空间:
笔记:
- 这确实需要你
\hidden
使用每个需要隐藏的行。
参考:
- 而不是
\color
我使用\MathColor
彩色符号 。
代码:
\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}
这个想法来自于: 为数组中的一条线着色