我试图了解接近页边距时的 tikz 和坐标。
我有以下 MWE,它是一张 1cm 方格纸,边距为 1cm,A4 页面。没有段落缩进。
我期待一页网格。
我得到的却是一份两页的文档,网格在第二页,好像第一页放不下一样。而且两页的页码都被压低了,以至于只显示一半的数字。
使得图片的线宽是否比所规定的尺寸稍大一些?
我该如何修复这个问题?出了什么问题?
\documentclass{article}
\usepackage[a4paper, margin=1cm] {geometry}
\setlength{\parindent}{0ex}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[line width=.4pt,draw=black] (0,0) rectangle(\textwidth,\textheight);
\end{tikzpicture}
\end{document}
答案1
您的矩形太大\linewidth
,因此它被推到下一页。尝试
\documentclass{article}
\usepackage[a4paper, margin=1cm] {geometry}
\setlength{\parindent}{0ex}
\usepackage{tikz}
\usepackage{calc}
\begin{document}
\begin{tikzpicture}
\draw[line width=.4pt,draw=black] (0,0) rectangle(\textwidth-0.4pt,\textheight-0.4pt);
\end{tikzpicture}
\end{document}
附录——绘制网格:
通过函数绘制网格grid
比较棘手:如果文本高度比网格高出一小段,则在网格顶部绘制最后一行(到目前为止我还没有弄清楚规则,如何确定这个长度):
\documentclass{article}
\usepackage[a4paper, width=19cm, height=270.14mm] {geometry}
\setlength{\parindent}{0ex}
\usepackage{tikz}
\usepackage{calc}
\begin{document}
\begin{tikzpicture}
\draw[line width=.4pt] (0,0) grid(\textwidth,\textheight-0.4pt);
\draw[line width=.2pt,step=1mm,draw=gray] (0,0) grid(\textwidth,\textheight-0.4pt);
\end{tikzpicture}
\end{document}
在循环中绘制网格的问题较少,但在这种情况下你应该提前计算网格中的线数[这应该不是问题:-)]:
\documentclass{article}
\usepackage[a4paper, margin=1cm] {geometry}
\setlength{\parindent}{0ex}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,...,18}{\draw[teal] (\i,0) -- + (0,\textheight);}
\foreach \i in {1,...,26}{\draw[teal] (0,\i) -- ++ (\textwidth,0);}
\draw[line width=.4pt,draw=black] (0,0) rectangle(\textwidth-0.4pt,\textheight-0.4pt);
\end{tikzpicture}
\end{document}
答案2
页码与图片无关。页码写在文本块下方,1 厘米太窄,因此只能显示一半。
正如您所猜测的,矩形的线宽使得图片对于页面来说太高,因此被绘制在下一页上。如果您想在两点之间画一条线,线宽会扩展到该线的两侧。在下面的例子中,可以看到第一个 3cm x 3cm 大小的黑色矩形扩展到网格线之外。在第二个绿色矩形中,额外的线宽得到了补偿。
\documentclass{article}
\usepackage[a4paper, margin=1cm] {geometry}
\setlength{\parindent}{0ex}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[gray, thin](0,0) grid (10,10);
\draw[line width=10pt] (2,2) rectangle (5,5);
\draw[line width=10pt,green] (6cm+5pt,6cm+5pt) rectangle (9cm-5pt,9cm-5pt);
\end{tikzpicture}
\end{document}
答案3
如果打印线宽不重要,您可以随时将clip
矩形调整为所需尺寸,这样它就能适合一页。如果线宽很重要,您仍然可以裁剪它,但要使用双倍线宽。
举个夸张的例子:
\documentclass{article}
\usepackage[a4paper, margin=1cm] {geometry}
\setlength{\parindent}{0ex}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\clip (0,0) rectangle (\textwidth,\textheight);
\draw[line width=1cm,draw=black] (0,0) rectangle(\textwidth,\textheight);
\end{tikzpicture}
\begin{tikzpicture}
\clip (0,0) rectangle (\textwidth,\textheight);
\draw[line width=2cm,draw=black] (0,0) rectangle(\textwidth,\textheight);
\end{tikzpicture}
\end{document}
更新
如果希望结果是网格位于页面的某个位置,则可以使用TiKZ
绝对定位系统。例如,编译两次以下代码:
\documentclass[a4paper]{article}
\usepackage[margin=1cm] {geometry}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[overlay, remember picture]
\begin{scope}[shift={([shift={(1cm,-1cm)}]current page.north west)}]
\draw (0,0) grid ++(\textwidth,-\textheight);
\end{scope}
\end{tikzpicture}
\end{document}
其结果将是:
对于更复杂的网格,你可以看看如何在 TikZ 中制作一个完美适合我的页面的页面网格以进行测量?