条件、部分、方程式内的排版

条件、部分、方程式内的排版

我希望能够根据某些标志对方程的某些部分进行部分排版。例如,我有一个很长的计算结果,跨越多行,当我自己打印时,我希望完整显示,但当发送给其他人时,为了清晰起见,我希望仅显示第一行和最后一行。

我尝试定义\newif\detailed和放置\ifdetailed\fi想要控制的线条;但是,这只在gather环境内部有效,而在内部无效align。(align只有当\iffi位于同一“行”上时,它才会在内部有效,但如果我想隐藏整行,就会产生重影线)。

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}

enter image description here

答案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}

相关内容