pdflscape 逆时针横向带剖面

pdflscape 逆时针横向带剖面

我是 Latex 新手,使用pdflscape包,我尝试创建一个逆时针横向页面(页眉在左侧,页脚在右侧)。此页面\section的标题为。

我已经设法counterlandscape使用etoolbox包和创建了一个新环境\patchcmd

但结果并不如我所料。该部分位于页面的右下角,而不是左上角。

使用graphicxrotate包,我无法改变它。

以下是一个示例: 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要简单得多,而没有 的复杂性。lscapepdftexlandscapepdflscape

\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 包不适用于我的模板。也许很快就会有一些更新...

再次感谢您。

米克

相关内容