sidewaystable
是否可以让包含由包的或sidewaysfigure
环境生成的侧向表格或图形的浮动页面rotating
在 PDF 输出中自动旋转?
该问题与 3 个现有问题相关:
我已经尝试过那里给出的答案,基于\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{广告}