我是 Latex 新手,使用pdflscape
包,我尝试创建一个逆时针横向页面(页眉在左侧,页脚在右侧)。此页面\section
的标题为。
我已经设法counterlandscape
使用etoolbox
包和创建了一个新环境\patchcmd
。
但结果并不如我所料。该部分位于页面的右下角,而不是左上角。
使用graphicx
或rotate
包,我无法改变它。
以下是一个示例: https://www.overleaf.com/read/ctzpwwzprtsk#b3977b
\documentclass[a4paper, 11pt]{article}
\usepackage{graphicx}
\usepackage{pdflscape}
% Make landscape counter clockwise (header on left, footer on right)
\usepackage{etoolbox}
\makeatletter
\let\counterlandscape=\landscape
\let\endcounterlandscape=\endlandscape
\patchcmd{\counterlandscape}{\PLS@Rotate{90}}{\PLS@Rotate{-90}}{}{}
\makeatother
\begin{document}
\begin{counterlandscape}
\section{Titre 1}
\end{counterlandscape}
\end{document}
我不知道我的方法是否好或者是否有更好的方法。
您知道如何实现吗?我的目标是创建一个横向页面,页眉在左侧,页脚在右侧,部分在左上角。
任何帮助都将不胜感激。
谢谢
米克
答案1
事实证明,这主要是一个需要更仔细地思考什么被什么旋转的问题。
我们需要定义 not counterclockwiselandscape
(or, even, anticlockwiselandscape
) but clockwiselandscape
。因此,我们希望 PDF 查看器能够旋转页面逆时针而不是像通常那样顺时针旋转。我试图弄清楚如何使用,但放弃了。使用的选项并修补其环境的副本pdflscape
要简单得多,而没有 的复杂性。lscape
pdftex
landscape
pdflscape
\usepackage[pdftex]{lscape}
\usepackage{etoolbox}
\makeatletter
\NewDocumentEnvironment{clockwiselandscape} {}
{%
\def\LS@rot{\setbox\@outputbox\vbox{\hbox{\rotatebox{-90}{\box\@outputbox}}}}%
lscape
在环境之外定义它landscape
,但我们在这里重新定义它,以便常规landscape
环境不受影响。出于某些原因,我不明白有些东西朝一个方向旋转,而有些则朝另一个方向旋转。-90
实际上旋转顺时针在这种情况下,默认90
旋转方向为逆时针。
\@clockwiselandscape
}{%
\end@clockwiselandscape
}
\let\@clockwiselandscape\landscape
\@clockwiselandscape
是一个简单的副本\landscape
,不需要修补。
\let\end@clockwiselandscape\endlandscape
\patchcmd \end@clockwiselandscape {\pdfpageattr{/Rotate 90}}{\pdfpageattr{/Rotate -90}}{\typeout{Patched clockwise landscape.}}{\typeout{Failed to patch clockwise landscape!}}
此补丁意味着 PDF 查看器将被指示逆时针旋转页面,而不是顺时针旋转。此处,-90
逆时针旋转,而原始页面90
顺时针旋转。
\makeatother
然后我们可以将clockwiselandscape
环境用作我们的内容。
\begin{clockwiselandscape}
\section{Title}
\includegraphics{example-image}
\end{clockwiselandscape}
完整代码:
\documentclass{article}
% ateb https://tex.stackexchange.com/a/700004/ i gwestiwn Mikk: https://tex.stackexchange.com/q/699688/
\usepackage[pdftex]{lscape}
\usepackage{etoolbox}
\makeatletter
\NewDocumentEnvironment{clockwiselandscape} {}
{%
\def\LS@rot{\setbox\@outputbox\vbox{\hbox{\rotatebox{-90}{\box\@outputbox}}}}%
\@clockwiselandscape
}{%
\end@clockwiselandscape
}
\let\@clockwiselandscape\landscape
\let\end@clockwiselandscape\endlandscape
\patchcmd \end@clockwiselandscape {\pdfpageattr{/Rotate 90}}{\pdfpageattr{/Rotate -90}}{\typeout{Patched clockwise landscape.}}{\typeout{Failed to patch clockwise landscape!}}
\makeatother
\begin{document}
No rotation.
\begin{clockwiselandscape}
\section{Title}
\includegraphics{example-image}
\end{clockwiselandscape}
This shouldn't be rotated.
\end{document}
周围的页面是为了确保效果被环境适当地包含。
答案2
感谢@cfr 的出色和完整的回复。也感谢你花时间解决我的问题。
我尝试使用您的解决方案(使用带有 pdftex 选项的 lscape 包),这似乎是更好的解决方案,但不幸的是,该包不适用于我的模板。我花了一些时间去了解原因,但没有找到原因,于是放弃了。
我终于找到了一个解决方案(不是最漂亮的,但它有效)。我现在修补了 lscape 和 pdflscape 命令:
\usepackage{etoolbox}
\makeatletter
% Invert lscape rotation
\patchcmd{\LS@rot}{90}{-90}{}{}
% Make landscape counter clockwise (header on left, footer on right)
\patchcmd{\landscape}{\PLS@Rotate{90}}{\PLS@Rotate{-90}}{}{}
\makeatother
这使得我的“花式”页脚在页面中的位置太高,所以我不得不改变几何形状来修复它:
\geometry{
...
top=1.2in,
bottom=1in
...
}
目前,此解决方案满足我的需求,但我想了解为什么带有 pdftex 选项的 lscape 包不适用于我的模板。也许很快就会有一些更新...
再次感谢您。
米克