Я пытаюсь вертикально отцентрировать многостраничную длинную таблицу (в некоторых ячейках которой содержится длинный текст) в режиме 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
среду.