如何将方程的各个部分分成两行?

如何将方程的各个部分分成两行?

我有一个关于 Latex 中方程的问题。假设有一个简单的分段函数,如下所示(实际的函数项要长得多):

在此处输入图片描述

由于每行都很长,我想将选择器分成两行,但仍然与大小写保持一致。这可能吗?

\begin{equation}
    \label{eqn:c(n)}
    {
        c(n) = \begin{cases}
            f(x)), & $if n=0 where x=1$ \\[1em]
            f(x), & $if n\textgreater0 where x=c(n-1)+n$ \\
        \end{cases}
    }
\end{equation}

这是我目前所拥有的。

答案1

我建议您使用一个cases环境(由包提供amsmath)并在其中嵌入两个array环境。

在此处输入图片描述

\documentclass{article} % or some other suitable document class
\usepackage{amsmath}    % for 'cases' environment
\usepackage{booktabs}   % for '\addlinespace' macro

\begin{document}
\[
C(n)=
\begin{cases}
f(x), & \begin{array}{@{}l@{}}
          n=0\\
          \text{where $x=1$} 
        \end{array} \\ \addlinespace % increase the vertical separation
f(x), & \begin{array}{@{}l@{}}
          n>0\\
          \text{where $x=c(n-1)+n$}
        \end{array}
\end{cases}
\]
\end{document}

答案2

我能想到两种方法。我将使用环境来简化事情,但如果你自己amsmath cases手动构建东西,这种方法也同样有效。array

选项1(减少打字),使用左列的空单元格(参见标记为 ❶_ 的行以使内容排列整齐:

\[
C(n)=
\begin{cases}
f(x), &n=0\\
      &\textrm{where $x=1$}\\ % ❶
f(x), &n>0\\
      &\textrm{where $x=c(n-1)+n % ❶
\end{cases}
\]

请注意,我选择\textrm而不是,\text因为后者将继承周围文本的格式,这可能导致意外结果,例如定理的文本。

选项 2(也许更美观)。

首先,我们将定义一个命令\stackmath来建立单列数组。

\NewDocumentCommand{\stackmath}{m}
   {
     \begin{array}{@{} l @{}} % ❷
       #1
     \end{array}
   }

请注意,我们将@{}❷ 放在数组的两侧,以避免 LaTeX 默认在那里放置的额外间距。这是一个通常有用的命令,因为它可以让我们在数学模式的任何地方以多行形式排版左对齐数学,只需输入以下内容:

\stackmath{x<0\\x>0}

让线条堆积起来。

然后我们可以写

\[
C(n)=
\begin{cases}
f(x), &\stackmath{n=0\\
       \textrm{where $x=1$}}\\ % ❸
f(x), &\stackmath{n>0\\
      \textrm{where $x=c(n-1)+n}
\end{cases}
\]

你可能会发现自己想要使用❸处的可选参数\\来稍微打开一些内容,例如,在环境\\[5pt]中的行之间获得一些额外的空间cases

相关内容