PDF 输出中包含横向表格或图形的页面的自动旋转

PDF 输出中包含横向表格或图形的页面的自动旋转

sidewaystable是否可以让包含由包的或sidewaysfigure环境生成的侧向表格或图形的浮动页面rotating在 PDF 输出中自动旋转?

该问题与 3 个现有问题相关:

查看时旋转单个 PDF 页面

pdf 查看器中旋转页面上的浮动横向表格

newpage 和 pdfpageattr 的问题

我已经尝试过那里给出的答案,基于\pdfpageattr\afterpage来自afterpage包,有或没有\BeforeBeginEnvironment\AfterEndEnvironment来自etools包,甚至直接修改定义sidewaystable,比如

\makeatletter
\renewenvironment{sidewaystable}
  {\@rotfloat{table}%
   \global\pdfpageattr\expandafter{/Rotate 90}}
  {\afterpage{\global\pdfpageattr\expandafter{/Rotate 0}}%
   \end@rotfloat}
\makeatother

事情总是像这个截图中的那样:

显示多个旋转页面的屏幕截图

sidewaystable也就是说,不仅旋转实际横向表格的页面,而且旋转 LaTeX 源中出现环境的页面。

当然,在 PDF 输出中手动旋转页面总是可行的,但如果能sidewaystable自动旋转页面就更好了。我正在寻找一种解决方案,它只旋转横向表格或图形浮动到的 PDF 页面,而不会以任何方式改变格式(即不使用\clearpage\pagebreak环境landscape)。

答案1

这取决于引擎的易用性。对于使用 dvi 的引擎,您可以使用\special,然后在 shipout 时执行。luatex\latelua也有 可以使用。对于 pdflatex,您必须使用 \label/ref 系统来跟踪正确的页面。可能的实现在这里https://tex.stackexchange.com/a/472608/2388

\开始{广告}

使用目前作为 testphase 包提供的 LaTeX 的新 pdfmanagement,您可以做到这一点(代码更新于 2023-10)(根据引擎的不同,它将需要两次编译):

\DocumentMetadata{}

\documentclass{article}
\usepackage{kantlipsum}
\usepackage{rotating}

\ExplSyntaxOn
\AddToHook{env/sidewaystable/end}{\pdfmanagement_add:nnn{ThisPage}{Rotate}{90}}
\ExplSyntaxOff
\begin{document}
\kant[1]

\begin{table}[t]
\centering\fbox{xxxxxx}\caption{Table}
\end{table}

\kant[1-5]

\begin{sidewaystable}

\begin{tabular}{p{0.8\paperwidth}}
\hline
\kant[1-2]\\
\hline
\end{tabular}

\caption{large sideways table}
\end{sidewaystable}

\kant

\end{document} 

请注意,它并不与所有内容兼容,请检查 pdfmanagement-testphase 文档。

\end{广告}

相关内容