我希望能够根据某些标志对方程的某些部分进行部分排版。例如,我有一个很长的计算结果,跨越多行,当我自己打印时,我希望完整显示,但当发送给其他人时,为了清晰起见,我希望仅显示第一行和最后一行。
我尝试定义\newif\detailed
和放置\ifdetailed
我\fi
想要控制的线条;但是,这只在gather
环境内部有效,而在内部无效align
。(align
只有当\if
和fi
位于同一“行”上时,它才会在内部有效,但如果我想隐藏整行,就会产生重影线)。
Lyx 的分支功能也不好,因为它被放置在数学模式中以仅包含方程的一部分。
一个简单的例子是:
\documentclass{article}
\usepackage{amsmath}
\newif\ifdetailed
\detailedfalse
\begin{document}
Test
\begin{align}
A
\ifdetailed
&=a+b\\
&=a+b+a-a\\
\fi
&=2a+b-a
\end{align}
Test223
\end{document}
这会产生控制序列错误。正如 StephenH 指出的那样,将其更改为
\documentclass{article}
\usepackage{amsmath}
\newif\ifdetailed \detailedtrue
%\detailedfalse %% Uncomment to remove detailed results
\begin{document}
Test
\begin{align}
A&=a+b\\
\ifdetailed
&=a+b+a-a\\
\fi
&=2a+b-a
\end{align}
Test
\end{document}
解决了问题。但是,这不允许将其完全缩小到一行。
答案1
您必须&
向解析器隐藏未使用的内容:
\documentclass{article}
\usepackage{amsmath}
\newif\ifdetailed
\detailedfalse
\makeatletter
\newcommand{\detailed}[1]{%
\ifdetailed
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
{#1}%
}
\begin{document}
Test
\begin{align}
A
\detailed{
&=a+b\\
&=a+b+a-a\\
}
&=2a+b-a
\end{align}
Test\detailedtrue
\begin{align}
A
\detailed{
&=a+b\\
&=a+b+a-a\\
}
&=2a+b-a
\end{align}
\end{document}
答案2
我知道它可以与\newif
和一起使用align
,但也许还值得查看comment
包或ifthen
包。
\documentclass{article}
\usepackage{amsmath}
\newif\ifdetailed \detailedtrue
%\detailedfalse %% Uncomment to remove detailed results
\begin{document}
Test
\begin{align}
A&=a+b\\
\ifdetailed
&=a+b+a-a\\
\fi
&=2a+b-a
\end{align}
Test
\end{document}