Ohne TikZ, aber Diese Antwort enthält drei Lösungsvorschläge, die alle mit der originalen `tabular`-Umgebung arbeiten (und nicht eine TikZ-`\matrix` verwenden, auch wenn das in diesem einfachen Fall noch sehr einfach umzusetzen wäre).
Alle drei Varianten verwenden dafür die `.aux`-Datei, um sich Positionen auf dem Papier zu merken und benötigen deshalb mindestens zwei Kompilierungsvorgänge, um eine korrekte Linie zu zeichnen.
Damit die Tabellen selbst frei von irgendwelchen Markierungen und Hilfsmakros sind, habe ich dafür die (Pseudo-)Spalten `M` und `N` definiert, die einfach vor (`M`) der ersten und nach (`N`) der letzten Spalte, die markiert werden sollen, in die Spaltenspezifikation eingefügt werden.
Wir benötigen außerdem noch einen Count(er), der mitzählt, in welcher Zeile wir uns befinden. LaTeX stellt außerdem das Makro `\in@` und `\ifin@` zur Verfügung (in PGF/TikZ existieren diese auch mit dem `zref-savepos`-Paket.
Prefix `pgfutil@`).
Der allen Lösungen gemeinsame Code ist dann neben dem Laden des `array`-Pakets
\newcount\c@tabularlinecounter
\newcommand*\setLinesToCross[1]{\gdef\@lines{#1}\global\c@tabularlinecounter\z@\relax}
\newcolumntype{M}{>{%
\global\advance\c@tabularlinecounter1\relax
\@expandtwoargs\in@{,\the\c@tabularlinecounter,}{,\@lines,}%
\ifin@\@marklines@s\fi}}
\newcolumntype{N}{<{%
\@expandtwoargs\in@{,\the\c@tabularlinecounter,}{,\@lines,}%
\ifin@\@marklines@e\fi}}
Die Makros `\@marklines@s` und `\@marklines@e` müssen jetzt nur noch entsprechend der Lösung definiert werden. (Dies ist eher dafür, um diese Antwort übersicht gestalten zu können. Wenn in der Praxis eh nur eine Lösung verwendet wird, kann die Definition der Makros natürlich direkt in die Spaltendefinition geschoben werden.)
## `zref-savepos`
Mittels `\zsaveposx` wird die horizontale Position auf dem Papier in die `.aux`-Datei geschrieben, die dann beim nächsten Kompiliervorgang mittels `\zposx` gelesen wird. Es sei angemerkt, dass die Linie *unter*/vor dem Zeileninhalt gezeichnet wird. Ist dies ungewünscht (bei unterschiedlichen Farben), kann das Zeichnen auch in die `N`-Spalte verschoben werden, dann allerdings mit `\llap` und nicht `\rlap`.
Damit die Tabelle frei bleibt, habe ich die (Pseudo-)Spalten `M` und `N` verwendet um alles zu koordinieren. Für jede Zeile Tabellenzeile werden zwei Zeilen in die `.aux`-Datei geschrieben.
\usepackage{zref-savepos}
\newcommand*\@marklines@s{%
\zsaveposx{tab-\the\c@tabularlinecounter}%
\rlap{\rule[.65ex]{\dimexpr\zposx{tabend-\the\c@tabularlinecounter}sp-%
\zposx{tab-\the\c@tabularlinecounter}sp\relax}{.4pt}}}
\newcommand*\@marklines@e{\zsaveposx{tabend-\the\c@tabularlinecounter}}
## TikZ
Die TikZ-Lösung funktioniert sehr ähnlich, dank der [`tikzmark`](http://www.ctan.org/pkg/tikzmark)-Library kann die Linie ebenfalls *unter* dem Text gezeichnet werden.
Für jede Tabellenzeile werden fünf Zeilen in die `.aux`-Datei geschrieben.
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\newcommand*\@marklines@s{%
\tikz[remember picture,overlay]
\draw (+0pt,+.65ex) -- ([yshift=+.65ex]pic cs:tabend-\the\c@tabularlinecounter);}
\newcommand*\@marklines@e{\pgfmark{tabend-\the\c@tabularlinecounter}}
## PGF
Eine Umsetzung mittels PGF, die ebenfalls die Linie unter dem Text zeichnet, würde eine ähnliche Implementation benötigen, die bereits die `tikzmark`-Library verwendet. Um das Rad nicht neu zu erfinden, stelle ich mich hier mit einer einfachen Lösung zufrieden, die die Linie „nur“ über den Text zeichnen kann.
Das Makro `\pgfrememberpicturepositiononpagetrue` ist das PGF-Äquivalent der `remember picture`-Option, `overlay` macht nichts anderes als `\pgf@relevantforpicturesizefalse`.
Es gibt in PGF ebenfalls eine schnellere Version als `\pgfnode` um Koordinaten zu definieren, nämlich `\pgfcoordinate`, allerdings hat das Makro in der Version 2.10 von PGF/TikZ noch ein [Bug](http://sourceforge.net/p/pgf/bugs/256/), so dass man es nicht mit `remember picture` verwenden konnte.
Für jede Tabellenzeile werden zwei Zeilen in die `.aux`-Datei geschrieben
\usepackage{pgf}
\newcommand*\@marklines@s{%
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgfsetbaseline{+-.65ex}
\pgfnode{coordinate}{center}{}{tab-\the\c@tabularlinecounter}{}
\endpgfpicture}
\newcommand*\@marklines@e{%
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
\pgfsetbaseline{+0pt}
\pgfpathmoveto{\pgfpoint{+0pt}{+.65ex}}
\pgfpathlineto{\pgfpointanchor{tab-\the\c@tabularlinecounter}{center}}
\pgfusepath{stroke}
\endpgfpicture}
## Code
\documentclass[margin=5mm]{standalone}
\usepackage{zref-savepos,array}
\usepackage{array}
\makeatletter
\newcounter{tabularlinecounter}
\newcount\c@tabularlinecounter
\newcommand*\setLinesToCross[1]{\gdef\@lines{#1}\global\c@tabularlinecounter\z@\relax}
\newcolumntype{M}{>{%
\stepcounter{tabularlinecounter}
\global\advance\c@tabularlinecounter1\relax
\@expandtwoargs\in@{,\the\c@tabularlinecounter,}{,\@lines,}%
\ifin@
\ifin@\@marklines@s\fi}}
\newcolumntype{N}{<{%
\@expandtwoargs\in@{,\the\c@tabularlinecounter,}{,\@lines,}%
\ifin@\@marklines@e\fi}}
%% zref-savepos
\usepackage{zref-savepos}
\newcommand*\@marklines@s{%
\zsaveposx{tab-\the\c@tabularlinecounter}%
\rlap{\rule[.65ex]
{\dimexpr\zposx{tabend-\the\c@tabularlinecounter}sp-\zposx{tab-\the\c@tabularlinecounter}sp\relax}
{.4pt}}%
\fi}}
\newcolumntype{N}{<{\@expandtwoargs\in@{,\the\c@tabularlinecounter,}{,\@lines,}\ifin@\zsaveposx{tabend-\the\c@tabularlinecounter}\fi}}
\newcommand*\setLinesToCross[1]{\def\@lines{#1}\setcounter{tabularlinecounter}{0}}
\rlap{\rule[.65ex]{\dimexpr\zposx{tabend-\the\c@tabularlinecounter}sp-%
\zposx{tab-\the\c@tabularlinecounter}sp\relax}{.4pt}}}
\newcommand*\@marklines@e{\zsaveposx{tabend-\the\c@tabularlinecounter}}
%% TikZ
%\usepackage{tikz}
%\usetikzlibrary{tikzmark}
%\newcommand*\@marklines@s{%
% \tikz[remember picture,overlay]
% \draw (+0pt,+.65ex) -- ([yshift=+.65ex]pic cs:tabend-\the\c@tabularlinecounter);}
%\newcommand*\@marklines@e{\pgfmark{tabend-\the\c@tabularlinecounter}}
%% PGF
%\usepackage{pgf}
%\newcommand*\@marklines@s{%
% \pgfpicture
% \pgfrememberpicturepositiononpagetrue
% \pgfsetbaseline{+-.65ex}
% \pgfnode{coordinate}{center}{}{tab-\the\c@tabularlinecounter}{}
% \endpgfpicture}
%\newcommand*\@marklines@e{%
% \pgfpicture
% \pgfrememberpicturepositiononpagetrue
% \pgf@relevantforpicturesizefalse
% \pgfsetbaseline{+0pt}
% \pgfpathmoveto{\pgfpoint{+0pt}{+.65ex}}
% \pgfpathlineto{\pgfpointanchor{tab-\the\c@tabularlinecounter}{center}}
% \pgfusepath{stroke}
% \endpgfpicture}
\begin{document}
\setLinesToCross{2,3,4}
\begin{tabular}{M*3{c}|cN}
$A_1$ & $A_2$ & $A_3$ & $K$ \\ \hline
0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 1 & 0 & 0 \\
0 & 1 & 1 & 1 \\
1 & 0 & 0 & 1 \\
1 & 0 & 1 & 1 \\
1 & 1 & 0 & 1 \\
1 & 1 & 1 & 1
\end{tabular}
\setLinesToCross{5,6,7,8,9}
\begin{tabular}{M*3{c}|cN}
$A_1$ & $A_2$ & $A_3$ & $K$ \\ \hline
0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 1 & 0 & 0 \\
0 & 1 & 1 & 1 \\
1 & 0 & 0 & 1 \\
1 & 0 & 1 & 1 \\
1 & 1 & 0 & 1 \\
1 & 1 & 1 & 1
\end{tabular}
\end{document}
## Output
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/de2692.png