在横向页面中将多页长表格居中

在横向页面中将多页长表格居中

我正在尝试在模式下垂直居中多页长表格(其中一些单元格包含长文本)landscape。我使用xltabularthreeparttablex来制作此表格。虽然可以成功生成表格(请参阅 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环境中)。

相关内容