我試圖在該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}
附錄解決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
環境中。