
Я создал дерево с помощью 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
элемента. Значение по умолчанию все еще можно переопределить с помощью необязательного аргумента.
Вот МВЭ.
\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}
ОП предпочитает ответ без маркеров элементов. Это легко достигается установкой
\def\levelmarki {}
\def\levelmarkii {}
\def\levelmarkiii{}
\def\levelmarkiv {}
\def\levelmarkv {}
в преамбуле. Но без визуальной подсказки, предоставляемой маркерами, может потребоваться дополнительное вертикальное разделение между элементами. Это можно сделать, используя один или два дополнительных \cr
s между \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}