Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 5
Zellen nachträglich eintragen

13 Mär '14, 15:32

esdd's gravatar image

esdd
17.8k304257

Wenn für alle Spalten gleich breit sind, dann lässt könnte man das wie unten stehend lösen. Die gleiche Breite kann man durch Vorgabe von `text width` erreichen. Den benötigten Wert kann man zum Beispiel aus dem breitesten Zelleninhalt ermitteln. \documentclass[tikz,margin=5mm]{standalone} \usetikzlibrary{matrix} \newlength\textbreite \newcommand\mc[2]{% |[ draw=none, xshift=(-\iabst-.5\pgflinewidth),yshift=(-\iabst-.5\pgflinewidth), inner ysep=0pt ]|% \makebox[\textbreite][l]{% \pgfmathsetlength\textbreite{#1*(\textbreite+2*\iabst)-2*\iabst} \tikz\node[draw,inner ysep=\iabst]{% \makebox[\textbreite]{#2}% };% }% }% \usepackage{blindtext} \begin{document} \settowidth\textbreite{breites Wort}% Ermitteln der Textbreite \begin{tikzpicture} \newcommand\iabst{0.3em} % Abstand zwischen Text und Zellenrand \matrix [matrix of nodes, nodes={ draw=gray!30, text width=\textbreite, align=center, inner sep=\iabst, }, row sep=-\pgflinewidth, column sep=-\pgflinewidth ] { \mc{3}{ABC}\\ D & E& F \\ \mc{2}{GH}& & breites Wort\\ }; \end{tikzpicture} \end{document} ![alt text][1] ---------- Soll nur die erste (oder letzte) Zeile über die ganze Tabellenbreite gehen, dann kann man diese auch nachträglich einfügen. Dabei spielt die Breite der einzelnen Spalten keine Rolle mehr: \documentclass[tikz,margin=5mm]{standalone} \usetikzlibrary{matrix,calc} \begin{document} \begin{tikzpicture} \matrix (m)[matrix of nodes, draw, nodes={minimum width=2em}, ] { D&E&F\\ G &ein paar Worte& I \\ }; \path let \p1=(m.east),\p2=(m.west),\n1={\x1-\x2-\pgflinewidth} in (m.north) node[draw, anchor=south, minimum width=\n1,yshift=-\pgflinewidth] {Ein breiter Titel}; \end{tikzpicture} \end{document} ![alt text][2] ---------- Es gibt aber auch die Möglichkeit Inhalte nachträglich in die Matrix einzufügen, wenn man den entsprechenden Platz vorsieht. Damit sich der Aufwand in Grenzen hält, gebe ich eine ausreichend große, einheitliche Zellenhöhe vor. \documentclass[tikz,margin=5mm]{standalone} \usetikzlibrary{matrix,calc} \tikzset{ zusatz/.style={draw=green!30, anchor=south west, minimum width=#1,yshift=-\pgflinewidth,minimum height=2em } } \begin{document} \begin{tikzpicture} \newcommand\hoehe{2em} \matrix (m)[matrix of nodes,draw, nodes={draw=gray!30,minimum height=\hoehe,font=\strut}, row sep=-\pgflinewidth, column sep=-\pgflinewidth ] { XD&E&F\\ &&R\\ A&B&C\\[\hoehe] G &ein paar Worte& IXX \\ }; \path let \p1=(m-4-2.east),\p2=(m-1-1.west),\n1={\x1-\x2-\pgflinewidth} in (m-1-1.west|-m-3-1.north)node[zusatz=\n1]{zwei Spalten}; \path let \p1=(m-4-3.east),\p2=(m-1-1.west),\n1={\x1-\x2-\pgflinewidth} in (m-1-1.west|-m-4-3.north)node[zusatz=\n1]{drei Spalten}; \end{tikzpicture} \end{document} ![alt text][3] [1]: http://texwelt.de/wissen/upfiles/mcmatr1.png [2]: http://texwelt.de/wissen/upfiles/matrmtitel.PNGhttp://texwelt.de/wissen/upfiles/matrmtitel.PNG [3]: http://texwelt.de/wissen/upfiles/zeileneinschieben.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

13 Mär '14, 14:43

esdd's gravatar image

esdd
17.8k304257

Wenn für alle Spalten gleich breit sind, dann lässt könnte man das wie unten stehend lösen. Die gleiche Breite kann man durch Vorgabe von `text width` erreichen. Den benötigten Wert kann man zum Beispiel aus dem breitesten Zelleninhalt ermitteln. \documentclass[tikz,margin=5mm]{standalone} \usetikzlibrary{matrix} \newlength\textbreite \newcommand\mc[2]{% |[ draw=none, xshift=(-\iabst-.5\pgflinewidth),yshift=(-\iabst-.5\pgflinewidth), inner ysep=0pt ]|% \makebox[\textbreite][l]{% \pgfmathsetlength\textbreite{#1*(\textbreite+2*\iabst)-2*\iabst} \tikz\node[draw,inner ysep=\iabst]{% \makebox[\textbreite]{#2}% };% }% }% \usepackage{blindtext} \begin{document} \settowidth\textbreite{breites Wort}% Ermitteln der Textbreite \begin{tikzpicture} \newcommand\iabst{0.3em} % Abstand zwischen Text und Zellenrand \matrix [matrix of nodes, nodes={ draw=gray!30, text width=\textbreite, align=center, inner sep=\iabst, }, row sep=-\pgflinewidth, column sep=-\pgflinewidth ] { \mc{3}{ABC}\\ D & E& F \\ \mc{2}{GH}& & breites Wort\\ }; \end{tikzpicture} \end{document} ![alt text][1] ---------- Soll nur die erste (oder letzte) Zeile über die ganze Tabellenbreite gehen, dann kann man diese auch nachträglich einfügen. Dabei spielt die Breite der einzelnen Spalten keine Rolle mehr: \documentclass[tikz,margin=5mm]{standalone} \usetikzlibrary{matrix,calc} \usetikzlibrary{matrix} \begin{document} \begin{tikzpicture} \matrix (m)[matrix of nodes, draw, nodes={minimum width=2em}, ] { D&E&F\\ G &ein paar Worte& I \\ }; \path let \p1=(m.east),\p2=(m.west),\n1={\x1-\x2-\pgflinewidth} in (m.north) node[draw, anchor=south, minimum width=\n1,yshift=-\pgflinewidth] {Ein breiter Titel}; \end{tikzpicture} \end{document} ![alt text][2] [1]: http://texwelt.de/wissen/upfiles/mcmatr1.png [2]: http://texwelt.de/wissen/upfiles/matrmtitel.PNG
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3
Möglichkeit für nur erste Zeile über ganze Breite

13 Mär '14, 14:28

esdd's gravatar image

esdd
17.8k304257

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2
Vorgabe von text width statt minimum width

13 Mär '14, 14:21

esdd's gravatar image

esdd
17.8k304257

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

13 Mär '14, 13:25

esdd's gravatar image

esdd
17.8k304257