多个花括号将一个部分向右对齐,另一个部分向左对齐

多个花括号将一个部分向右对齐,另一个部分向左对齐

如何绘制这样的图表来显示奇点是如何分类的?

在此处输入图片描述

在此处输入图片描述

错误演示:

在此处输入图片描述

答案1

以下是您可以使用\Edacsac软件包cascade(≥ 2021-08-23 的 1.2)的命令执行的操作。\Edacsac级联反过来写。

\documentclass{article}
\usepackage{cascade}

\begin{document}

Singularity
\Edacsac
  {Elementary}
  {
    \Edacsac          
      {Non-degenerate Elementary}
      {\ShortEdacsac{Hyperbolic}{Non-Hyperbolic}}
      {Degenerate Elementary}
      {}
  }
  {Non-Elementary}
  {\ShortEdacsac{Nilpotent}{Higher order}}

\end{document}

第一个代码的输出

如果要对齐第二级括号:

\documentclass{article}
\usepackage{cascade}
\usepackage{calc}

\begin{document}

Singularity
\Edacsac
  {\makebox[\widthof{Non-Elementary}][r]{Elementary}}
  {
    \Edacsac          
      {Non-degenerate Elementary}
      {\ShortEdacsac{Hyperbolic}{Non-Hyperbolic}}
      {Degenerate Elementary}
      {}
  }
  {Non-Elementary }
  {\ShortEdacsac{Nilpotent}{Higher order}}

\end{document}

第二段代码的输出

答案2

我设法用带括号的tabularand \left/\right命令完成了此操作。尽管我必须将文本放在数组中,因此我的解决方案看起来真的很糟糕
我还用这个multirow合并一些细胞,并能够按照你想要的方式去做。无论如何,multirow包似乎难以垂直对齐所以我必须使用fixup参数进行调整。

此外,我需要,amsmath因为我需要这个来使用\left\right序列。

最后,代码如下:

\documentclass{article}
\usepackage{multirow}
\usepackage{amsmath}
\def\arraystretch{1.5}

\begin{document}
\begin{tabular}{l@{}l@{}l@{}l}
\multirow{3}{*}[-12pt]{Singularity} & \multirow{3}{*}[-8pt]{$\left\{\begin{array}{@{}r@{}} \text{Elementary}\\[27.5pt]\text{Non-elementary}\end{array}\right.$\vspace{1cm}} & \multirow{2}{*}{$\left\{\begin{array}{@{}l@{}} \text{Non-degenerate Elementary}\\\text{Degenerate Elementary}\end{array}\right.$} & $\left\{\begin{array}{@{}l@{}} \text{Hyperbolic}\\\text{Non-Hyperbolic}\end{array}\right.$  \\
 & & & \\
 & & $\left\{\begin{array}{@{}l@{}} \text{Nilpotent}\\\text{Higher order}\end{array}\right.$ &
\end{tabular}
\end{document}

它看起来是这样的: LaTeX 输出

相关内容