下面的代码
\documentclass{article}
\usepackage{tikz}
\usepackage[paperheight=297mm,paperwidth=210mm,margin=0mm,showframe]{geometry}
\begin{document}
\noindent
\begin{tikzpicture}[remember picture,overlay]
\draw[help lines] (current page.south west) grid (current page.north east);
\draw[help lines] (current page.south west) -- (current page.north east);
\end{tikzpicture}
\end{document}
生成的网格似乎与页面边框不同步,即使基于--
对角线路径,这两个点似乎是正确的,如下所示?
来自文档我希望网格准确地从这两个点开始和结束。
显然,我对这个问题的回答不够清楚。我并不为无法用整数个方格填满整个页面而感到困惑。我感到困惑的是,为什么方格不从我开始网格的位置开始(那么在其他 3 个角,我可以在一个方向、另一个方向或两个方向上放置少于一个方格)
答案1
TikZ 的操作grid
基于下层 pgf 层和命令\pgfpathgrid
。其文档102.8 网格路径操作更详细地解释了网格的构造。
\pgfpathgrid[⟨options⟩]{⟨first corner⟩}{⟨second corner⟩}
从概念上讲,原点是网格的一部分,网格被裁剪到由 ⟨first corner⟩ 和 ⟨second corner⟩ 指定的矩形内。但是,不会发生裁剪(此命令只会将部分内容添加到当前路径),并且会计算线条进入和离开“裁剪区域”的点,并使用这些点将简单线条添加到当前路径。
这意味着网格交点的坐标是步进设置的倍数。x 和 y 方向的默认值均为 1 厘米。
A4纸的尺寸为21厘米×29.7厘米。高度为不是1厘米的倍数。因此,不可能同时将左下角和右上角作为网格交点。选项:
- 改变垂直方向的步长,使高度成为步长的倍数。
- 或者决定哪个角与网格交叉点相匹配。
另一个问题是你不知道在哪里节点的原点(current page)
是。但这可以通过变换来确保。以下代码将原点(用大红点标记)放在页面的左下角:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage[paperheight=297mm,paperwidth=210mm,margin=0mm,showframe]{geometry}
\begin{document}
\noindent
\begin{tikzpicture}[remember picture,overlay]
\draw[thick, shift=(current page.south west)]
(0, 0) grid ($(current page.north east) - (current page.south west)$);
% Visualize origin for grid
\fill[red] (current page.south west) circle[radius=10mm];
% Diagonal
\draw[very thick, blue] (current page.south west) -- (current page.north east);
\end{tikzpicture}
\end{document}