我正在阅读一篇数学脚本,偶然发现了这幅“图片”,并想知道他是如何在 LaTeX 中排版它的,所以我想自己尝试一下。
一开始我想到了案例,但效果并不理想。然后我尝试了数组,但尝试将数组与顶行对齐,但没有得到比想要的更大的花括号,因此我没能成功。
我希望获得居中的外观,或者至少不需要手动添加间距。
我的尝试:
\begin{equation}
\begin{rcases}
\begin{rcases}
\begin{rcases}
\text{ganz rational, Polynom:} \\[-1ex]
y = f(x) = x \\
\text{gebrochen rational:} \\[-1ex]
y = f(x) = \frac1x
\end{rcases}
\quad \text{rational} \quad \\
\mskip220mu\text{irrational:} \\[-1ex]
\mskip220mu y = f(x) = \sqrt{x}
\end{rcases} \quad\text{algebraisch} \quad \\
\mskip360mu\text{transzendent:} \\[-1ex]
\mskip360mu y = f(x) = \sin x
\end{rcases}\quad \text{elementar}
\end{equation}
答案1
以下是您可以使用该包做的事情cascade
。
\documentclass{article}
\usepackage{geometry}
\usepackage{cascade,calc}
\begin{document}
\Cascade
{}
{
\Cascade
{}
{
\ShortCascade
{\begin{tabular}{c}ganz rational, Polynom:\\ $y=(x)=x$\end{tabular}}
{\begin{tabular}{c}gebrochen rational:\\ $y=f(x)=\frac{1}{x}$\end{tabular}}
rational
}
{}
{\begin{tabular}{c}irrational\\ $y=f(x)=\sqrt{x}$\end{tabular}}
algebraisch
}
{}
{\begin{tabular}{c}tranzendent\\ $y=f(x)=\sin x$\end{tabular}}
elemantar
\bigskip
\Cascade
{
\Cascade
{
\ShortCascade
{\begin{tabular}{c}ganz rational, Polynom:\\ $y=(x)=x$\end{tabular}}
{\begin{tabular}{c}gebrochen rational:\\ $y=f(x)=\frac{1}{x}$\end{tabular}}
rational
}
{}
{}
{\begin{tabular}{c}irrational\\ $y=f(x)=\sqrt{x}$\end{tabular}}
algebraisch
}
{}
{}
{\begin{tabular}{c}tranzendent\\ $y=f(x)=\sin x$\end{tabular}}
elemantar
\vspace{1cm}
\Cascade
{}
{
\Cascade
{}
{
\ShortCascade
{\begin{tabular}{c}ganz rational, Polynom:\\ $y=(x)=x$\end{tabular}}
{\begin{tabular}{c}gebrochen rational:\\ $y=f(x)=\frac{1}{x}$\end{tabular}}
\makebox[\widthof{$y=f(x)=\sqrt{x}$}]{rational}
}
{}
{\begin{tabular}{c}irrational\\ $y=f(x)=\sqrt{x}$\end{tabular}}
\makebox[\widthof{$y=f(x)=\sin(x)$}]{algebraisch}
}
{}
{\begin{tabular}{c}tranzendent\\ $y=f(x)=\sin x$\end{tabular}}
elemantar
\bigskip
\Cascade
{
\Cascade
{
\ShortCascade
{\begin{tabular}{c}ganz rational, Polynom:\\ $y=(x)=x$\end{tabular}}
{\begin{tabular}{c}gebrochen rational:\\ $y=f(x)=\frac{1}{x}$\end{tabular}}
\makebox[\widthof{$y=f(x)=\sqrt{x}$}]{rational}
}
{}
{}
{\begin{tabular}{c}irrational\\ $y=f(x)=\sqrt{x}$\end{tabular}}
\makebox[\widthof{$y=f(x)=\sin(x)$}]{algebraisch}
}
{}
{}
{\begin{tabular}{c}tranzendent\\ $y=f(x)=\sin x$\end{tabular}}
elemantar
\end{document}
答案2
第一个方法是使用以下array
包:
\newcolumntype{M}{>{$}c<{$}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{equation}
\begin{tabular}{M c} % ❶
\left.
\begin{array}{c C{1.0in}} % ❷
\left.
\begin{array}{c C{1.0in}} % ❸
\left.
\begin{tabular}{c} % ❹
ganz rational. Polynom:\\
$y=f(x)=x$\\[.4ex]
gebrochen rational:\\
$y=f(x)=\frac{1}{x}$
\end{tabular}
\right\}
&
rational\\
&
irrational:\break
$y=f(x)=\sqrt{x}$
\end{array}
\right\}
&
alebraisch\\
&
transcendent:\break
$y=f(x)=\sin x$
\end{array}
\right\}
&
elementar
\end{tabular}
\end{equation}
这里的秘诀是混合tabular
,并array
基于我们是否想要一个文本c
列(您可以tabular
在任何需要的地方使用array
。反之则不成立),并定义一种新的列类型C
,从而为我们提供一个居中p
样式的列。
但我们忽略了文本如何塞入括号内,这\arraycolsep
有点多余。我原本想用新的列类型做一些花哨的调整,在这里添加负空间,并通过更改来处理后者\arraycolsep
,然后我意识到
答案3
使用包rcases
的机制mathtools
可能相当于代码过度。几个嵌套tabular
环境以及适当放置的\left.
and\right\}
语句似乎可以一次性完成工作。
\documentclass{article}
\usepackage{booktabs} % for '\addlinespace' macro
\begin{document}
\begin{equation}
\setlength\tabcolsep{3pt} % default: 6pt
\left.
\begin{tabular}{@{}cc}
$\left.
\begin{tabular}{@{}cc}
$\left.
\begin{tabular}{@{}c}
ganz rational, Polynom:\\
$f(x)=x$ \\[12pt]
gebrochen rational:\\
$f(x)=1/x$
\end{tabular}
\right\}$
& rational \\
\addlinespace
& irrational: \\
& $f(x)=\sqrt{x}$
\end{tabular}
\right\}$
& algebraisch \\
\addlinespace
& transzendent:\\
& $f(x)=\sin x$
\end{tabular}
\right\}
\mbox{ elementar}
\end{equation}
\end{document}