
我正在嘗試利用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}