是否可以为 TikZ 图片定义一个边界框,即使该边界框外可能定义了一些东西,但边界框外什么也不会绘制?
在我的特殊情况下,我想绘制所有P
可以写成P = a*B_1 + b*B_2
两个基向量B_1
和B_2
整数的点a
,b
这些点位于某个指定的框内(例如(-10, -10) rectangle (10, 10)
)。
答案1
要排除绘图的某些部分,clip
可以使用命令/选项。让我们在 4cm x 4cm 的框内绘制随机黑点:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[point/.style={fill,inner sep=0pt, minimum size=2pt, circle}]
\node[draw,minimum size=4cm+2pt,inner sep=0pt](bounding box) at (2,2) {};
\foreach \i in {1,...,100}{\node[point] (p\i) at ({4*rnd},{4*rnd}) {};};
\end{tikzpicture}
\end{document}
如果我们现在使用该\clip
命令,则该命令之后的所有内容都将被从绘图中剪掉。除非 ping\clip
是在scope
,则只有范围内的内容才会被剪裁。为了展示这些效果,让我们继续绘图,在之前定义的黑点上方添加红点,并在中间添加一个正方形(请注意,红点在范围内,正方形在范围之外)。
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[point/.style={fill,inner sep=0pt, minimum size=2pt, circle}]
%\clip (2,0) rectangle (4,4); %Clips everything including the graph bounding box
\node[draw,minimum size=4cm+2pt,inner sep=0pt](bounding box) at (2,2) {};
%\clip (bounding box.north) rectangle (bounding box.south east); %Clips everything after it
\foreach \i in {1,...,100}{\node[point] (p\i) at ({4*rnd},{4*rnd}) {};};
\begin{scope}
%\clip (bounding box.north) rectangle (bounding box.south east); %Clips only the scope
\foreach \i in {1,...,100} \node[point,red] at (p\i) {};
\end{scope}
\node[draw,fill=white] at (bounding box.center){};
\end{tikzpicture}
\end{document}
第一个\clip
,剪切所有内容,包括边界框,留下一半的绘图尺寸(2cm x 2cm):
第二个\clip
,剪辑一切但在它之前定义的节点bounding box
,使图形大小为 4cm x 4cm,但只有一半填充了内容:
最后,第三部分\clip
只剪辑了scope
(红点),使正方形保持完整(即使它是在之后定义的\clip
)并且一半的黑点隐藏在红点下面:
所有这些意味着,如果你想要剪裁整个绘图,\clip
那么首先要做的就是在绘图中处理。如果你想要剪裁某个点之后的所有\clip
内容。如果你只想剪裁绘图中间的某些内容,那么请将这些东西放在scope
。