Centralizando tabelas longas e de várias páginas em páginas de paisagem

Centralizando tabelas longas e de várias páginas em páginas de paisagem

Estou tentando centralizar verticalmente uma tabela longa de várias páginas (com algumas células com texto longo) no landscapemodo. Eu uso xltabulare threeparttablexpara 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}, \vfille \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: insira a descrição da imagem aqui insira a descrição da imagem aqui

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 xltabularambiente. Em vez disso, você pode querer empregar o rotatingpacote e seu sidewaystableambiente - um sidewaystableambiente por página e um tabularxambiente por ambiente lateral. Presumivelmente, você desejará apenas um tablenotesambiente para todas as três (?) tabelas; nesse caso, você provavelmente desejará colocar esse tablennotesambiente na página final.

E considere empregar o captionpacote e sua \ContinuedFloatdiretiva 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.

insira a descrição da imagem aqui


insira a descrição da imagem aqui


insira a descrição da imagem aqui

\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 sidewaystablemé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 sidewaystableambientes para 3 table[p]ambientes, encerrados em um único landscapeambiente.

informação relacionada