\arrayrulewidth

Aus goLaTeX

\arrayrulewidth ist eine TeX-Länge (\dimen-Register), die die Breite der Linien zwischen Spalten und Zeilen in einer Tabelle bestimmt.

Verwendung

Syntax

\the\arrayrulewidth
\setlength{\arrayrulewidth}{Wert}
\addtolength{\arrayrulewidth}{Wert}

Beschreibung

Innerhalb eines Arrays mit der array-Umgebung oder einer Tabelle mit der tabular-Umgebung kann man mit Hilfe von | innerhalb der Spaltendeklaration vertikale Linien zwischen den Spalten oder vor der ersten bzw. nach der letzten Spalte einfügen. Mit der Anweisung \hline kann man eine horizontale Linie zwischen den Zeilen oder vor der ersten bzw. nach der letzten Zeile einfügen. Die Dicke all dieser Linien wird von \arrayrulewidth bestimmt.

Eine vertikale Linie in einer array-Umgebung wird übrigens ggf. innerhalb des Spaltenabstands gesetzt, vergrößert den Abstand also nicht zusätzlich. Daher sollte \arrayrulewidth immer deutlich kleiner als \arraycolsep sein. Anderenfalls könnte die Trennlinie den Inhalt der Spalten überdecken. Dies ändert sich jedoch, wenn das Paket array geladen wird.

Eine vertikale Linie in einer tabular-Umgebung wird zusätzlich zum Spaltenabstand gesetzt. Allerdings wird dies bei der Länger der horizontalen Linien nicht hinreichend berücksichtigt. Dadurch sind die horizontalen Linien sowohl am Anfang als auch Ende eventuell zu kurz (siehe das zweite Beispiel). Dies ändert sich jedoch, wenn das Paket array geladen wird.

Dagegen vergrößert die Dicke der horizontalen Linien den Abstand zwischen zwei Zeilen sowohl in array- als auch tabular-Umgebungen.

Beispiele

\documentclass{article}
\usepackage[ngerman]{babel}
\begin{document}
\section{Matrix}
Matrix mit Linien in der Voreinstellung:
\[
  M_4=\left( \begin{array}{ccc|c}
               a_1 & b_1 & c_1 & d_1 \\
               a_2 & b_2 & c_2 & d_2 \\
               a_3 & b_3 & c_3 & d_3 \\\hline
               a_4 & b_4 & c_4 & d_4
             \end{array} \right)
\]
Matrix mit dickeren Linien:
\[
  \setlength{\arrayrulewidth}{2pt}%
  M_4=\left( \begin{array}{ccc|c}
               a_1 & b_1 & c_1 & d_1 \\
               a_2 & b_2 & c_2 & d_2 \\
               a_3 & b_3 & c_3 & d_3 \\\hline
               a_4 & b_4 & c_4 & d_4
             \end{array} \right)
\]
Oder mit übermäßig dicken Linien:
\[
  \setlength{\arrayrulewidth}{2\arraycolsep}%
  M_4=\left( \begin{array}{ccc|c}
               a_1 & b_1 & c_1 & d_1 \\
               a_2 & b_2 & c_2 & d_2 \\
               a_3 & b_3 & c_3 & d_3 \\\hline
               a_4 & b_4 & c_4 & d_4
             \end{array} \right)
\]
\end{document}

Würde man in der letzten Matrix die Dicke weiter vergrößern, würden die c- und d-Spalten teilweise sogar überdeckt. Das kann so weit gehen, dass auch die anderen Spalten mit überdeckt werden!

\documentclass{article}
\usepackage[ngerman]{babel}
%\usepackage{array}
\begin{document}
\section{Gitterbox statt Tabelle}
\begin{tabular}[t]{|l|c|r|}
  \hline
  links & mittig & rechts \\
  \hline
  left  & mittig & right \\
  \hline
  eine  & weitere & Zeile \\
  \hline
\end{tabular}

\renewcommand*{\arrayrulewidth}{2\arraycolsep}
\noindent\begin{tabular}[t]{|l|c|r|}
  \hline
  links & mittig & rechts \\
  \hline
  left  & mittig & right \\
  \hline
  eine  & weitere & Zeile \\
  \hline
\end{tabular}

\end{document}

Dieses Beispiel zeigt, dass sich Texttabellen bezüglich der vertikalen Linien etwas anders verhalten. Hier sind dicke Linien in Kombination von vertikalen und horizontalen Linien in der Basisfunktionalität von LaTeX kaum sinnvoll zu gebrauchen. Lädt man jedoch zusätzlich das Paket array, entfernt also das % am Anfang der entsprechenden Zeile, so werden die Linien wieder durchgehend. Das Paket hhline bietet alternative Möglichkeiten zur Definition von Linien in Tabellen.

Verwandte Längen, Befehle und Umgebungen

\arraycolsep, \doublerulesep, array (Umgebung), \tabcolsep, \arraystretch

Verweise

Die TeX-Länge \arrayrulewidth ist in den LaTeX-Quellen in Datei lttab.dtx definiert und in source2e.pdf dokumentiert.

Links