
我在環境的幫助下創建了一棵樹cases
。 MWE 是這樣的:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\begin{document}
\tiny
\hyphenpenalty10000%
\[
\begin{cases}
\parbox{1.5cm}{Doctrina de\\ los elementos}
\begin{cases}
\parbox{1.5cm}{Estética\\ trascendental}\\
\parbox{1.5cm}{Lógica\\ trascendental}
\begin{cases}
\parbox{1.5cm}{Analítica\\ trascendental}
\begin{cases}
\begin{minipage}{6em}
Analítica de los conceptos\\[2pt]
Analítica de los principios
\end{minipage}
\end{cases}\\
\parbox{1.5cm}{Dialéctica\\ trascendental}
\begin{cases}
\parbox{1.5cm}{Conceptos de\\ la razón pura}\\[6pt]
\parbox{1.5cm}{Inferencias\\ dialécticas de\\ la razón pura}
\begin{cases}
\begin{minipage}{6em}\raggedright
Paralogismos de la razón pura\\[3pt]
Antinomia de la razón\\
Ideal de la razón pura
\end{minipage}
\end{cases}
\end{cases}
\end{cases}
\end{cases}
\vspace*{12pt}\\
\parbox{1.5cm}{Doctrina\\ del método}
\begin{cases}
\begin{minipage}{6em}\raggedright
Disciplina\\[2pt]
Canon\\[2pt]
Arquitectónica\\[2pt]
Historia de la razón pura
\end{minipage}
\end{cases}
\end{cases}
\]
\end{document}
結果是這樣的:
然而,我對結果不太滿意。例如,在倒數第二個「列」中,第一個大括號距離第二個大括號太近。另請注意
\\[2pt]
代碼,以強制調整間距。
我想知道是否有更好的方法來設置這棵樹。 (我嘗試過一些 TikZ,但沒有效果。)
答案1
正如我在評論中所建議的,在這裡使用我的答案,多個方括號或圓括號內有文本,可以消除OP注意到的擠壓組。另外,它允許項目標記以及可變的列寬定義,因此不需要手動換行(儘管在這裡,所有列都固定為 0.6 英吋)。
編輯以兩種方式改進答案:
我已加載
amsmath
以糾正縮放大括號寬度問題。重新編輯,因為即使使用amsmath
,也會出現問題,即 a 的寬度\left\{
隨關聯元素的高度變化,從而導致未對齊。我已經介紹過它是用來設定模型高度的\def\fudgeheight{3}
修訂版。希望它可以保持這個值。\skipcol
\left\{
由於任何給定列中的項目標記應該相同以實現適當的間距,因此我允許一次為整個列定義項目標記,而不是要求每個
\BL
項目都指定它們。預設值仍然可以用可選參數覆蓋。
這是 MWE。
\documentclass{article}
\usepackage{amsmath}% FIXES WIDTH OF \left\{
\newcounter{levelcount}
\def\levelwidth {.6in}%NOT USED HERE, WITHOUT LEADING TEXT
\def\levelwidthi {.6in}
\def\levelwidthii {.6in}
\def\levelwidthiii{.6in}
\def\levelwidthiv {.6in}
\def\levelwidthv {.6in}
\def\levelmarki {$\dag$}
\def\levelmarkii {$-$}
\def\levelmarkiii{$+$}
\def\levelmarkiv {$\bullet$}
\def\levelmarkv {*}
\def\fudgeheight{3}
\newcommand\BL[2][\csname levelmark\romannumeral\thelevelcount\endcsname]{#1\,\parbox[t]{%
\csname levelwidth\romannumeral\thelevelcount\endcsname}{\raggedright#2}}
\def\level#1{\stepcounter{levelcount}%
\unskip$\left\{\vcenter{\hbox{\shortstack{#1}}}\right.$%
\addtocounter{levelcount}{-1}\ignorespaces}
\newcommand\skipcol[2][\relax]{%
\ifx\relax#1\skipcolhelp{\csname levelmark\romannumeral#2\endcsname}%
\else\skipcolhelp{#1}\fi}
\newcommand\skipcolhelp[1]{%
\smash{\phantom{\level{\BL[#1]{\rule{1pt}{\fudgeheight\baselineskip}}}}}}
\begin{document}
\scriptsize
\level{
\BL{Doctrina de los elementos}
\level{
\BL{Estetica trascendental}\skipcol{3}\skipcol{4}\skipcol{5}\cr
\BL{Logica trascendental}
\level{
\BL{Analitica trascendental}
\level{
\BL{Analitica de los conceptos}\cr
\BL{Analitica de los principios}\cr
}\skipcol{5}\cr
\BL{Dialectica trascendental}
\level{\cr
\BL{Conceptos de la razon pura}\skipcol{5}\cr
\BL{Inferencias dialecticas de la rason pura}
\level{
\BL{Paralogismos de la razon pura}\cr
\BL{Antinomia de la razon}\cr
\BL{Ideal de la razon pura}
}
}
}
}
\cr
\BL{Doctrina del metodo}
\level{
\BL{Disciplina}\cr
\BL{Architecture}\cr
\BL{History de la razon pura}
}\skipcol{3}\skipcol{4}\skipcol{5}
}
\end{document}
OP 更喜歡沒有項目標記的答案。這可以透過設定輕鬆完成
\def\levelmarki {}
\def\levelmarkii {}
\def\levelmarkiii{}
\def\levelmarkiv {}
\def\levelmarkv {}
在序言中。但是,如果沒有標記提供的視覺提示,人們可能需要在項目之間進行一些額外的垂直分隔。這可以透過在\cr
專案之間添加額外的一兩個來完成\BL
,如下面的 MWE 所示。
\documentclass{article}
\usepackage{amsmath}% FIXES WIDTH OF \left\{
\newcounter{levelcount}
\def\levelwidth {.6in}%NOT USED HERE, WITHOUT LEADING TEXT
\def\levelwidthi {.6in}
\def\levelwidthii {.6in}
\def\levelwidthiii{.6in}
\def\levelwidthiv {.6in}
\def\levelwidthv {.6in}
\def\levelmarki {}
\def\levelmarkii {}
\def\levelmarkiii{}
\def\levelmarkiv {}
\def\levelmarkv {}
\def\fudgeheight{3}
\newcommand\BL[2][\csname levelmark\romannumeral\thelevelcount\endcsname]{#1\,\parbox[t]{%
\csname levelwidth\romannumeral\thelevelcount\endcsname}{\raggedright#2}}
\def\level#1{\stepcounter{levelcount}%
\unskip$\left\{\vcenter{\hbox{\shortstack{#1}}}\right.$%
\addtocounter{levelcount}{-1}\ignorespaces}
\newcommand\skipcol[2][\relax]{%
\ifx\relax#1\skipcolhelp{\csname levelmark\romannumeral#2\endcsname}%
\else\skipcolhelp{#1}\fi}
\newcommand\skipcolhelp[1]{%
\smash{\phantom{\level{\BL[#1]{\rule{1pt}{\fudgeheight\baselineskip}}}}}}
\begin{document}
\scriptsize
\level{
\BL{Doctrina de los elementos}
\level{
\BL{Estetica trascendental}\skipcol{3}\skipcol{4}\skipcol{5}\cr
\BL{Logica trascendental}
\level{
\BL{Analitica trascendental}
\level{
\BL{Analitica de los conceptos}\cr\cr
\BL{Analitica de los principios}\cr\cr
}\skipcol{5}\cr
\BL{Dialectica trascendental}
\level{\cr
\BL{Conceptos de la razon pura}\skipcol{5}\cr
\BL{Inferencias dialecticas de la rason pura}
\level{
\BL{Paralogismos de la razon pura}\cr\cr
\BL{Antinomia de la razon}\cr\cr
\BL{Ideal de la razon pura}
}
}
}
}
\cr
\BL{Doctrina del metodo}
\level{
\BL{Disciplina}\cr\cr\cr
\BL{Architecture}\cr\cr\cr
\BL{History de la razon pura}
}\skipcol{3}\skipcol{4}\skipcol{5}
}
\end{document}
答案2
Schemata 是一個基本上用於繪製模式的套件。它定義了一系列巨集來方便此類圖的繪製和調整。
最簡單的使用方法是遵循手冊。首先僅使用\schema
和建立一個基本架構\schemabox
。然後根據需要從右到左調整,\smallskip
在右側葉子之間添加一個左右。然後根據需要\schema
進行更改\Schema
,始終從右到左進行操作,以避免需要重做調整。該手冊比我在這裡更好地解釋了這個過程。
這是基於您的 MWE 的最終結果的粗略第一遍版本。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amssymb}
\usepackage{schemata}
\begin{document}
\Schema{4.5ex}{19ex}{%
}{%
\Schema{-16.75ex}{9.25ex}{%
\schemabox{Doctrina de\\los elementos}
}{%
\schemabox{%
Estética\\trascendental
}%
\Schema{-8ex}{9ex}{%
\schemabox{Lógica\\trascendental}
}{%
\schema{%
\schemabox{Analítica\\ trascendental}
}{%
\schemabox{%
Analítica de\\los conceptos
}\smallskip
\schemabox{%
Analítica de\\los principios
}
}\smallskip
\Schema{-5.5ex}{7.5ex}{% change this \schema to \Schema first
\schemabox{%
Dialéctica\\
trascendental
}%
}{%
\schemabox{%
Conceptos de\\
la razón pura
}\smallskip
\schema{%
\schemabox{%
Inferencias\\
dialécticas de\\
la razón pura\\
}%
}{%
\schemabox{%
\schemabox{%
Paralogismos\\
de la razón\\
pura
}\smallskip\\
\schemabox{%
Antinomia\\
de la razón\\
Ideal de la\\
razón pura
}%
}%
}
}%
}%
}\smallskip
\schema{%
\schemabox{Doctrina\\del método}
}{%
\schemabox{%
Disciplina\\
Canon\\
Arquitectónica\\
Historia de la razón pura
}
}
}
\end{document}
答案3
我無法提供靈活的解決方案,但可以提供兩種不同的解決方案。第一個創建的內容與原始 MWE 類似,但間距更好。我將所有內容都放在小頁面中以保持統一,您可能想要更改它:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\begin{document}
\tiny
\hyphenpenalty10000%
\[
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Doctrina de\\ los elementos}\end{minipage}
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Estética\\ trascendental}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Lógica\\ trascendental}\end{minipage}
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Analítica\\ trascendental}\end{minipage}
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Analítica de\\ los conceptos}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Analítica de\\ los principos}\end{minipage}
\end{aligned}
\right.
\\
&\begin{minipage}{1.5cm}\raggedright{Dialéctica\\ trascendental}\end{minipage}
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Conceptos de\\ la razón pura}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Inferencias\\ dialécticas de\\ la razón pura}\end{minipage}
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Paralogismos\\ de la razón\\ pura}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Antinomia de la razón}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Ideal de la razón pura}\end{minipage}
\end{aligned}
\right.
\end{aligned}
\right.
\end{aligned}
\right.
\end{aligned}
\right.
\\
&\begin{minipage}{1.5cm}\raggedright{Doctrina\\ del método}\end{minipage}
\smash[b]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Disciplina}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Canon}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Arquitectónica}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Historia de la\\ razón pura}\end{minipage}
\end{aligned}
\right.}
\end{aligned}
\right.
\]
第二個更符合我個人的口味,但它也有自己的問題。它適用於這個例子,但是當相對的分支重疊時就會出現問題,所以這不是一個普遍的事情:
\[
\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Doctrina de\\ los elementos}\end{minipage}
\smash[t]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Estética\\ trascendental}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Lógica\\ trascendental}\end{minipage}
\smash[b]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Analítica\\ trascendental}\end{minipage}
\smash[t]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Analítica de\\ los conceptos}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Analítica de\\ los principos}\end{minipage}
\end{aligned}
\right.}
\\
&\begin{minipage}{1.5cm}\raggedright{Dialéctica\\ trascendental}\end{minipage}
\smash[b]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Conceptos de\\ la razón pura}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Inferencias\\ dialécticas de\\ la razón pura}\end{minipage}
\smash[b]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Paralogismos\\ de la razón\\ pura}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Antinomia de la razón}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Ideal de la razón pura}\end{minipage}
\end{aligned}
\right.}
\end{aligned}
\right.}
\end{aligned}
\right.}
\end{aligned}
\right.}
\\
&\begin{minipage}{1.5cm}\raggedright{Doctrina\\ del método}\end{minipage}
\smash[b]{\left\{
\begin{aligned}
&\begin{minipage}{1.5cm}\raggedright{Disciplina}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Canon}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Arquitectónica}\end{minipage}
\\
&\begin{minipage}{1.5cm}\raggedright{Historia de la\\ razón pura}\end{minipage}
\end{aligned}
\right.}
\end{aligned}
\right.
\]
\end{document}
答案4
使用TikZ
,這將是另一種選擇(如下這個答案):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathreplacing}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\begin{document}
\begin{tikzpicture}
\hyphenpenalty10000
\node (main) {};
\begin{scope}[node distance=1em, text width=4em, align=left]
\node [right=of main, yshift=6em] (a1) {Doctrina de los elementos};
\node [right=of main, yshift=-6em] (a2) {Doctrina del método};
\end{scope}
\draw[decorate,decoration={brace, mirror}] (a1.north west) -- (a2.south west);
\begin{scope}[node distance=1em, text width=6em, align=left]
\node [right=of a1, yshift= 2em] (b1) {Estética trascendental};
\node [right=of a1, yshift= -2em] (b2) {Lógica trascendental};
\end{scope}
\draw[decorate,decoration={brace,mirror}] (b1.north west) -- (b2.south west);
\begin{scope}[node distance=1em, text width=2cm, align=left]
\node [right=of b2, yshift= 6em] (c1) {Analítica trascendental};
\node [right=of b2, yshift= -6em] (c2) {Dialéctica trascendental};
\end{scope}
\draw[decorate,decoration={brace,mirror}] (c1.north west) -- (c2.south west);
\begin{scope}[node distance=1em, text width=2cm, align=left]
\node [right=of c1, yshift= 3em] (d1) {Analítica de los conceptos};
\node [right=of c1, yshift= -3em] (d2) {Analítica de los principios};
\end{scope}
\draw[decorate,decoration={brace,mirror}] (d1.north west) -- (d2.south west);
\begin{scope}[node distance=1em, text width=5em, align=left]
\node [right=of c2, yshift= 3em] (d3) {Conceptos de la razón pura};
\node [right=of c2, yshift= -3em] (d4) {Inferencias dialécticas de la razón pura};
\end{scope}
\draw[decorate,decoration={brace,mirror}] (d3.north west) -- (d4.south west);
\begin{scope}[node distance=1em, text width=2cm, align=left]
\node [right=of d4, yshift= 4em] (e1) {Paralogismos de la razón pura};
\node [right=of d4] (e2) {Antinomia de la razón};
\node [right=of d4, yshift= -4em] (e3) {Ideal de la razón pura};
\end{scope}
\draw[decorate,decoration={brace,mirror}] (e1.north west) -- (e3.south west);
\begin{scope}[node distance=1em, text width=2cm, align=left]
\node [right=of a2, yshift= 4em] (b3) {Disciplina};
\node [right=of a2, yshift= 2em] (b4) {Canon};
\node [right=of a2, yshift= 0em] (b5) {Arquitectónica};
\node [right=of a2, yshift= -3em] (b6) {Historia de la razón pura};
\end{scope}
\draw[decorate,decoration={brace,mirror}] (b3.north west) -- (b6.south west);
\end{tikzpicture}
\end{document}