当装饰列表的总长度超过输入路径的长度时,不会删除任何装饰(可能是一个错误)

当装饰列表的总长度超过输入路径的长度时,不会删除任何装饰(可能是一个错误)

在我将其作为错误提交之前,我只想让 tex.stackexchange 的好心人来运行它。

考虑以下 LaTeX 手稿,其中有一张 2 厘米长的水平线的 pgf 图片,该图片由两个内置的 pgf 装饰:curveto和 进行装饰zigzag

\documentclass{standalone}
\usepackage{pgf}
\usepgfmodule{decorations}
\usepgflibrary{decorations.pathmorphing}
\begin{document}
\begin{pgfpicture}
  \begin{pgfdecoration}{{curveto}{1cm},{zigzag}{2cm}}
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathlineto{\pgfpoint{2cm}{0cm}}
  \end{pgfdecoration}
  \pgfusepath{stroke}
  \end{pgfpicture}
\end{document}

生成的图片(不按​​比例)

用两个 pgf 装饰修饰的一条线。

我期望没有锯齿状的装饰,即我期望下面的图片(与之前的比例相同)。

无曲折。

原因是 TikZ 和 PGF 手册 3.0.1a 版第 1002-1003 页中的以下段落描述了环境的含义

\begin{pgfdecoration}{{<decoration>}{<length>},{<decoration>}{<length>}}
   <environment contents>
\end{pgfdecoration}

(我强调了重要部分。)

输入路径被划分为以下输入路径:第一个输入路径由 中指定的路径的前几行组成, 〈environment contents〉直到〈length的第一个元素的〈decoration list〉。如果在行的中间达到此长度,则行在此精确位置断开。然后,第二个输入路径具有〈length〉中第二个元素的 ,并由中〈decoration list〉构成路径后续部分的行组成 ,依此类推。〈length〉〈environment contents〉

如果 中的长度〈decoration list〉加起来不等于 中路径的总长度〈environment contents〉,则删除一些装饰(如果它们的长度加起来超过了 的长度〈environment contents〉或者输入路径没有被充分使用(如果它们的长度加起来较小)。

由于本例中装饰列表中的长度加起来为 1cm+2cm=3cm,大于环境内容的长度 2cm,因此应该去掉其中一个装饰。但是渲染图显示,两个装饰都被使用了。

相关内容