Ajustar a largura da coluna da matriz para preencher a página

Ajustar a largura da coluna da matriz para preencher a página

Estou tentando fazer uso do arrayambiente (qualquer coisa que opere de forma semelhante seria suficiente) que esticará automaticamente as colunas para que tenham largura uniforme e se espalhem por toda a página. Um exemplo:

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

Tudo o que sei fazer no momento é inserir uma coluna 'falsa' entre cada par de colunas e usá-la \hspace*{##cm}para forçar as colunas a se espalharem, mas isso fica um pouco tedioso se eu tiver, digamos, 7 colunas em 13 linhas que , por um motivo ou outro, não podem fazer parte de um único ambiente de array.

Existe uma abordagem semi-simples para este problema? Estive pesquisando, mas não encontrei nada que parecesse muito útil (pode ser que eu não esteja familiarizado o suficiente com o jargão para inserir também as melhores frases de pesquisa).

Responder1

Você pode usar a tabular*e preencher o espaço. Para ter colunas no modo matemático, use arraypackage e >{$}como eu fiz.

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

Você pode simplificar, conforme sugerido por Mico, definindo um novo tipo de coluna:

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

Responder2

(Resposta atualizada para incorporar os comentários de acompanhamento do OP.)

Se eu entendi seus requisitos corretamente, você quer

  • os números dentro de cada coluna serão alinhados decimais

  • as próprias colunas serão centralizadas

  • ajuste automático às larguras das colunas e/ou à quantidade de espaços em branco entre colunas para que toda a tabela ocupe a largura do bloco de texto.

Uma maneira de atingir esses objetivos é usar um tabularxambiente, carregar o dcolumnpacote para alinhar os números decimais e usar uma forma modificada (isto é, centralizada) do Xtipo coluna para compor os cabeçalhos de cada linha.

insira a descrição da imagem aqui

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

informação relacionada