我正在尝试在模式下垂直居中多页长表格(其中一些单元格包含长文本)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
每个侧向表环境一个环境。大概,您只需要一个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}
附录回答 OP 的后续问题,不仅要以横向模式排版表格,还要有 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}
换句话说,您需要将整体布局从使用 3 个sidewaystable
环境更改为使用 3 个table[p]
环境(包含在单个landscape
环境中)。