Ajustar el ancho de la columna de la matriz para llenar la página

Ajustar el ancho de la columna de la matriz para llenar la página

Estoy tratando de hacer uso del arrayentorno (cualquier cosa que funcione de manera similar sería suficiente) que estirará automáticamente las columnas para que tengan un ancho uniforme y se distribuyan por toda la página. Un ejemplo:

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

Todo lo que sé cómo hacer en este momento es insertar una columna 'falsa' entre cada par de columnas y usarla \hspace*{##cm}para forzar que las columnas se extiendan, pero esto se vuelve un poco tedioso si tengo, digamos, 7 columnas en 13 filas que , por una razón u otra, no todos pueden ser parte de un único entorno de matriz.

¿Existe un enfoque semisimple para este problema? He estado buscando, pero no he encontrado nada que me haya parecido muy útil (puede darse el caso de que no esté lo suficientemente familiarizado con la jerga para introducir también las mejores frases de búsqueda).

Respuesta1

Puedes usar a tabular*y llenar el espacio. Para tener columnas en modo matemático use arrayel paquete y >{$}como lo hice yo.

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

Puedes simplificar, como sugiere Mico, definiendo un nuevo tipo de columna:

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

Respuesta2

(Respuesta actualizada para incorporar los comentarios de seguimiento del OP).

Si entiendo sus requisitos correctamente, desea

  • los números dentro de cada columna se alinearán con decimales

  • las columnas mismas deben estar centradas

  • ajuste automático del ancho de las columnas y/o la cantidad de espacios en blanco entre columnas para que toda la tabla ocupe el ancho del bloque de texto.

Una forma de lograr estos objetivos es utilizar un tabularxentorno, cargar el dcolumnpaquete para alinear decimalmente los números y utilizar una forma modificada (es decir, centrada) del Xtipo de columna para componer los encabezados de cada fila.

ingrese la descripción de la imagen aquí

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

información relacionada