Verwandt mit: tikz-matrix-wieso-funktioniert-xshift-nicht


Ich habe hier eine TikZ-Matrix und möchte, dass der linke Teil ("Gewöhnliche DGL") linksbündig und der rechte Teil ("Partielle DGL") rechtsbündig gesetzt wird.

Anpassung der Zellen mit xshift will nicht so richtig. Wie kann ich das machen?

So sieht es grauenvoll aus:

alt text

Komplettes Beispiel:

Öffne in Overleaf
\documentclass[margin=5mm]{standalone}
%\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, relsize, tikz}

\usetikzlibrary{matrix}
%\usetikzlibrary{decorations.pathreplacing}

\begin{document}

\begin{tikzpicture}[%scale=0.5, transform shape, 
%-latex,
font=\sffamily\footnotesize, 
mystyle/.style={rectangle, draw, rounded corners, align=center},
TW/.style={text width=4em},
]

\def\gDGL{Gewöhnliche Differentialgleichung}
\def\pDGL{Partielle Differentialgleichung}
\def\lDGL{Lineare DGL}
\def\lPDGL{Lineare PDGL}
\def\nlDGL{Nichtlineare DGL}%|[xshift=-0em]|
\def\nlPDGL{Nichtlineare PDGL}%|[xshift=-0em]|
\def\kKoeff{|[text width=4.5em]|{Konstante \\ Koeffizienten}}
\def\nkKoeff{|[text width=4.5em]|{Variable \\ Koeffizienten}}
\def\hDGL{|[text width=3.5em]|{Homogene \\ DGL}}
\def\inhDGL{|[text width=2.5em]|{Inhom. \\ DGL}}
\def\hPDGL{|[text width=3.5em]|{Homogene \\ PDGL}}
\def\inhPDGL{|[text width=2.5em]|{Inhom. \\ PDGL}}

\matrix (m) [
matrix of nodes,
%nodes in empty cells,
row sep=1.5em, column sep=0.5em,
minimum width=1em,
cells={anchor=base west,},
nodes={draw, align=left},
%
row 5/.style={nodes={fill=yellow}},
column 8/.style={anchor=base west,},
%column 2/.style={nodes={transform shape = {xshift=-25em}}},
]
{
%\gDGL &[-2.6cm] &[1em]  &[-2.6cm] &[1em] &[-2.6cm] &[1em] & \pDGL \\
\gDGL &[-2.7cm]  &[-1.5cm] &               &         &         &               & \pDGL \\
\lDGL   & \nlDGL  &           &              &         &        & \lPDGL    & \nlPDGL \\
\kKoeff & \nkKoeff &          &             &        &         & \kKoeff  & \nkKoeff \\
\hDGL&\inhDGL&\hDGL &\inhDGL&\hPDGL&\inhPDGL&\hPDGL&\inhPDGL \\
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\
};

\draw[] 
(m-1-1) -- (m-2-1)
(m-1-1) -- (m-2-2)
(m-2-1) -- (m-3-1)
(m-2-1) -- (m-3-2)
%
(m-3-1) -- (m-4-1)
(m-3-1) -- (m-4-2)
%
(m-3-2) -- (m-4-3)
(m-3-2) -- (m-4-4)
;

\draw[] 
(m-1-8) -- (m-2-8)
(m-1-8) -- (m-2-7)
(m-2-7) -- (m-3-7)
(m-2-7) -- (m-3-8)
%
(m-3-7) -- (m-4-5)
(m-3-7) -- (m-4-6)
%
(m-3-8) -- (m-4-7)
(m-3-8) -- (m-4-8)
;
\end{tikzpicture}

\end{document}

gefragt 15 Apr, 08:29

cis's gravatar image

cis
7.8k15161257
Akzeptiert: 71%


Manchmal sieht man den Wald vor lauter Bäumen nicht. ;-) Im Ernst, mit forest geht das recht leicht.

alt text

Öffne in Overleaf
\documentclass[tikz,margin=5mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, relsize,forest}

\begin{document}

\begin{forest}for tree={inner sep=2pt,outer
sep=0pt,align=center,font=\sffamily\footnotesize,draw}
  [Differentialgleichungen
    [gew\"ohnliche DGL
      [lineare\\ DGL
          [konstante\\ Koeffizienten
            [homogene\\ DGL]
            [inhomogene\\ DGL]
            ]
          [variable\\ Koeffizienten
            [homogene\\ DGL]
            [inhomogene\\ DGL]
            ]
      ] 
      [nichtlineare\\ DGL]
    ]
    [partielle DGL  
      [lineare\\ DGL
          [konstante\\ Koeffizienten
            [homogene\\ DGL]
            [inhomogene\\ DGL]
            ]
          [variable\\ Koeffizienten
            [homogene\\ DGL]
            [inhomogene\\ DGL]
            ]
      ]
      [nichtlineare\\ DGL]
    ]
 ]
]
\end{forest}
\end{document}
Permanenter link

beantwortet 15 Apr, 16:26

Murmeltier's gravatar image

Murmeltier
1.6k64

bearbeitet 15 Apr, 16:38

Ja, ich hatte auch überlegt, ob ich ein normales 'Baumdiagramm' daraus mache; allerdings eher mit Tikz 'tree'. Ich wollte bei TikZ bleiben, zwecks weiterer Formatierungen usw.

(15 Apr, 16:46) cis
3

@cis Aber forest basiert doch auf TikZ. Du kannst da auf alle TikZ Features zugreifen. Jedoch macht es schöne Graphen ohne lualatex dafür zu benötigen.

(15 Apr, 17:02) Murmeltier

Hab es mit 2 Matrizen gelöst:

alt text

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
%\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, relsize, tikz}

\usetikzlibrary{matrix}
\usetikzlibrary{positioning, calc}

\begin{document}

\begin{tikzpicture}[
every path/.style={shorten >=2pt, shorten <=2pt,}, 
font=\sffamily\footnotesize, 
]

\def\gDGL{Gewöhnliche Differentialgleichung}
\def\pDGL{Partielle Differentialgleichung}
\def\lDGL{Lineare DGL}
\def\lPDGL{Lineare PDGL}
\def\nlDGL{Nichtlineare DGL}
\def\nlPDGL{Nichtlineare PDGL}
\def\kKoeff{|[text width=4.5em]|{Konstante \\ Koeffizienten}}
\def\nkKoeff{|[text width=4.5em]|{Variable \\ Koeffizienten}}
%
\def\hDGL{|[text width=3.5em]|{Homogene \\ DGL}}
\def\hPDGL{|[text width=3.75em]|{Homogene \\ PDGL}}
%
\def\inhDGL{Inhom. \\ DGL}
\def\inhPDGL{Inhom. \\ PDGL}

\tikzset{
nodestyle/.style={draw, align=left},
matrixstyle/.style={
matrix of nodes,
row sep=1.5em, column sep=0.5em,
minimum width=1em,
nodes={nodestyle},
}}

\matrix (m) [matrixstyle,
cells={anchor=base west}
]
{
\gDGL  &[-0.5cm]  &[-1.5cm] &  \\
\lDGL   & \nlDGL  &           &  \\
\kKoeff & \nkKoeff &          & \\
\hDGL  &  \hDGL &   & \\
%1 & 2 & 3 & 4  \\
};
%
\node[nodestyle, right=1em of m-4-1, name=A] {\inhDGL};
\node[nodestyle, right=1em of m-4-2, name=B] {\inhDGL};
% Verbindungsstriche
\draw[] (m-1-1) -- (m-2-1);
\draw[] (m-1-1) -- (m-2-2);
\draw[] (m-2-1) -- (m-3-1);
\draw[shorten >=9pt, shorten <=9pt] (m-2-1.south) -- (m-3-2.north);
%
\draw[] (m-3-1) -- (m-4-1);
\draw[shorten >=6pt, shorten <=6pt] (m-3-1.south) -- (A.north);
%
\draw[] (m-3-2) -- (m-4-2);
\draw[shorten >=6pt, shorten <=6pt] (m-3-2.south) -- (B.north);

%\begin{scope}[right of =m, 
%xshift=8cm,
%]
\matrix (n) [ right of =m, 
xshift=6.25cm,
matrixstyle,
cells={anchor=base west}
]
{
\pDGL  &[-0.5cm]  &[-1.5cm] &  \\
\lPDGL   & \nlPDGL  &           &  \\
\kKoeff & \nkKoeff &          & \\
\hPDGL  &   \hPDGL &   & \\
%1 & 2 & 3 & 4  \\
};
%
\node[nodestyle, right=1em of n-4-1, name=C] {\inhPDGL};
\node[nodestyle, right=1em of n-4-2, name=D] {\inhPDGL};
% Verbindungsstriche
\draw[] (n-1-1) -- (n-2-1);
\draw[] (n-1-1) -- (n-2-2);
\draw[] (n-2-1) -- (n-3-1);
\draw[shorten >=9pt, shorten <=9pt] (n-2-1.south) -- (n-3-2.north);
%
\draw[] (n-3-1) -- (n-4-1);
\draw[shorten >=6pt, shorten <=6pt] (n-3-1.south) -- (C.north);
%
\draw[] (n-3-2) -- (n-4-2);
\draw[shorten >=6pt, shorten <=6pt] (n-3-2.south) -- (D.north);

% Überschrift

\path[] (m-1-1) -- (n-1-1) node[nodestyle, midway, above=2em, name=Titel, text width=18em, align=center]{Differentialgleichung (DGL)};
\draw[shorten >=6pt, shorten <=6pt] (Titel.south) -- (m-1-1.north);
\draw[shorten >=6pt, shorten <=6pt] (Titel.south) -- (n-1-1.north);
\end{tikzpicture}

\end{document}
Permanenter link

beantwortet 15 Apr, 11:07

cis's gravatar image

cis
7.8k15161257

2

@cis Da das Ergebnis in der anderen Antwort tatsächlich sehr viel schöner und auch viel einfacher zu erreichen ist, wäre es vielleicht gut, den Haken dort zu setzen ... forest basiert ja auch auf TikZ.

(16 Apr, 09:21) esdd

Ich wollte das eben alles so linksbündig. Aber kann jeder machen, wie er will.

(17 Apr, 08:36) 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:

×608
×51

Frage gestellt: 15 Apr, 08:29

Frage wurde angeschaut: 466 Mal

Zuletzt aktualisiert: 17 Apr, 08:36