Estou tentando centralizar verticalmente uma tabela longa de várias páginas (com algumas células com texto longo) no landscape
modo. Eu uso xltabular
e threeparttablex
para fazer essa mesa. Embora a tabela possa ser gerada com sucesso (encontre abaixo o MWE), ela não aparece centralizada verticalmente nas páginas (capturas de tela em anexo).
Eu tentei \centering
, \begin{center}
, \vfill
e \vspace*{\fill}
, como mencionado em outros posts, mas obviamente nenhum deles funciona para esse propósito. Eu ficaria muito grato por qualquer conselho ou solução para este problema.
Aqui está o 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}
Aqui estão as imagens que mostram que a tabela não está no centro das páginas:
Responder1
Como a centralização vertical dos fragmentos da tabela parece ser de suma importância, talvez seja necessário desistir de produzir a tabela com base em um único xltabular
ambiente. Em vez disso, você pode querer empregar o rotating
pacote e seu sidewaystable
ambiente - um sidewaystable
ambiente por página e um tabularx
ambiente por ambiente lateral. Presumivelmente, você desejará apenas um tablenotes
ambiente para todas as três (?) tabelas; nesse caso, você provavelmente desejará colocar esse tablennotes
ambiente na página final.
E considere empregar o caption
pacote e sua \ContinuedFloat
diretiva para gerar um número de tabela comum em todos os ambientes laterais.
Esperançosamente, as capturas de tela a seguir demonstram que todos os três fragmentos da tabela estão centralizados verticalmente em uma 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}
Termo aditivopara responder à questão de acompanhamento do OP, não apenas sobre a composição das tabelas no modo paisagem, mas também sobre o visualizador de PDFmostraras páginas no modo paisagem.
O sidewaystable
método coloca seu conteúdo no modo paisagem. No entanto, como você descobriu, ele também não instrui o visualizador de PDF a alterar ona telada tabela do modo paisagem do modo retrato para o modo paisagem.
Se esse é um efeito que você deseja alcançar, sugiro que proceda da seguinte forma. Primeiro, no preâmbulo, mude \usepackage{rotating}
para \usepackage{pdflscape}
. Segundo, altere todas as três instâncias de \begin{tabularx}{\textwidth}
para `\begin{tabularx}{\linewidth}. Terceiro, altere o layout geral de
% first page
\begin{sidewaystable}
...
\end{sidewaystable}
% second page
\begin{sidewaystable}
...
\end{sidewaystable}
% third page
\begin{sidewaystable}
...
\end{sidewaystable}
para
\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}
Em outras palavras, você precisará alterar o layout geral de 3 sidewaystable
ambientes para 3 table[p]
ambientes, encerrados em um único landscape
ambiente.