
У меня есть таблица, которую нужно повернуть, учитывая ее размер. Более того, в моем документе это первая таблица в Приложении и, следовательно, она должна следовать за заголовком раздела. 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}
но здесь это не работает). Таблица как таковая расположена вертикально и горизонтально, как мне бы хотелось.
В случае с rotatebox мне удается разместить заголовок над таблицей, а примечания к ней — под ней, но что бы я ни делал, таблица остается внизу страницы (хотя она должна быть выровнена по центру по горизонтали и следовать за заголовком раздела по вертикали).
Буду очень признателен за любые подсказки. Спасибо.
решение1
Использование capPos=top
вместо capPos=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}