
He aquí un ejemplo:
\documentclass{article}
\usepackage[papersize={4.8 in, 6.4 in}, top=0.10cm, bottom=0.5cm, right=0.2cm, left=0.2cm]{geometry}
\begin{document}
\begin{center}
\scriptsize
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\multicolumn{2}{c}{\enspace} \\
\multicolumn{2}{l}{\hspace{20pt} short line (left-aligned centered block)} \\
\multicolumn{2}{l}{\hspace{20pt} now a longer (line in the same left-aligned centered block)} \\
\multicolumn{2}{c}{\enspace} \\
\multicolumn{2}{c}{short line (centered, not left-aligned)} \\
\multicolumn{2}{c}{this is a longer line (centered, not left-aligned)} \\
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}
Tengo una tabla de dos columnas y necesito centrar el texto que abarca las dos columnas mientras permanece alineado a la izquierda.
En el código anterior utilizo una multicolumna alineada a la izquierda y \hspace para sangrar arbitrariamente el bloque en 20 puntos.
¿Hay alguna manera de que el compilador calcule el ancho/largo de la sangría?
Una sangría adecuada para centrar el bloque debería ser algo como: (ancho de la tabla - longitud promedio de la línea) / 2.
¿Cuál sería la forma correcta de hacer esto?
Actualizar:
Opté por la tabla anidada y obtuve prácticamente el mismo diseño que el original:
Respuesta1
Con stackengine
y su \Centerstack
comando, que puede tomar un argumento opcional para la alineación (el valor predeterminado es c
) y \addlinespace
(desde booktabs
) para simplificar el espaciado vertical alrededor de estos bloques:
\documentclass{article}
\usepackage[papersize={4.8 in, 6.4 in}, top=0.10cm, bottom=0.5cm, hmargin=0.2cm]{geometry}
\usepackage{booktabs}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{center}
\scriptsize\setlength{\defaultaddspace}{2.7ex}
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\addlinespace
\multicolumn{2}{c}{\Centerstack[l]{short line (left-aligned centered block) \\
now a longer (line in the same left-aligned centered block)}} \\
\addlinespace
\multicolumn{2}{c}{\Centerstack{short line (centered, not left-aligned) \\
this is a longer line (centered, not left-aligned)}} \\
\addlinespace
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}
Editar: cargando eqparbox
, puedes obtener esta alineación con el siguiente código:
\begin{center}
\scriptsize\setlength{\defaultaddspace}{2.7ex}
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\addlinespace
\multicolumn{2}{c}{\eqparbox{LC}{\Centerstack[l]{short line (left-aligned centered block) \\
now a longer (line in the same left-aligned centered block)}}} \\
\addlinespace
\multicolumn{2}{c}{\eqparbox{LC}{\Centerstack[l]{short line (centered, not left-aligned) \\
this is a longer line (centered, not left-aligned)}}} \\
\addlinespace
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
Respuesta2
Con los siguientes dos pequeños trucos podrás conseguir dos líneas que queden alineadas a la izquierda entre sí, pero centradas dentro de la tabla.
En el primer ejemplo, he utilizado una única p
columna de tipo centrada para ambas líneas de texto, mientras que el segundo ejemplo se basa en una tabla anidada alineada a la izquierda dentro de una columna múltiple centrada.
\documentclass{article}
\usepackage{array}
\usepackage{makecell}
\usepackage[papersize={4.8 in, 6.4 in}, top=0.10cm, bottom=0.5cm, right=0.2cm, left=0.2cm]{geometry}
\begin{document}
\begin{center}
\scriptsize
\begin{tabular}{|l|l|}
\multicolumn{2}{c}{\enspace} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\multicolumn{2}{c}{} \\
\multicolumn{2}{>{\centering\arraybackslash}p{8cm}}{short line (centered, not left-aligned)
\newline
this is a longer line (centered, not left-aligned)} \\
\multicolumn{2}{c}{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\multicolumn{2}{c}{} \\
\multicolumn{2}{c}{\begin{tabular}{@{}l@{}}
short line (centered, not left-aligned) \\
this is a longer line (centered, not left-aligned)
\end{tabular}} \\
\multicolumn{2}{c}{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}
Respuesta3
Usando \makecell
y \mbox
su tabla también se puede escribir de la siguiente manera:
\documentclass{article}
\usepackage[papersize={4.8 in, 6.4 in},
top=0.10cm, bottom=0.5cm, right=0.2cm, left=0.2cm]{geometry}
\usepackage{array, makecell}
\usepackage{xparse}
\NewExpandableDocumentCommand\mcc{O{2}m}
{\multicolumn{#1}{c}{#2}}
\begin{document}
\begin{center}
\scriptsize
\begin{tabular}{|l|l|}
\mcc{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\mcc{} \\
\mcc{\mbox{%
\makecell[l]{short line (centered, not left-aligned)\\
this is a longer line
(centered, not left-aligned)}}
} \\
\mcc{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\mcc{} \\
\mcc{short line (centered, not left-aligned)} \\
\mcc{this is a longer line (centered, not left-aligned)} \\
\mcc{} \\
left-aligned text in column 1 & left-aligned text in column 2 \\
left-aligned text in column 1 & left-aligned text in column 2 \\
\end{tabular}
\end{center}
\end{document}