
나는 환경의 도움을 받아 나무를 만들었습니다 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
너비가\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 {}
서문에서. 그러나 마커가 제공하는 시각적 신호가 없으면 항목 사이에 추가적인 수직 분리가 필요할 수 있습니다. 이는 아래 MWE에 표시된 것처럼 항목 사이 에 하나 또는 두 \cr
개의 추가 추가 항목을 사용하여 수행할 수 있습니다.\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 {}
\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는 기본적으로 Schemata를 그릴 수 있도록 설계된 패키지입니다. 이는 이러한 유형의 다이어그램 그리기 및 조정을 용이하게 하기 위해 일련의 매크로를 정의합니다.
가장 쉬운 사용법은 매뉴얼을 따르는 것입니다. 먼저 \schema
및 만 사용하여 기본 스키마를 생성합니다 \schemabox
. 그런 다음 필요에 따라 오른쪽에서 왼쪽으로 조정하여 \smallskip
오른쪽 잎 사이에 1 정도를 추가합니다. 그런 다음 적절 \schema
하게 변경하여 \Schema
조정을 다시 실행할 필요가 없도록 항상 오른쪽에서 왼쪽으로 작업합니다. 매뉴얼은 제가 여기서 할 수 있는 것보다 이 과정을 훨씬 더 잘 설명합니다.
다음은 MWE를 기반으로 한 최종 결과의 대략적인 1차 통과 버전입니다.
\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}