如何防止 \Sidewaystable 从新页面开始

如何防止 \Sidewaystable 从新页面开始

这篇文章是对旋转表格图表和非表格标题以适合页面

考虑以下代码:

\documentclass{book}
\textheight 9.75in \textwidth 5.75in
\usepackage{xcolor}
\usepackage{rotating}
\usepackage{pgfpages}
\pgfpagesuselayout{2 on 1}

\begin{document}
\LARGE
\begin{center}
\textbf{\textcolor{red}{THIS IS THE TABLE INTRODUCTION}}
\end{center}

\begin{sidewaystable}
\hfill {\Large{\textcolor{red}{\textbf{{Title and Chart to be Rotated -90$^\circ$}}}}\hfill}
\\[15pt]
\centering
\resizebox{.5\linewidth}{!}{%
\begin{tabular}{l*{12}{c} | l}
Victories & {} & {} & {} & {} & {} & {} & {} & {} & {} & {} & {} &
{} & Ties \\
{} & Nov & Dec & Jan & Feb & Mar & Apr & May & Jun & Jul & Aug &
Sep & Oct & {} \\
{} & XI & XII & I & II & III & IV & V & VI & VII & VIII & IX & X &
{} \\
Item 1 & {} & {} & {} & {} & {} & {} & {} & {} & {} &
{} & {} & {} & {} \\
Item 2 & {} & {} & {} & 9 & {} & {} & {} & 16 & {} & {} & {}
& {} & {} \\
Item 3 & {} & {} & {} & 7 & {} & {} & {} & {} & 16 & {} &
{} & {} & {} \\
Item 4 & {} & 24 & {} & 10 & {} & {} & {} & 15 & {} & {} &
{} & {} & {} \\
Item 5 & {} & {} & {} & {} & {} & {} & {} & {} & {} & {} & {} & {} &
{} \\
Item 6 & 8 & {} & 73 & 35 & 35 & {} & {} & {} & {} & {}
& {} & {} & 1 \\
Item 7 & {} & {} & 11 & 3 & 6 & 5 & {} & {} & {} & {} & {} &
{} & 2 \\
Item 8 & 43 & 56 & 3 & 1 & 10 & 55 & {} & {} & {} & {} & {} &
{} & {} \\
Item 9 & 11 & 45 & 37 & 28 & 37 & 20 & {} & {} & {} & {} & 17 &
{} & {} \\
\end{tabular}
}
\end{sidewaystable}
\end{document}

(不幸的是)它产生了两页的输出:

在此处输入图片描述

我想指出的是,我故意制作了一个非常非常小的表格,以说明第一页有足够的空间来容纳它;然而,似乎某种默认设置导致它从下一页开始。

问题:如何在同一页的介绍性标题下方立即显示我的侧向表格?备注:即使我在不​​调整表格大小的情况下运行代码,表格似乎也应该足够小以很好地适应上一页。

谢谢。

答案1

根据OPs 评论,我得出了我的评论suggestion

如上所述Zarko,使用\begin{sideways}...\end{sideways}\begin{rotate}{90}...\end{rotate}代替\begin{sidewaystable}...\end{sidewaystable},则为MWE

\usepackage{rotating}
\begin{document}
\begin{rotate}{90}% or whatever you like
...
\end{rotate}
\end{document}

答案2

环境sidewaystable会旋转一个宽度为的迷你页面,\textheight以便它始终位于一页上。从风格上讲,除非绝对必要,否则应避免将表格横向放置,因此尝试执行您想要的操作很可能是一个坏主意。

所以问题是,既然这是一个坏主意,我们怎样才能让你想要的东西发挥作用,你肯定应该不是做这个?

有两种方法。一种是利用tabular水平模式(通常不受欢迎)的事实(这就是为什么它在很多情况下会做出奇怪的事情)。这意味着如果我们写:

\begin{table}
 \begin{sideways}
   \begin{tabular}{...}
     ...
   \end{tabular}
 \end{sideways}
\end{table}

我们得到了恰好占据封闭的 水平空间的东西tabular。但请注意,如果你将环境之外的任何东西放在环境tabular之内sideways,你将得到意想不到的和不理想的结果。

因此,如果您想让标题与表格一起旋转,另一种方法是定义一个新环境,我将其称为sidewaystable'¹,它接受一个强制参数,即所需的高度sidewaystable

\NewDocumentEnvironment{sidewaystable'}{m} 
   {\setlength{\textheight}{#1}\begin{sidewaystable}} % ❶
   {\end{sidewaystable}}

这里的神奇之处在于,我们会对 撒谎sidewaystable\textheight以便当它产生输出时,它会使旋转的盒子具有较小的高度。

但我们还没完。想必你想将侧边表格打印在页面底部。默认情况下,LaTeX 不会将较大的浮动元素放在页面底部。因此,我们需要调整其他几个参数来实现这一点。具体来说,你需要执行

\RenewExpandableDocumentCommand{\bottomfraction}{.85}

页面底部的浮动元素最多可占据页面的 85%。您可能需要根据需要进行调整。在选择高度时还要注意,sidewaystable'除了保持其小于.9\textheight(或您选择的任何分数)之外,您还需要在文本和之间留出空间\textfloatsep(默认情况下为 16-22pt,理想大小为 20pt)sidewaystable

\bottomfraction如果你设置了大于,.76你还需要降低 LaTeX 将包含浮动的最小空间量

\RenewExpandableDocumentComand{\textfraction}{.1}

的默认值\textfraction.2,但您会注意到我正在设置\textfraction + \bottomfraction < 1。这是有意的,因为\textfloatsep它是文本框和浮动框的补充,您需要留出一些空间。


  1. 是的,您可以将其放入'环境名称中。事实上,您几乎可以将任何内容放入环境名称中。

相关内容