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.
\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=.333em,% 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
},
row 1 column 1/.style={
nodes={fill=gray!30}
},
row 1 column 2/.style={
nodes={fill=gray!30}
},
row 1 column 5/.style={
nodes={fill=gray!30}
},
}
}
\thispagestyle{empty}
\begin{document}
\noindent%
\begin{tikzpicture}[outer sep=auto]
\matrix [raster]
{
Nr. & Testtext & Namen & & Xyz \\
& & Vorn. & & \\
};
\end{tikzpicture}
\noindent\rule{\textwidth}{0.4pt}
\end{document}
Ich habe jetzt zusätzlich `showframe` geladen, weil man damit besser sieht, dass die Tabelle die komplette Textbreite einnimmt.
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/tw_matrixbreite_1.png