Wie kann die letzte Spalte auf die Textbreite - ähnlich der X-Spalte im Paket tabularx - ausgetrieben werden? Im (nicht ganz minimalen) Beispiel ist die letzte Spalte (d.i. die 5. Spalte) auf eine Textbreite von text width=0.3\linewidth gesetzt.

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[DIV=20]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
raster/.style={
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={
rectangle,
draw=black,
align=left,
},
minimum height=2em,
text depth=0.5ex,
text height=2ex,
nodes in empty cells,
column 1/.style={
nodes={text width=width{"Nr."}}
},
column 2/.style={
nodes={text width=width{"Testtext"}}
},
column 3/.style={
nodes={text width=width{"Namen"},fill=gray!30}
},
column 4/.style={
nodes={text width=10em}
},
column 5/.style={
nodes={text width=0.3\linewidth,align=center} % auf Textbreite austreiben
},
row 1 column 1/.style={
nodes={fill=gray!30}
},
row 1 column 2/.style={
nodes={fill=gray!30}
},
row 1 column 5/.style={
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

gefragt 03 Feb '16, 16:48

fritz's gravatar image

fritz
173611
Akzeptiert-Rate: 0%

bearbeitet 07 Feb '16, 11:27

saputello's gravatar image

saputello
11.1k174365

Willkommen auf TeXwelt!

(03 Feb '16, 23:31) esdd

Wenn die Tabelle die ganze Textbreite einnehmen soll, muss zuerst der innere Abstand der Matrix entfernt werden. Deshalb wird inner sep=0pt bei den Matrixoptionen ergänzt, wodurch die Tabelle schon mal linksbündig mit der darunter gezeichneten Vergleichslinie wird.

Allerdings wird damit auch der innere Abstand in den Nodes entfernt und der Text würde an den Trennlinien „kleben“. Deshalb wird er für die Nodes wieder eingefügt, in dem da die Option inner sep=.333em ergänzt wird.

Jetzt muss nur noch die Textbreite für die letzte Spalte berechnet werden, was für Dein Beispiel nicht zu schwierig ist, da Du ja die Textbreiten für die anderen Spalten von Hand festlegst. Es müssen also nur diese Textbreiten sowie für alle Spalten je zwei Mal der innere Abstand (inner xsep) und zwei Mal der outer sep der Matrix abgozogen werden.

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[DIV=20]{scrartcl}
\usepackage{showframe}% nur zum Anzeigen des Seitenlayouts
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
raster/.style={
inner sep=0pt,% <- inneren Abstand der Matrix entfernen
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={
inner sep=.3333em,% <- inneren Abstand bei den Nodes wieder einfügen
rectangle,
draw=black,
align=left,
},
minimum height=2em,
text depth=0.5ex,
text height=2ex,
nodes in empty cells,
column 1/.style={
nodes={text width=width{"Nr."}}
},
column 2/.style={
nodes={text width=width{"Testtext"}}
},
column 3/.style={
nodes={text width=width{"Namen"},fill=gray!30}
},
column 4/.style={
nodes={text width=10em}
},
column 5/.style={
nodes={
text width= % Breite der letzten Spalte berechnen
\linewidth
-10em-width{"Namen"}-width{"Testtext"}-width{"Nr."}
-10*\pgfkeysvalueof{/pgf/inner xsep}
-2*\pgfkeysvalueof{/pgf/outer xsep}
,align=center} % auf Textbreite austreiben
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ich habe jetzt zusätzlich showframe geladen, weil man damit besser sieht, dass die Tabelle die komplette Textbreite einnimmt.

alt text

Permanenter link

beantwortet 03 Feb '16, 23:28

esdd's gravatar image

esdd
17.8k294257
Akzeptiert-Rate: 62%

bearbeitet 04 Feb '16, 13:23

Die Lösung funktioniert ausgezeichnet! Warum wird der inner sep auf genau auf die Länge.333em gesetzt?

(04 Feb '16, 13:00) fritz

@fritz .3333em (bei mir fehlte da sogar noch die letzte 3) ist laut Doku der initiale Wert für den inneren Abstand in Nodes. Du kannst in dem Beispiel aber auch einen anderen Wert benutzen.

(04 Feb '16, 13:26) esdd
Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×731
×58
×12

gestellte Frage: 03 Feb '16, 16:48

Frage wurde gesehen: 7,759 Mal

zuletzt geändert: 07 Feb '16, 11:27

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×