同一页上的节标题和旋转表格

同一页上的节标题和旋转表格

我有一张表格,由于其大小,必须对其进行旋转。此外,在我的文档中,它是附录中的第一个表格,因此必须位于节标题之后。Sidewaystable 不允许在同一页上同时显示节标题和旋转后的表格。因此,我尝试了 hvfloat 以及 rotfloat / varwidth 包,但两者都无法提供完美的解决方案:

\documentclass[12pt,a4paper]{article}

\usepackage{hvfloat}
\usepackage{rotfloat}
\usepackage{varwidth}
    
\begin{document}

\section{Test Section 1}
\begin{center}
\hvFloat[nonFloat=true, capPos=t, rotAngle=90, objectPos=c]%
{table}%
{\begin{tabular}{lll}
column 1a & column 2a & column 3a \\
column 1b & column 2b & column 3b \\
column 1c & column 2c & column 3c \\
\end{tabular}}
{A rotated table}
{tab:test1}
\end{center}

\newpage
\section{Test Section 2}       
\begin{table}[H]
\begin{center}
\rotatebox{90}{%
\begin{varwidth}{\textheight}
\caption{Another rotated table}\label{tab:test2}
\begin{tabular}{lll}
column 1a & column 2a & column 3a \\
column 1b & column 2b & column 3b \\
column 1c & column 2c & column 3c \\
\end{tabular}
\captionsetup{font=footnotesize}  
\caption*{This table is just a test.}
\end{varwidth}}
\end{center}
\end{table}

\end{document}

在这两种情况下,我都实现了表格与节标题位于同一页面上,但是:

对于 hvfloat,(1) 尽管使用了该选项,但capPos=t标题始终位于表格的左侧。我已阅读文档,但我不知道我在这里做错了什么。(2) 我找不到添加表格注释的选项(在我使用的表格环境中,\caption*{Table Notes}但这在这里不起作用)。这样的表格是垂直和水平放置的,就像我希望的那样。

对于旋转框的情况,我设法将标题放在表格顶部,将表格注释放在表格下方,但无论我做什么,表格仍然位于页面的底部(而它应该水平居中并垂直跟随部分标题)。

任何提示都将不胜感激。谢谢。

答案1

使用capPos=topInstead ofcapPos=t会产生以下输出:

在此处输入图片描述

\documentclass[12pt,a4paper]{article}

\usepackage{hvfloat}
\usepackage{rotfloat}
\usepackage{varwidth}
    
\begin{document}

\section{Test Section 1}
\begin{center}
\hvFloat[nonFloat=true, capPos=top, rotAngle=90, objectPos=c]%
{table}%
{\begin{tabular}{lll}
column 1a & column 2a & column 3a \\
column 1b & column 2b & column 3b \\
column 1c & column 2c & column 3c \\
\end{tabular}}
{A rotated table}
{tab:test1}
\end{center}
\end{document}

使用tabular*\multicolumn作为表 ntes 的:

在此处输入图片描述

\documentclass[12pt,a4paper]{article}

\usepackage{hvfloat}
\usepackage{booktabs}

\begin{document}

\section{Test Section 1}
\begin{center}
\hvFloat[nonFloat=true, capPos=top, rotAngle=90, objectPos=c]%
{table}%
{\begin{tabular*}{7cm}{@{\extracolsep{\fill}}lll@{}}
\toprule
column 1a & column 2a & column 3a \\
column 1b & column 2b & column 3b \\
column 1c & column 2c & column 3c \\
\bottomrule
\multicolumn{3}{@{}p{7cm}@{}}{these are some table notes these are some table notes these are some table notes these are some table notes these are some table notes}\\
\end{tabular*}}
{A rotated table}
{tab:test1}

\end{center}
\end{document}

答案2

添加标题的主要问题\section是它会减少剩余空间(旋转前的宽度)。此外,让迷你页面像表格一样工作(参见\setcaptype)比让表格像迷你页面一样工作更容易。

请注意,\centering影响垂直位置(旋转后),而小页面的第三个可选参数影响水平定位(旋转后)。

\documentclass[12pt,a4paper]{article}

\usepackage{adjustbox}
\usepackage{threeparttable}
\usepackage{showframe}% MWE only

\newsavebox{\tempbox}

\newcommand{\setcaptype}[1]% #1 = figure or table
  {\expandafter\def\csname @captype\endcsname{#1}\ignorespaces}
    
\begin{document}

\setbox\tempbox=\vbox{\section{Test Section 2}}% measure size of section title
\usebox\tempbox

\rotatebox{90}{\begin{minipage}[c][\textwidth][c]{\dimexpr \textheight-\ht\tempbox-\dp\tempbox-\baselineskip-\parskip}
\setcaptype{table}\centering
\begin{threeparttable}
\caption{Another rotated table}\label{tab:test2}
\begin{tabular}{lll}
column 1a & column 2a & column 3a \\
column 1b & column 2b & column 3b \\
column 1c & column 2c & column 3c \\
\end{tabular}
\begin{tablenotes}
\item The first note.
\end{tablenotes}
\end{threeparttable}
\end{minipage}}

\end{document}

相关内容