Wenn ich nodes bzw. Knoten nebeneinander platziere und sich deren Inhalt aufgrund beispielsweise von Unterlänge oder Exponenten unterscheiden, passen die Grundlinien nicht mehr zusammen. In diesem kleinen Beispiel bemerkt man bei genauem Hinsehen, dass die Grundlinie rechts höher ist, man braucht nur dem Pfeil zu folgen:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=5em]
  \node (A) {$A^2$};
  \node [right of=A] (AxA) {$A\otimes A$};
  \draw [->] (A) edge node [above] {$\scriptstyle\varphi$} (AxA);
\end{tikzpicture}
\end{document}

Diagramm

Wie kann ich das korrigieren?

gefragt 05 Jul '13, 18:30

Felix's gravatar image

Felix
1.3k525667
Akzeptiert-Rate: 47%

bearbeitet 21 Aug '13, 21:09

cgnieder's gravatar image

cgnieder
22.1k253463


Man kann die positioning library laden und davon die Option base right=of verwenden. Damit werden die baselines nebeneinander platziert. In diesem Fall:

\node [base right = of A] (AxA) {$A\otimes A$};
Permanenter link

beantwortet 05 Jul '13, 20:20

stefan's gravatar image

stefan ♦♦
18.3k163148
Akzeptiert-Rate: 49%

Vielleicht gibt es einen Trick, den ich nicht kenne, aber im gegebenen VM scheint das mit node distance=5em zu interferieren: der Pfeil ist dann viel länger?

(05 Jul '13, 20:25) cgnieder

Ich sehe das auch, am base selbst liegt es nicht. Hab das gleich mal als Problem formuliert: Was ist der Unterschied zwischen right of= und right=of in TikZ?

(05 Jul '13, 21:08) Felix

@Felix Die Antworten auf deiner neuen Fragen sind nicht wirklich befriedigend. Das Problem (siehe auch mein Kommentar zu Herberts Antwort): Die positioning Library sorgt dafür, dass die node distance zwischen den Borders (die nicht gezeichneten Linien um die Node herum) angesetzt wird, und nicht wie bei dir zwischen den center-Anchors. Es gibt zwar die on grid-Option, die das wieder ändert, sie fällt aber auch bei den base- so wie bei den mid-Anchors auf center zurück.

(26 Jul '13, 18:17) Qrrbrbirlbel

@Felix Stellt das wirklich ein Problem da (und du möchtest nicht mit text depth und text height arbeiten oder font=\strut nutzen), kann man auch neue base-Keys erstellen (oder die anderen überschreiben), die ausschließlich den base-Anchor verwenden (der auf der Basislinie unter dem Zentrum liegt). Quasi ein Mittelding aus on grid und nicht on grid (immer mit der Gefahr dass sich große Nodes überschneiden).

(26 Jul '13, 18:18) Qrrbrbirlbel

Du könntest explizit die height und depth des Textes in den Knoten angeben:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=5em,text height=1.5ex,text depth=.25ex]
  \node (A) {$A^2$};
  \node [right of=A] (AxA) {$A\otimes A$};
  \draw [->] (A) edge node [above] {$\scriptstyle\varphi$} (AxA);
  \draw[black!20] (A.base)  ++(-1,0) -- ++(4,0) ;
\end{tikzpicture}
\end{document}

Ergebnis

Permanenter link

beantwortet 05 Jul '13, 18:58

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 31 Jul '13, 17:23

stefan's gravatar image

stefan ♦♦
18.3k163148

Du kannst das asymmetrical rectangle aus dem Paket tikz-cd nutzen. Bei diesem ist der center-Anchor so umdefiniert, dass er einen festen Abstand zum base-Anchor hat. Der dafür voreingestellte Wert (0.8ex) kann über commutative diagrams/center yshift angepasst werden.

\documentclass{standalone}
\usepackage{tikz-cd}% lädt tikz
\begin{document}
  \begin{tikzpicture}[node distance=5em,
    every node/.style={asymmetrical rectangle},% in tikz-cd definiert
%   commutative diagrams/center yshift=0.7ex % Abstand zwischen base- und center-Anchor 
    ]
    \node (A) at (4,1) {$A^2$};
    \node [right of=A] (AxA) {$A\otimes A$};
    \draw [->] (A) edge node [above] {$\scriptstyle\varphi$} (AxA);
\end{tikzpicture}
\end{document}

Eine weitere Möglichkeit ist die Knoten mit tikz und tikzlibrary matrix als matrix of math nodes zu setzen. Dabei werden die einzelnen Zellen automatisch an ihrer Grundlinie ausgerichtet.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
  \matrix[matrix of math nodes,inner sep=0pt,cells={inner sep=0.3333em},column sep={5em,between origins}]{%
    |(A)| A^2 & |(AxA)| A\otimes A\\};
  \path [->] (A.mid east) edge node [above] {$\scriptstyle\varphi$} (AxA.mid west);
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 28 Jul '13, 21:57

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 30 Jul '13, 17:39

Deine Antwort
Vorschau umschalten

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

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×76
×70
×3

gestellte Frage: 05 Jul '13, 18:30

Frage wurde gesehen: 15,029 Mal

zuletzt geändert: 21 Aug '13, 21:09