pdflscape 和 tikzpagenodes 问题

pdflscape 和 tikzpagenodes 问题

tikzpagenodes我在让包与包一起工作时遇到了问题pdflscape。我想访问节点(current page text area)(current page marginpar area)并将页面旋转为横向,但结果让我感到惊讶。

我的问题有点类似于这个帖子,但对于我来说该(current page)节点按预期工作。

这是一个 MWE,我尝试在开始旋转之前和之后绘制节点的轮廓。我正在使用pdflatexMiKTeX 2.9 中的 lualatex 进行编译(实际上我可能需要lualatex出于内存原因使用它)。

\documentclass{article}

\usepackage{pdflscape}
\usepackage{tikzpagenodes}
\usepackage{fancyhdr}
\usepackage{blindtext}

\fancypagestyle{sideways}{
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
    \fancyhf{}
    \fancyhead{\tikz [remember picture,overlay] \draw [red] (current page text area.south west) rectangle (current page text area.north east);}
}

\begin{document}

\begin{landscape}
\thispagestyle{sideways}
\blindtext
\end{landscape}

\clearpage

\thispagestyle{sideways}
\begin{landscape}
\blindtext
\end{landscape}

\end{document}

我看到的输出是文本放置正确,而 tikz 节点太小:

结果

我将其放在 fancyheading 里面的原因\tikz\draw是我想用它在横向页面上放置页眉和页脚(是的,我知道我可能不应该......)。

我也观察到了这种行为的“逆”情况,即(current page text area)放置正确,并且文本占据了节点现在勾勒出的区域(current page text area),但我无法在相当小的 MWE 中重现这种行为。

答案1

我想我现在有点了解这件事了。

包中有一个怪癖lscape/ pdflscape:它们会改变\textheight,但不会\textwidth。这是一个设计选择显然如此。然而,它混淆了tikzpagenodes使用两种长度来定义其节点的。

我有一个解决方案可以解决我的特定问题:landscape通过重置\textheight为原始的、未旋转的值来重新定义环境。我检测不到任何副作用,但我暂时不接受这个答案,以防别人发现,或者也许可以提供更令人满意的解决方案。这个问题到目前为止还没有引起任何兴趣。

这是我的(现在正在工作的) MWE:

\documentclass{article}

\usepackage{lscape}
\usepackage{tikzpagenodes}
\usepackage{fancyhdr}
\usepackage{blindtext}

\fancypagestyle{sideways}{
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
    \fancyhf{}
    \fancyhead{
        \begin{tikzpicture}[remember picture,overlay]
            \draw [red] (current page text area.south west) rectangle 
                (current page text area.north east);
            \draw [green] (current page header area.south west) rectangle 
                (current page header area.north east);
            \draw [blue] (current page footer area.south west) rectangle 
                (current page footer area.north east);
            \draw [black] (current page marginpar area.south west) rectangle 
                (current page marginpar area.north east);
        \end{tikzpicture}           
    }
}

% This fixes the \textheight problem
\newlength{\oldtextheight}
\let\oldlandscape\landscape
\def\landscape{\setlength{\oldtextheight}{\textheight}\oldlandscape\setlength{\textheight}{\oldtextheight}}

\begin{document}
\thispagestyle{sideways}
\blindtext

{\huge\bf Text height = \the\textheight}

{\huge\bf Text width = \the\textwidth}


\begin{landscape}
\thispagestyle{sideways}
\blindtext

{\huge\bf Text height = \the\textheight}

{\huge\bf Text width = \the\textwidth}

\end{landscape}


\end{document}

在此处输入图片描述

相关内容