Centrar en un entorno tabular con ancho preestablecido

Centrar en un entorno tabular con ancho preestablecido

Tengo una pregunta sencilla que aparentemente no tiene una respuesta sencilla.

Con el siguiente código:

\begin{center}
    \huge
        \begin{tabular}{|c|c|}
            \hline
        \textsf{\emph{\textbf{x}}} &   \textsf{\emph{\textbf{y}}}\\
             \hline
             0 & 1 \\
             \hline
             1& 3 \\
             \hline
             2& 5 \\
             \hline
             3 & 7\\
             \hline
             4 & 9 \\
             \hline
        \end{tabular}
    \end{center}

¿Cómo agrego un ancho preestablecido de 2 cm a cada columna, manteniendo todo lo que está en las celdas centrado? Además,¿Cómo hago esto sin realizar ningún comando nuevo?

Respuesta1

arrayproporciona una especificación de columna w{<align>}{<width>}que puede utilizar. Específicamente, las columnas usarían w{c}{2cm}:

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{array}

\begin{document}

\begin{center}
  \huge
  \begin{tabular}{ | w{c}{2cm} | w{c}{2cm} | }
    \hline
    \textsf{\emph{\textbf{x}}} & \textsf{\emph{\textbf{y}}}\\
    \hline
    0 & 1 \\
    \hline
    1 & 3 \\
    \hline
    2 & 5 \\
    \hline
    3 & 7 \\
    \hline
    4 & 9 \\
    \hline
  \end{tabular}
\end{center}

\end{document}

Respuesta2

Con {NiceTabular}of nicematrix, tienes una llave columns-width.

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\begin{center}
    \huge
        \begin{NiceTabular}{|c|c|}[columns-width=2cm]
            \hline
        \textsf{\emph{\textbf{x}}} &   \textsf{\emph{\textbf{y}}}\\
             \hline
             0 & 1 \\
             \hline
             1& 3 \\
             \hline
             2& 5 \\
             \hline
             3 & 7\\
             \hline
             4 & 9 \\
             \hline
        \end{NiceTabular}
\end{center}

\end{document}

Salida del código anterior

Respuesta3

Su consulta deja abierto si 2cmdebe ser el ancho utilizable o el ancho total de la columna.

  • si es elusableancho de columna, se puede utilizar 2cmdirectamente en el segundo argumento del wtipo de columna; ver@ respuesta de Werner.

  • Si, por el contrario, 2cmse supone que es eltotalancho de columna, se puede continuar usando el wtipo de columna, pero ahora hay que restar 2\tabcolseppara 2cmobtener el ancho de columna utilizable; Vea a continuación un ejemplo de cómo se puede hacer esto.

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage{array} % for 'w' column type
\newcommand\zzz{%
  \hline
  \textbf{x} & \textbf{y} \\ \hline
  0 & 1 \\ \hline
  2 & 3 \\ \hline}
  
\newlength\mylen % set up a scratch length parameter 

\begin{document}

\verb+c+ col.\ type\strut
 
\begin{tabular}{| c | c |}
   \zzz
\end{tabular}

\bigskip
\verb+w+ col.\ type, 2cm \emph{usable} width\strut

\begin{tabular}{| w{c}{2cm} | w{c}{2cm} |}
   \zzz
\end{tabular}  

\bigskip
\verb+w+ col.\ type, 2cm \emph{total} width\strut

\setlength\mylen{\dimexpr2cm-2\tabcolsep\relax} % compute the usable width
\begin{tabular}{| w{c}{\mylen} | w{c}{\mylen} |}
   \zzz
\end{tabular} 

\smallskip
\addtolength\tabcolsep{1em} % enlarge value of \tabcolsep
\setlength\mylen{\dimexpr2cm-2\tabcolsep\relax} % recompute the usable width
\begin{tabular}{| w{c}{\mylen} | w{c}{\mylen} |}
   \zzz
\end{tabular}

\end{document}

información relacionada