解决方案 1

解决方案 1

请考虑下面的代码:

\begin{align*}
    function = 
    \begin{cases} 
        case1 &\mbox{if } n = 0 \\
        \begin{cases} 
            case2 &\mbox{if } n = 1 \\
            \begin{cases} 
                case3 &\mbox{if } n = 2 \\
                case4 &\mbox{if } n = 3 
            \end{cases}
        \end{cases}
    \end{cases}
\end{align*}

这段代码的结果是这样的:

/quad我的问题是,如何在不作弊的情况下(即不使用or )对齐这些嵌套案例(或如果您愿意的话,数组)的条件/hspace以实现如下目标:

答案1

解决方案 1

其中一种smash方法就是这样做,尽管间距不是那么大。

代码

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
    function = 
    \begin{cases} 
        case1                                                                                           & \mbox{if } n = 0 \\
                                                                                                        & \mbox{if } n = 1 \\
        \smash{\begin{cases} case2                                                       & \\
                                                                                         & \\
                             \raisebox{8pt}{$\smash{\begin{cases} case3 & \\
                                                                  case4 & \end{cases}}$} & \end{cases}} & \mbox{if } n = 2 \\
                                                                                                        & \mbox{if } n = 3
    \end{cases}
\end{equation*}
\end{document}

输出

在此处输入图片描述

解决方案 2

借助\mathrlapmathtoolsmultirow包和一些arrays,这看起来更美观。

代码

\documentclass{article}
\usepackage{mathtools}
\usepackage{multirow}
\newcommand{\braceMeThree}{%
    \multirow{3}{*}{$\left\{\begin{array}{@{}l@{}} \null \\ \null \\ \null\end{array}\right.$}
}
\newcommand{\braceMeTwo}{%
    \multirow{2}{*}{$\left\{\begin{array}{@{}l@{}} \null \\ \null\end{array}\right.$}
}
\begin{document}
\begin{equation*}
    function = \left\{\begin{array}{@{}llll@{}}
        \mathrlap{case1}         &                        &       & \text{if } n = 0 \\
        \mathrlap{\braceMeThree} & \mathrlap{case2}       &       & \text{if } n = 1 \\
                                 & \mathrlap{\braceMeTwo} & case3 & \text{if } n = 2 \\
                                 &                        & case4 & \text{if } n = 3 \\
    \end{array}\right.
\end{equation*}

输出

在此处输入图片描述

答案2

以下是使用常规 s 的示例array

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{align*}
  \text{function} = 
  {\left\{\begin{array}{@{}l@{\quad}l@{}}
    \text{case}_1 & \text{if } n = 0 \\
    \left\{\begin{array}{@{}l@{}}
      \text{case}_2 \\
      \left\{\begin{array}{@{}l@{}}
        \text{case}_3 \\
        \text{case}_4
      \end{array}\right.\kern-\nulldelimiterspace \\
    \end{array}\right.\kern-\nulldelimiterspace
    & \begin{array}{@{}l@{}}
        \text{if } n = 1 \\
        \text{if } n = 2 \\ 
        \text{if } n = 3
      \end{array}
  \end{array}\right.}
\end{align*}
\end{document}

如果案件内容比较复杂,可能需要进行一些调整。

水平调整-\nulldelimiterspace确保\quad箱子和其条件之间保留原有的空间。

相关内容