How to draw such a diagram to show how the singularities are classified?
Incorrect demonstration:
Here is what you can do with the command \Edacsac of the package cascade (≥ 1.2 of 2021-08-23). \Edacsac is the word cascade written in reverse.
\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}
If you want alignment of the second-level braces:
\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}
I managed to do it with a tabular and \left/\right commands with brackets.
Although, I had to put text inside an array so my solution seems really ugly.
I also used the multirow package to merge some cells and be able to do it as you wanted. Anyway, the multirow package seems to have difficulties to vertically align so I had to adjust with the fixup-parameter.
Additionally, I needed amsmath because I needed this to use \left and \right sequences.
Finally, here's the code:
\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}
cascadecan't to such construction (it does structures in the other sens). I will try to write a new version ofcascadefor that kind of problem. – F. Pantigny Aug 16 '21 at 16:32