Wie kann man Tabellenleerzeichen als Nullen darstellen?

Wie kann man Tabellenleerzeichen als Nullen darstellen?

Ich würde gerne wissen, ob es möglich ist, LaTeX-Tabellen &&als interpretieren zu lassen &0&. Das Leerzeichen ist also nicht das wörtliche NA oder etwas Entsprechendes hier. Code

\documentclass{article}

\begin{document}

\begin{table}
\begin{tabular}{| l | l | l |}
AHB        && \\ \hline
\end{tabular}
\end{table}

\end{document}

Ich ändere die Tabellenzeile in

AHB       1 && 1 \\ \hline

Ich möchte, dass es interpretiert wird

AHB       1 &0& 1 \\ \hline

Antwort1

Du kannstSammeln Sie den ZellinhaltUndTesten Sie, ob es leer ist:

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{collcell}
\newcommand{\emptytozero}[1]{% https://tex.stackexchange.com/q/53068/5764
  \if\relax\detokenize{#1}\relax
    0%
  \else
    #1%
  \fi
}

\begin{document}

\begin{tabular}{ c | >{\collectcell\emptytozero}c<{\endcollectcell} }
   &   \\
   & 1 \\
 1 &   \\
 1 & 1
\end{tabular}

\end{document}

Wenn mehrere Spalten untersucht werden sollen, kann man einen neuen Spaltentyp definieren (collcellLadungenarray.) \newcolumntype:

\newcolumntype{C}{ >{\collectcell\emptytozero}c<{\endcollectcell} }

Antwort2

Hier eine sehr einfache Variante, die leere Tabellenzellen mit einer Null auffüllt. Die Prüfung übernimmt ein neues Spaltenformat, zdas für alle Spalten verwendet werden sollte, die ggf. mit Nullen aufgefüllt werden müssen.

\documentclass{article}
\usepackage{array}

\newcolumntype{z}{>{\zeroIfEmpty}l<{\endzero}}
\def\zeroIfEmpty#1\endzero{\setbox0=\hbox{#1}\ifdim\wd0=0pt 0\else#1\fi}

\begin{document}
\begin{tabular}{| z | z | z | l }
   &   &   &\\
   &   & 1 &\\
   & 1 &   &\\
 1 &   &   &\\
 1 & 1 & 1 &\\
\end{tabular}
\end{document}

Bildbeschreibung hier eingeben

Beachten Sie, dass dies eine sehr einfache Prüfung ist, die in mehreren komplizierteren Situationen wahrscheinlich nicht funktioniert. Beispielsweise funktioniert sie nicht, wenn sie in der letzten Spalte einer Tabelle verwendet wird (was durch eine zusätzliche leere Spalte behoben werden kann, wie im Beispiel gezeigt). Daher ist es wahrscheinlich besser, sie überhaupt nicht zu verwenden. ;-)

verwandte Informationen