将 Tikz 设置为页面大小以进行分层

将 Tikz 设置为页面大小以进行分层

我想在我的文档中创建图层/覆盖(内联,可能依赖于变量\宏,例如页码/章节或用户定义的内容)。

我如何创建与页面大小相同的 TikZ 图像(无需对值进行硬编码),并能够轻松锚定到纸张的边缘(我认为这已经可以通过 TikZ 实现)?

基本上,我希望我的 TikZ 图片的画布是页面的画布,以 (0,0) 为左上角,这样我就可以在页面上进行正常的 TikZ 绘图。

显然,它应该可以轻松地与双面文档配合使用,并且不会干扰正常的页面布局。

谢谢

答案1

您可以将包\AddToShipoutPictureBG中的命令eso-pic与 一起使用\put(0,0){ ...},以将您的 放置tikzpicture在页面的左上角。通常,为了将 TikZ 对象相对于页面定位,会将一个命令\tikz[remember picture, overlay](current page)节点一起使用,但这需要两次编译运行。这种方法只需要一次。

如果您随后设置x=\paperwidth, y=-\paperheight,则坐标(1,1)将为右下角。

tikzpicture然后,您可以像平常一样定位对象:

\node at (0,1) [anchor=south west, scale=4] {Lower Left};
\node at (1,1) [anchor=south east, scale=4] {Lower Right};
\node at (0,0) [anchor=north west, scale=4] {Upper Left};
\node at (1,0) [anchor=north east, scale=4] {Upper Right};
%       \fill [ultra thick, orange] (0.5,0.5) circle [radius=2cm];
\draw (0,0) -- (1,1);

将产生

\documentclass{article}

\usepackage{tikz}
\usepackage{longtable}
\usepackage{afterpage}
\usepackage{lipsum}
\usepackage[texcoord]{eso-pic}

\begin{document}\lipsum[3]
\AddToShipoutPictureBG*{%
    \put(0,0){%
        \tikz [
            overlay,
            x=\paperwidth,
            y=-\paperheight] {
                \node at (0,1) [anchor=south west, scale=4] {Lower Left};
                \node at (1,1) [anchor=south east, scale=4] {Lower Right};
                \node at (0,0) [anchor=north west, scale=4] {Upper Left};
                \node at (1,0) [anchor=north east, scale=4] {Upper Right};
%
                \fill [ultra thick, orange] (0.5,0.5) circle [radius=2cm];
                \draw (0,0) -- (1,1);
        }
    }
}
\end{document}

相关内容