調整數組列寬度以填滿頁面

調整數組列寬度以填滿頁面

我正在嘗試利用array環境(任何類似操作的東西就足夠了)來自動將列拉伸為均勻寬度並分佈在整個頁面上。一個例子:

\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}

我目前所知道的就是在每對列之間插入一個「假」列,並用於\hspace*{##cm}強制列展開,但是如果我有,例如 13 行上的 7 列,這會變得有點乏味出於某種原因,不能全部成為單一陣列環境的一部分。

這個問題有半簡單的方法嗎?我一直在搜索,但沒有找到任何看起來非常有幫助的東西(可能是我對行話不夠熟悉,無法輸入最佳搜索短語)。

答案1

您可以使用 atabular*並填滿該空間。要讓列處於數學模式,請使用array包,>{$}就像我所做的那樣。

\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}

您可以按照 Mico 的建議,定義新的列類型來簡化:

\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}

答案2

(更新答案以納入OP的後續評論。)

如果我正確理解您的要求,您想要

  • 每列中的數字要小數點對齊

  • 列本身居中

  • 自動調整列寬和/或列間空白量,以便整個表格佔據文字區塊的寬度。

實現這些目標的一種方法是使用tabularx環境,載入dcolumn套件以小數點對齊數字,並使用X列類型的修改(即居中)形式來排版每行的標題。

在此輸入影像描述

\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}

相關內容