tikz 中的“缩短”和边界框;可能存在错误?

tikz 中的“缩短”和边界框;可能存在错误?

在锻炼时这个答案,我发现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}

在此处输入图片描述

相关内容