我得到了一个可以正常渲染的 Latex 文档,部分内容使用包turn
中的环境进行了旋转rotate
。一切正常。
例外:我知道可以以另一种方向显示 PDF 中的单个页面。然后文档查看器在查看时会旋转此页面。这将有助于我的文档的读者阅读旋转后的文本。
这怎么可能?也许以某种方式使用pdfpageattr
命令?
再说一遍:我不想旋转内容,我只是想告诉 PDF 阅读器在显示时应该旋转页面。
答案1
您确实可以使用该pdfpageattr
命令。您可以按如下方式执行操作:
\documentclass{article}
\begin{document}
text
\pagebreak[4]
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}
text
\end{document}
这将使第二页旋转 90 度。如何获得不同的旋转效果应该很明显。
答案2
接受的答案对我不起作用,因为它旋转了 PDF 中的所有页面,而不是单个页面。我设法使用包让它工作pdflscape
,如建议的那样这个答案:
\usepackage{pdflscape}
...
\begin{landscape}
...
\end{landscape}
我需要这个来显示图形。请注意,在环境中时landscape
,必须使用\linewidth
图形的宽度,\textwidth
否则将不起作用。
答案3
对可接受答案的一个稍微完整一点的版本是创建一个将页面转回纵向的环境:
\newenvironment{rotatepage}%
{\clearpage\pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}}%
{\clearpage\pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}}%
进而\begin{rotatepage} <the content on this page is turned 90°> \end{rotatepage}
。
但我们可以进一步扩展这一点。我们可能想要使用软件包提供的功能rotating
。我们可能会使用对奇数页和偶数页使用不同边距的文档。那么,一个分别将页面旋转 90° 或 270° 的自动化解决方案就很好了。使用 KOMA 脚本的示例:
\documentclass[twoside]{scrreprt}
\usepackage{scrextend,rotating}
\makeatletter
\newenvironment{rotatepage}
{%
\if@twoside%
\ifthispageodd{\pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}}{%
\pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 270}}%
\else%
\pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}%
\fi%
}%
{\pagebreak[4]\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}}%
\makeatother
进而\begin{rotatepage}\begin{sidewaystable} <the content on this page is turned 90°> \end{sidewaystable}\end{rotatepage}
最后,我们可以结合rotatepage
和 包提供的环境rotating
。如果我们想自动翻页使用sidewaytable
,我们可以将rotatepage
环境挂接到sidewaytable
中etoolbox
。除了上面的代码,我们还需要:
\BeforeBeginEnvironment{sidewaystable}{\begin{rotatepage}}
\AfterEndEnvironment{sidewaystable}{\end{rotatepage}}
当然,也可以对sidewaysfigure
等等做出类似的调整。
答案4
在评论中Roelof Spijker 的回答Martin Scharrer 请求使用afterpage 包将以下页面再次旋转回去:
\documentclass[twoside]{report}
\usepackage{afterpage}
\begin{document}
text
\makeatletter%
\if@twoside%
\cleardoublepage%
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}%
\afterpage{\afterpage{\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}}}%
\else%
\clearpage%
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}%
\afterpage{\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}}%
\fi%
\makeatother%
text
\newpage
text
\newpage
text
\end{document}
创建环境(Jörg 的回答) 似乎是更好的解决方案,因此这个答案只是为了说明目的(但在其他情况下可能会有帮助)。