Passen Sie die Breite der Array-Spalten an, um die Seite auszufüllen

Passen Sie die Breite der Array-Spalten an, um die Seite auszufüllen

Ich versuche, die Umgebung zu nutzen array(alles, was ähnlich funktioniert, würde ausreichen), die die Spalten automatisch auf eine gleichmäßige Breite streckt und über die gesamte Seite verteilt. Ein Beispiel:

\documentclass[12pt]{article}
\usepackage{amsmath}
\renewcommand{\u}[1]{\underline{#1}}

\begin{document}
\[\begin{array}{rrr}
    5 & 5 & 5\\
    \u{+4} &\u{+4} &\u{+4}
\end{array}\]
\end{document}

Das Einzige, was ich derzeit weiß, ist, zwischen jedem Spaltenpaar eine „falsche“ Spalte einzufügen und damit \hspace*{##cm}die Spalten auseinander zu ziehen. Das wird allerdings etwas mühsam, wenn ich beispielsweise 7 Spalten auf 13 Zeilen habe, die aus dem einen oder anderen Grund nicht alle Teil einer einzigen Array-Umgebung sein können.

Gibt es eine halbwegs einfache Lösung für dieses Problem? Ich habe gesucht, aber nichts gefunden, was mir wirklich hilfreich erschien (vielleicht bin ich mit dem Fachjargon auch nicht vertraut genug, um die besten Suchbegriffe einzugeben).

Antwort1

Sie können ein verwenden tabular*und den Platz ausfüllen. Um Spalten im Mathematikmodus zu haben, verwenden Sie arraydas Paket und, >{$}wie ich es getan habe.

\documentclass[12pt]{article}
\usepackage{amsmath,array}
\renewcommand{\u}[1]{\underline{#1}}

\begin{document}
\begin{tabular*}{\linewidth}{>{$}r<{$}@{\extracolsep{\fill}}>{$}r<{$}>{$}r<{$}}
    5 & 5 & 5\\
    \u{+4} &\u{+4} &\u{+4}
\end{tabular*}
\end{document}

Sie können dies, wie von Mico vorgeschlagen, vereinfachen, indem Sie einen neuen Spaltentyp definieren:

\documentclass[12pt]{article}
\usepackage{amsmath,array}
\renewcommand{\u}[1]{\underline{#1}}

\newcolumntype{R}{>{$}r<{$}}

\begin{document}
\begin{tabular*}{\linewidth}{R@{\extracolsep{\fill}}RR}
    5 & 5 & 5\\
    \u{+4} &\u{+4} &\u{+4}
\end{tabular*}
\end{document}

Antwort2

(Antwort aktualisiert, um die Folgekommentare des OP einzubeziehen.)

Wenn ich Ihre Anforderungen richtig verstehe, möchten Sie

  • die Zahlen in jeder Spalte sollen dezimal ausgerichtet sein

  • die Spalten selbst zentriert werden

  • Automatische Anpassung der Spaltenbreiten und/oder der Menge an Leerzeichen zwischen den Spalten, sodass die gesamte Tabelle die Breite des Textblocks einnimmt.

tabularxEine Möglichkeit zum Erreichen dieser Ziele besteht darin, eine Umgebung zu verwenden , das dcolumnPaket zum Dezimalausrichten der Zahlen zu laden und eine geänderte (d. h. zentrierte) Form des XSpaltentyps zum Setzen der Überschriften der einzelnen Zeilen zu verwenden.

Bildbeschreibung hier eingeben

\documentclass[12pt]{article}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcommand\mc[1]{\multicolumn{1}{Y}{#1}}

\usepackage{dcolumn}
\newcolumntype{d}[1]{D..{#1}} % "decimal-aligned" column type

\usepackage[normalem]{ulem} % for "safe underlining"
\renewcommand\u[1]{\uline{#1}}

\begin{document}
\hrule % just to illustrate width of text block
\smallskip\noindent
\begin{tabularx}{\linewidth}{ *{4}{d{2.0}} }
\mc{Header 1} & \mc{Header 2} & \mc{Header 3} & \mc{Header 4}\\
    5 & 5 & 5 & 5\\
    \u{+4} &\u{+4} &\u{+4} &\u{+4}\\
\end{tabularx}
\end{document}

verwandte Informationen