![将 Tikz 设置为页面大小以进行分层](https://linux22.com/image/252397/%E5%B0%86%20Tikz%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%A1%B5%E9%9D%A2%E5%A4%A7%E5%B0%8F%E4%BB%A5%E8%BF%9B%E8%A1%8C%E5%88%86%E5%B1%82.png)
我想在我的文档中创建图层/覆盖(内联,可能依赖于变量\宏,例如页码/章节或用户定义的内容)。
我如何创建与页面大小相同的 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}