Ich habe einen multinomialen Verarbeitungsbaum mit TikZ erstellt. Darin habe ich mehrere Rechtecke, die ich in der Höhe begrenzen will (Anmerkung: es folgen mehrere dieser Bäume nacheinander und sie sollten alle auf eine Seite; die Abstände zwischen den Rechtecken rechts in der Abbildung werden verringert, nachdem das Problem mit der Höhe gelöst ist). Wie ich eine minimale Höhe festlege, habe ich herausgefunden. Jedoch nicht, wie ich die Höhe maximal begrenze. Ich kann durch text height=.15cm die Höhe verringern, allerdings rutscht der Text dann nach oben und ist nicht mehr vertikal mittig in dem Rechteck.

Wie kann ich also die Höhe minimieren und dabei einen vertikal mittig ausgerichteten Text in dem Rechteck erhalten?

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{kpfonts} % http://www.tug.dk/FontCatalogue/kpserif/
\usepackage{fixltx2e}
\usepackage{pgfplots}
\begin{document}
% level distance = Länge der Verbindungen
% sibling distance = vertikaler Abstand der child-Knoten
\tikzstyle{level 1}=[level distance=3.0625cm, sibling distance=2.25cm]
\tikzstyle{level 2}=[level distance=3.0625cm, sibling distance=1.5cm]
\tikzstyle{level 3}=[level distance=3.0625cm, sibling distance=1cm]
\begin{tikzpicture}[grow=right,sloped,
myrectangle/.style={rectangle,rounded corners,draw,minimum width=4.25cm,minimum height=.6cm, text height=.15cm}]
\node[myrectangle] {neu}
child {node[circle,draw]{~}
child {node[circle,draw]{~}
child {node[myrectangle,xshift=3.0625cm] {"`neu"'}
}
edge from parent
node[below] {1--\textit{b}}
}
child {node[circle,draw]{~}
child {node[circle,draw]{~}
child {node[myrectangle] {"`alt"'}
}
edge from parent
node[below] {1--\textit{g}}
}
child {node[circle,draw]{~}
child {node[myrectangle] {"`uralt"'}
}
edge from parent
node[above] {\textit{g}}
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 02 Aug '14, 19:00

Andr%C3%A9's gravatar image

André
986262836
Akzeptiert-Rate: 33%


Wenn ich dich richtig verstehe, möchtest du, dass die rechteckigen Knoten eine möglichst geringe Höhe haben? Du könntest dafür

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
minimum height=\ht\strutbox+\dp\strutbox,
inner ysep=0pt
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dann sind die Nodes so hoch wie eine strutbox. Wird eine kleinere Schriftgröße gewählt und soll die Boxhöhe entsprechend geringer sein, muss man die Schriftgrößenänderung über die Option node font vornehmen, also zum Beispiel mit node font=\footnotesize. Wenn Du etwas mehr Abstand zur Schrift haben möchtest, dann erhöhe minimum height etwas, in dem Du zum Beispiel einen Millimeter dazu addierst.

alt text

Code:

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{kpfonts}
\usepackage{fixltx2e}
\usepackage{tikz}
% level distance = Länge der Verbindungen
% sibling distance = vertikaler Abstand der child-Knoten
\tikzset{
mytree/.style={
level distance=3.0625cm,
level 1/.style={sibling distance=2.25cm},
level 2/.style={sibling distance=1.5cm},
level 3/.style={sibling distance=1cm},
}
}
\begin{document}
\begin{tikzpicture}[
grow=right,
sloped,
myrectangle/.style={rectangle,rounded corners,draw,minimum width=4.25cm,
minimum height=\ht\strutbox+\dp\strutbox,
inner ysep=0pt
},
mycircle/.style={circle,draw},
mytree
]
\node[myrectangle] {neu}
child {node[mycircle]{}
child {node[mycircle]{}
child {
child {node[myrectangle] {"`neu"'}
}
}
edge from parent
node[below] {1--\textit{b}}
}
child {node[mycircle]{}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ich habe in deinem Code ein paar weitere Änderungen vorgenommen. Insbesondere habe ich leere childs an den Stellen eingefügt, an denen Nodes "fehlen". Dadurch entfällt das händische Verschieben einzelner Knoten.


Du kannst aber auch eine schriftunabhängige minimum height vorgeben, den Inhalt mit Hilfe von \raisebox vertikal zentrieren und anschließend Höhe und Tiefe des Ergebnisses über die optionalen Argumente von \raisebox "verstecken". Ist der Text dann aber größer als die vorgegebene minimum height, dann steht er über. Das sieht man gut im folgenden Beispiel:

alt text

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{kpfonts}
\usepackage{fixltx2e}
\usepackage{tikz}
% level distance = Länge der Verbindungen
% sibling distance = vertikaler Abstand der child-Knoten
\tikzset{
mytree/.style={
level distance=3.0625cm,
level 1/.style={sibling distance=2.25cm},
level 2/.style={sibling distance=1.5cm},
level 3/.style={sibling distance=1cm},
}
}
\newcommand\mytext[1]{%
\raisebox{\dimexpr-.5\height+.5\depth\relax}[0pt][0pt]{#1}}
\begin{document}
\begin{tikzpicture}[
grow=right,
sloped,
myrectangle/.style={
rectangle,rounded corners,draw,minimum width=4.25cm,
minimum height=6mm,inner ysep=0pt
},
mycircle/.style={
circle,draw,
},
mytree
]
\node[myrectangle] {\mytext{neu}}
child {node[mycircle]{}
child {node[mycircle]{}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 03 Aug '14, 02:42

esdd's gravatar image

esdd
17.8k304257
Akzeptiert-Rate: 62%

Super, herzlichen Dank! Das hätte ich nicht hinbekommen.

(04 Aug '14, 09:32) André
Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×731
×3

gestellte Frage: 02 Aug '14, 19:00

Frage wurde gesehen: 12,655 Mal

zuletzt geändert: 04 Aug '14, 09:32