Zentrierte Textausrichtung in Zellen einer Matrix Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


kannstmasehn
Forum-Century
Forum-Century
Beiträge: 163
Registriert: Mo 5. Mai 2014, 16:55

Re: Zentrierte Textausrichtung in Zellen einer Matrix

Beitrag von kannstmasehn »

Danke, das sieht sehr gut aus.

Ich habe noch einige Marker eingebaut, die nun verstellt sind. Wie kann ich neben dem Text ein einfaches Rechteck oder einen Kreis hinzufügen?

\documentclass[a4paper,12pt]{report}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{booktabs,etoolbox}

\tikzset{
  kastenzelle/.style={inner sep=3pt,text height=\ht\strutbox,text depth=\dp\strutbox},
  leer/.style={}
}

\tikzset{re/.style={rectangle,fill,inner sep=2pt}}
\newcommand\verbindungslinieDR[3]{
	\foreach [remember=\p as \lastp (initially #2)] \p in {#3}
	\draw[#1,dotted](\lastp.east)node[re]{}-.(\p.east)node[re]{};
}

\begin{document}
\begin{table}[!tbph]
  \centering
  \caption{Morphologischer Kasten}
  \begin{tikzpicture}[
    nodes={kastenzelle}
    ]
    \matrix[
    matrix of nodes,
    column 1/.style={anchor=base west},% 1.Spalte rechtsbündig
    column 2/.style={anchor=base},
    column 3/.style={anchor=base},
    column 4/.style={anchor=base},
    column 5/.style={anchor=base},
    column 6/.style={anchor=base},
    ](m){
    Test
    & Test
    & Test
    & Test
    & Test \\
            
    Testp
    & Test
    & Test
    & Test
    & Blub \\
    
    Test
    & Test
    & Test
    & PfPfPfp
    & Test \\
    
    Testfunktion
    & Test
    & Test
    & Test
    & Test \\
    };
    
    % Kopfzeile
    \node(ul)[anchor=south west] at (m.north-|m-1-1.west) {Teilfunktion};
    \foreach[count=\i from 2] \c in {1,2,3,4} \node[anchor=base] at (ul.base-|m-1-\i){\c};
    % Tabellenlinien
    \draw[line width=\lightrulewidth]
    ([yshift=0]ul.south-|m.west)
    --([yshift=0]ul.south-|m.east);
    \draw[line width=\heavyrulewidth]([yshift=0]ul.north-|m.west)
    --([yshift=0]ul.north-|m.east)
    ([yshift={0}]m.south west)
    --([yshift={0}]m.south east);
    
    % Verbindungslinien
    \verbindungslinieDR{black}{m-1-5}{m-2-4,m-3-4,m-4-4}
    
  \end{tikzpicture}
\end{table}
\end{document}

Danke im Voraus.


esdd
Forum-Meister
Forum-Meister
Beiträge: 2535
Registriert: So 7. Feb 2010, 16:36

Re: Zentrierte Textausrichtung in Zellen einer Matrix

Beitrag von esdd »

Du musst dann eben schauen, dass der Stil kastenzelle nur auf die Nodes der Matrix bzw. der Spaltenüberschriften wirkt. Außerdem würde ich den Abstand zwischen den Spalten etwas vergrößern.

\documentclass[a4paper,12pt]{report}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{booktabs,etoolbox}

\tikzset{
  kastenzelle/.style={inner sep=3pt,text height=\ht\strutbox,text depth=\dp\strutbox},
  leer/.style={}
}

\tikzset{re/.style={rectangle,fill,inner sep=2pt}}
\newcommand\verbindungslinieDR[3]{
	\foreach [remember=\p as \lastp (initially #2)] \p in {#3}
	\draw[#1,dotted](\lastp.east)node[re]{}-.(\p.east)node[re]{};
}

\begin{document}
\begin{table}[!tbph]
  \centering
  \caption{Morphologischer Kasten}
  \begin{tikzpicture}
    \matrix[
    matrix of nodes,
    nodes={kastenzelle},% <- Einstellung nur für Nodes in Matrix
    column sep=2pt,% <- etwas mehr Abstand zwischen den Spalten
    column 1/.style={anchor=base west},% 1.Spalte rechtsbündig
    column 2/.style={anchor=base},
    column 3/.style={anchor=base},
    column 4/.style={anchor=base},
    column 5/.style={anchor=base},
    column 6/.style={anchor=base},
    ](m){
    Test
    & Test
    & Test
    & Test
    & Test \\
            
    Testp
    & Test
    & Test
    & Test
    & Blub \\
    
    Test
    & Test
    & Test
    & PfPfPfp
    & Test \\
    
    Testfunktion
    & Test
    & Test
    & Test
    & Test \\
    };
    
    % Kopfzeile
    % Stil kastenzelle für Nodes in Kopfzeile ergänzt:
    \node(ul)[anchor=south west,kastenzelle] at (m.north-|m-1-1.west) {Teilfunktion};
    \foreach[count=\i from 2] \c in {1,2,3,4} \node[anchor=base,kastenzelle] at (ul.base-|m-1-\i){\c};
    % Tabellenlinien
    \draw[line width=\lightrulewidth]
    ([yshift=0]ul.south-|m.west)
    --([yshift=0]ul.south-|m.east);
    \draw[line width=\heavyrulewidth]([yshift=0]ul.north-|m.west)
    --([yshift=0]ul.north-|m.east)
    ([yshift={0}]m.south west)
    --([yshift={0}]m.south east);
    
    % Verbindungslinien
    \verbindungslinieDR{black}{m-1-5}{m-2-4,m-3-4,m-4-4}
    
  \end{tikzpicture}
\end{table}
\end{document}

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 163
Registriert: Mo 5. Mai 2014, 16:55

Re: Zentrierte Textausrichtung in Zellen einer Matrix

Beitrag von kannstmasehn »

Danke, stimmt. Nun passt es perfekt. Vielen Dank.


Antworten