Estoy intentando centrar verticalmente una tabla larga de varias páginas (con algunas celdas con texto largo) en el landscape
modo. Yo uso xltabular
y threeparttablex
para hacer esta mesa. Aunque la tabla se puede generar correctamente (búsquela debajo del MWE), no aparece centrada verticalmente en las páginas (capturas de pantalla adjuntas).
He probado \centering
, \begin{center}
, \vfill
y \vspace*{\fill}
, como se mencionó en otras publicaciones, pero obviamente ninguno de estos funciona para este propósito. Estaría muy agradecido por cualquier consejo o solución a este problema.
Aquí está el MWE:
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{xltabular,threeparttablex}
\usepackage{booktabs}
\usepackage{pdflscape}
\usepackage{lipsum}
\begin{document}
\begin{landscape}
\begin{ThreePartTable}
\begin{TableNotes}
$^*$ \lipsum[1]
\end{TableNotes}
\begin{xltabular}{\linewidth}{p{2cm}XX}
\caption{TableName.} \\
\toprule
Column1 & Column2 & Column3 \\ \midrule
\endfirsthead
\multicolumn{3}{c}{Table \thetable~({\it continued})} \\[1pt]
\toprule
Column1 & Column2 & Column3 \\ \midrule
\endhead
\bottomrule
\multicolumn{6}{r}{\footnotesize ({\it continued on next page})}
\endfoot
\bottomrule
\insertTableNotes
\endlastfoot
Row1 & \lipsum[1] & \lipsum[1] \\
Row2 & \lipsum[2] & \lipsum[2] \\
Row3 & \lipsum[3] & \lipsum[3] \\
Row4 & \lipsum[4] & \lipsum[4]
\end{xltabular}
\end{ThreePartTable}
\end{landscape}
\end{document}
Aquí están las imágenes que muestran que la tabla no está en el centro de las páginas:
Respuesta1
Dado que el centrado vertical de los fragmentos de la mesa parece ser de suma importancia, es posible que deba renunciar a producir la mesa basándose en un único xltabular
entorno. En su lugar, es posible que desee considerar la posibilidad de emplear el rotating
paquete y su sidewaystable
entorno: un sidewaystable
entorno por página y un tabularx
entorno por entorno lateralmente estable. Presumiblemente, querrás solo un tablenotes
entorno para las tres (?) tablas; Si es así, probablemente querrás colocar este tablennotes
entorno en la página final.
Y considere emplear el caption
paquete y su \ContinuedFloat
directiva para generar un número de tabla común en todos los entornos de estabilidad lateral.
Con suerte, las siguientes capturas de pantalla demuestran que los tres fragmentos de la tabla están centrados verticalmente dentro de una página.
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{tabularx} % for 'tabularx' env. and 'X' col. type
\usepackage{ragged2e} % for '\RaggedRight' macro
\newcolumntype{L}{>{\RaggedRight}X} % suppress full justification
\usepackage{rotating} % for 'sidewaystable' environment
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{caption} % for '\ContinuedFloat' macro
\usepackage{lipsum} % for filler text
\begin{document}
% first page
\begin{sidewaystable}
\begin{threeparttable}
\caption{TableName.}
\begin{tabularx}{\textwidth}{@{} p{2cm} LL @{}}
\toprule
Column1 & Column2 & Column3 \\
\midrule
Row1 & \lipsum[1]\tnote{**} & \lipsum[1] \\
\midrule[\heavyrulewidth]
\multicolumn{3}{r@{}}{\footnotesize(continued on next page)}
\end{tabularx}
\end{threeparttable}
\end{sidewaystable}
% second page
\begin{sidewaystable}
\begin{threeparttable}
\ContinuedFloat
\caption{TableName, part 2 of 3.}
\begin{tabularx}{\textwidth}{@{} p{2cm} LL @{}}
\toprule
Column1 & Column2 & Column3 \\
\midrule
Row2 & \lipsum[2]\tnote{$\dagger$} & \lipsum[2] \\
\addlinespace
Row3 & \lipsum[3] & \lipsum[3]\tnote{$\ddagger$} \\
\midrule[\heavyrulewidth]
\multicolumn{3}{r@{}}{\footnotesize(continued on next page)}
\end{tabularx}
\end{threeparttable}
\end{sidewaystable}
% third page
\begin{sidewaystable}
\begin{threeparttable}
\ContinuedFloat
\caption{TableName, part 3 of 3.}
\begin{tabularx}{\textwidth}{@{} p{2cm} LL @{}}
\toprule
Column1 & Column2 & Column3 \\
\midrule
Row4 & \lipsum[4]\tnote{\S} & \lipsum[4] \\
\bottomrule
\end{tabularx}
\bigskip
\footnotesize
\RaggedRight
\begin{tablenotes}[flushleft]
\item[**] \lipsum[1][1-10]
\smallskip
\item[$\dagger$] \lipsum[2][1-10]
\smallskip
\item[$\ddagger$] \lipsum[3][1-10]
\smallskip
\item[\S] \lipsum[4][1-10]
\end{tablenotes}
\end{threeparttable}
\end{sidewaystable}
\end{document}
Apéndicepara abordar la pregunta de seguimiento del OP, sobre no solo componer las tablas en modo horizontal sino también tener el visor de PDFmostrarlas páginas en modo horizontal.
El sidewaystable
método coloca su contenido en modo horizontal. Sin embargo, como habrá descubierto, tampoco le indica al visor de PDF que cambie elvisualización en pantallade la tabla del modo horizontal del modo vertical al modo horizontal.
Si ese es un efecto que desea lograr, le sugiero que proceda de la siguiente manera. Primero, en el preámbulo, cambie \usepackage{rotating}
a \usepackage{pdflscape}
. En segundo lugar, cambie las tres instancias de \begin{tabularx}{\textwidth}
a `\begin{tabularx}{\linewidth}. En tercer lugar, cambie el diseño general de
% first page
\begin{sidewaystable}
...
\end{sidewaystable}
% second page
\begin{sidewaystable}
...
\end{sidewaystable}
% third page
\begin{sidewaystable}
...
\end{sidewaystable}
a
\begin{landscape}
% first page
\begin{table}[p]
...
\end{table}
% second page
\begin{table}[p]
...
\end{table}
% third page
\begin{table}[p]
...
\end{table}
\end{landscape}
Dicho de otra manera, necesitará cambiar el diseño general de usar 3 sidewaystable
entornos a usar 3 table[p]
entornos, encerrados en un solo landscape
entorno.