为什么我不能使用直线路径来定义爱好库中的曲线?

为什么我不能使用直线路径来定义爱好库中的曲线?

在里面爱好使用 Tikz 库中的曲线,我可以或多或少地像在 Metapost 中定义曲线一样定义曲线,如下所示:

\usepackage{tikz}
\usetikzlibrary{hobby}

\begin{document}
\begin{tikzpicture}
\draw (1.21,2.4598) coordinate (z1);
\draw (0.4820,2.1281) coordinate (z2);
\draw (-0.8821,0.9569) coordinate (z3);
\draw (-2.6476,-0.2303) coordinate (z4);
\draw (-2.4570,-1.1470) coordinate (z5);
\draw (-4.33,-1.77) coordinate (z6);


\draw  (z1)  to [ curve through ={(z2)..(z3)..(z4)..(z5)}] (z6); 

\end{tikzpicture}
\end{document}

这是可行的,但是为什么下面的命令不起作用呢?

\draw  (z1)  to [ curve through ={(z2)..(z3)--(z4)..(z5)}] (z6); 

按照业余爱好图书馆手册应该可以。

更糟糕的是,显然我可以使用以下命令来完成这项工作:

 \usepackage{tikz}
 \usetikzlibrary{hobby}

 \begin{document}
  \begin{tikzpicture}[use Hobby shortcut ]
    
    
    \draw (1.21,2.4598) coordinate (z1);
    \draw (0.4820,2.1281) coordinate (z2);
    \draw (-0.8821,0.9569) coordinate (z3);
    \draw (-2.6476,-0.2303) coordinate (z4);
    \draw (-2.4570,-1.1470) coordinate (z5);
    \draw (-4.33,-1.77) coordinate (z6);

    \draw  (z1)..(z2)..(z3)--(z4)..(z5)..(z6);

\end{tikzpicture}
\end{document}

但这并不能解决我的问题,我正在尝试使用程序 TikzEdt 来加速我的个人项目制作字体,并且 TikzEdt 中的所见即所得模式非常有用,但是:

  \begin{tikzpicture}[use Hobby shortcut ]

命令似乎破坏了它的所见即所得编辑模式。

有人可以帮我弄这个吗 ?

答案1

curve through符号旨在只是在点上应用 Hobby 算法,因此它并不是一个完整的路径构造套件。因此

(a) to[curve through={(b) (c) (d)}] (e)

(a) .. (b) .. (c) .. (d) .. (e)

应该是相同的。允许..坐标之间的curve through转换是为了便于在两者之间切换,但它们实际上是语法中的 NOP curve through。因此,如果use Hobby shortcut证明存在问题,可以采用上面的行并将其简单地更改为

(a) to[curve through={(b) .. (c) .. (d)}] (e)

从而节省了一些编辑工作。

版本curve through

(a) .. (b) .. (c) -- (d) .. (e) .. (f)

因此

(a) to[curve through={(b)}] (c) -- (d) to[curve through={(e)}] (f)

也就是说,每个单独的部分都需要用 替换curve through

您的代码的工作版本如下:

\documentclass{article}
%\url{https://tex.stackexchange.com/q/583913/86}

\usepackage{tikz}
\usetikzlibrary{hobby}

\begin{document}
\begin{tikzpicture}
\draw (1.21,2.4598) coordinate (z1);
\draw (0.4820,2.1281) coordinate (z2);
\draw (-0.8821,0.9569) coordinate (z3);
\draw (-2.6476,-0.2303) coordinate (z4);
\draw (-2.4570,-1.1470) coordinate (z5);
\draw (-4.33,-1.77) coordinate (z6);


\draw  (z1)  to [ curve through ={(z2)} ] (z3) -- (z4) to[curve through={(z5)}] (z6); 

\end{tikzpicture}
\end{document}

相关内容