tikzpagenodes
我在让包与包一起工作时遇到了问题pdflscape
。我想访问节点(current page text area)
,(current page marginpar area)
并将页面旋转为横向,但结果让我感到惊讶。
我的问题有点类似于这个帖子,但对于我来说该(current page)
节点按预期工作。
这是一个 MWE,我尝试在开始旋转之前和之后绘制节点的轮廓。我正在使用pdflatex
MiKTeX 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}