在锻炼时这个答案,我发现shorten
选项不计入计算的边界框tikzpicture
。例如:
\documentclass{standalone}
\usepackage[]{tikz}
\begin{document}
\begin{tikzpicture}
\draw[shorten >=-3cm, shorten <=-3cm] (0,0) -- (1,1);
\draw (0,0) circle (1pt);
\draw (1,1) circle (1pt);
\end{tikzpicture}
\end{document}
手册才不是请具体说明是否应该如此。
问题:错误还是功能?
答案1
不管怎样,这目前是一个功能。
来自第 12.2.1 节pgfmanual
:
在环境结束时,
pgf
尝试对图形边界框的大小做出一个很好的猜测,然后调整图片框的大小,使该框具有此大小。为了“做出猜测”,每次pgf
遇到坐标时,它都会更新边界框的大小,使其包含所有这些坐标。这通常会给出边界框的良好近似值,但并不总是准确的。
它继续讨论某些情况不是准确的:
首先,对角线的线条粗细没有得到正确考虑。其次,曲线的控制点通常位于曲线的“外部”,导致边界框过大。
虽然这些特定的点在这里不适用,但第二点表明,控制点被视为边界框计算的坐标,而不管实际描边路径的形状。
同样,shorten
按键会修改路径的描边,而不是定义路径的坐标。如果积极的 shorten
值,边界框与路径完全绘制在两个端点坐标之间时相同。然后使用消极的 shorten
值,边界框也与仅在两个端点坐标之间绘制路径相同。
以下示例说明了此行为。计算出的边界框对于每个都是相同的tikzpicture
,因为它仅取决于用于定义路径的坐标,而不是实际绘制方式:
\documentclass[tikz,border=0.2cm]{standalone}
\newcommand{\boxit}{\draw (current bounding box.south west) rectangle (current bounding box.north east)}
\begin{document}
\begin{tikzpicture}
\draw[shorten >=-0.2cm, shorten <=-0.2cm] (0,0) -- (1,1);
\boxit;
\end{tikzpicture}
\begin{tikzpicture}
\draw[shorten >=0.2cm, shorten <=0.2cm] (0,0) -- (1,1);
\boxit;
\end{tikzpicture}
\end{document}