alt text

Was muss ich tun, damit die Matrizellen horizontal / vertikal zentriert werden?

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{shapes.geometric}

\begin{document}

\begin{tikzpicture}[align=center, 
thick, 
%
gsDreieck/.style={
shape=isosceles triangle, isosceles triangle stretches,
draw, rotate=90,
minimum width=0.75cm, minimum height=1.5cm, 
% outer sep=0pt,        inner sep=0pt,        
%anchor=west, 
},
Kreis/.style={circle, draw, minimum width=5mm,},
%
matrixstyle/.style={
matrix of nodes,
nodes in empty cells,
column sep=2em, row sep=1em, 
align=center, %anchor=west,
},
%shape border uses incircle
]

\newcommand{\gsd}[1]{%
\node [gsDreieck, below] (gsD) {};
\node[below=3mm] at (gsD) {#1};%
}
\newcommand{\kr}{\node[Kreis] {};}

\matrix (m)[matrixstyle]
{
Langer Text & \kr       &       &         \\
\gsd{A}     & \gsd{A}   & \dots & \gsd{D} \\
1 & 2   & 3   & 4 \\
};
\end{tikzpicture}

\end{document}

gefragt 17 Sep, 18:49

cis's gravatar image

cis
8.5k16172275
Akzeptiert: 68%


Woher soll denn TikZ bitte wissen, welche Node zentriert werden soll, wenn Du zwei in eine Matrix Zelle packst? Wenn Du nur eine reinpackst, und wenn Du die Label mit label setzt, klappt es natürlich. (Beachte, dass rotate=90 aus left ein below macht. Und Du könntest das wesentlich TikZier machen, indem Du Styles anstatt Macros verwendest, aber ich habe das so gelassen, damit klar ist, wo das Problem lag.)

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{shapes.geometric}

\begin{document}

\begin{tikzpicture}[align=center, 
thick, 
%
gsDreieck/.style={
shape=isosceles triangle, isosceles triangle stretches,
draw, rotate=90,
minimum width=0.75cm, minimum height=1.5cm, 
% outer sep=0pt,        inner sep=0pt,        
%anchor=west, 
},
Kreis/.style={circle, draw, minimum width=5mm,},
%
matrixstyle/.style={
matrix of nodes,
nodes in empty cells,
column sep=2em, row sep=1em, 
align=center, %anchor=west,
},
%shape border uses incircle
]

\newcommand{\gsd}[1]{%
\node [gsDreieck,label=left:#1] (gsD) {};
}
\newcommand{\kr}{\node[Kreis] {};}

\matrix (m)[matrixstyle]
{
Langer Text & \kr       &       &         \\
\gsd{A}     & \gsd{A}   & \dots & \gsd{D} \\
1 & 2   & 3   & 4 \\
};
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 17 Sep, 19:55

Murmeltier's gravatar image

Murmeltier
2.0k64

1

Ja, stimmt. Das war ein Denkfehler von mir. Die Kommandos müssen so aussehen:

\newcommand{\gsd}[1]{|[gsDreieck,label=left:#1]|} \newcommand{\kr}{|[Kreis]|}

(17 Sep, 20:28) cis
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×627
×53
×12

Frage gestellt: 17 Sep, 18:49

Frage wurde angeschaut: 289 Mal

Zuletzt aktualisiert: 17 Sep, 20:28