
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
tabular*
を使ってスペースを埋めることができます。数式モードで列を作成するには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 のフォローアップコメントを組み込むように更新されました。)
あなたの要件を正しく理解していれば、
各列内の数字を小数点揃えにする
列自体を中央に配置する
表全体がテキスト ブロックの幅を占めるように、列の幅や列間の空白の量を自動的に調整します。
これらの目的を達成する 1 つの方法は、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}