Центрирование многостраничной длинной таблицы на страницах с альбомной ориентацией

Центрирование многостраничной длинной таблицы на страницах с альбомной ориентацией

Я пытаюсь вертикально отцентрировать многостраничную длинную таблицу (в некоторых ячейках которой содержится длинный текст) в режиме landscape. Я использую xltabularи threeparttablexдля создания этой таблицы. Хотя таблица может быть успешно сгенерирована (пожалуйста, найдите ее ниже MWE), она не отображается вертикально отцентрированной на страницах (скриншоты прилагаются).

Я пробовал \centering, \begin{center}, \vfill, и \vspace*{\fill}, как упоминалось в других постах, но очевидно, что ни один из них не подходит для этой цели. Я был бы очень благодарен за любые советы или решения этой проблемы.

Вот 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}

Вот изображения, показывающие, что таблица находится не в центре страниц: введите описание изображения здесь введите описание изображения здесь

решение1

Поскольку вертикальное центрирование фрагментов таблицы, по-видимому, имеет первостепенное значение, вам, возможно, придется отказаться от создания таблицы на основе одной xltabularсреды. Вместо этого вы можете рассмотреть возможность использования rotatingпакета и его sidewaystableсреды — одна sidewaystableсреда на страницу и одна tabularxсреда на среду sidewaystable. Вероятно, вам понадобится только одна tablenotesсреда для всех трех (?) таблиц; если так, вы, вероятно, захотите разместить эту tablennotesсреду на последней странице.

И обязательно рассмотрите возможность использования captionпакета и его \ContinuedFloatдирективы для генерации общего номера таблицы во всех средах sidewaystable.

Надеюсь, следующие снимки экрана демонстрируют, что все три фрагмента таблицы выровнены по вертикали на странице.

введите описание изображения здесь


введите описание изображения здесь


введите описание изображения здесь

\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}

Приложениедля ответа на дополнительный вопрос автора статьи о том, что нужно не только печатать таблицы в альбомной ориентации, но и иметь средство просмотра PDF-файловотображатьстраницы в альбомной ориентации.

Метод sidewaystableпомещает его содержимое в альбомный режим. Однако, как вы обнаружили, он также не дает указаний просмотрщику PDF изменитьотображение на экранетаблицы альбомного режима из портретного в альбомный режим.

Если вы хотите добиться такого эффекта, я предлагаю вам действовать следующим образом. Во-первых, в преамбуле измените \usepackage{rotating}на \usepackage{pdflscape}. Во-вторых, измените все три экземпляра \begin{tabularx}{\textwidth}на `\begin{tabularx}{\linewidth}. В-третьих, измените общую компоновку с

% first page
\begin{sidewaystable}
...
\end{sidewaystable}

% second page
\begin{sidewaystable}
...
\end{sidewaystable}

% third page
\begin{sidewaystable}
...
\end{sidewaystable}

к

\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}

Другими словами, вам нужно будет изменить общую схему с использования трех sidewaystableсред на использование трех table[p]сред, заключенных в одну landscapeсреду.

Связанный контент