14

After upgrading to TeXLive 2014 compiling my TikZ pictures prepared with the hobby library stopped working.

Consider the following MWE:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{hobby,positioning}

\begin{document}
    \begin{tikzpicture}[%
        scale=1, 
        % circlenodes/.style={circle, draw, font=\footnotesize},
        circlenodes/.style={circle, draw, font=\footnotesize, inner sep=0.1em,
            minimum width=1.5em},
        % midnodes/.style={midway, circle, fill=white, font=\tiny},
        midnodes/.style={midway, font=\tiny, above},
        >=latex,
        ]
        \fill[gray!20](-3, 3) to[curve through={%
            (-2, 1.5) (0,0) (0.5, 0.5) (1, 1.5) (3,3) 
        }] (4, 4) --(4,-0.5) -- (-3, -0.5) -- (-3, 3);
        \draw[thick, ->] (-3,-0.5) -- (4, -0.5) node[at end, anchor=west] {$tgo$};
        \draw[thick, ->] (-3,-0.5) -- (-3, 4) node[at end, anchor=south] {$J(tgo)$};
        \draw[very thick] (-3, 3) to[curve through={%
            (-2, 1.5) (0,0) (0.5, 0.5) (1, 1.5) (3,3) 
        }] (4, 4);
        \node[circlenodes, fill=red!20] (one) at (-3,3) {$a_0$};
        \node[circlenodes, fill=green!20, below=0pt of one] (a1) {$a_1$};
        \node[circlenodes, fill=yellow!20] (five)  at (-2,1.5) {$a_2$};
        \node[circlenodes, fill=blue!20, below=0pt of five] (a3) {$a_3$};
        \node[circlenodes, below=0pt of one] {$a_1$};
        \node[circlenodes, fill=red!20] (three) at (0.5,0.5) {$c_0$};
        \node[circlenodes, fill=green!20, right=0pt of three] (c1) {$c_1$};
        \node[circlenodes, fill=yellow!20, right=0pt of c1] (c2) {$c_2$};
        \node[circlenodes, fill=blue!20, right=0pt of c2] (c3) {$c_3$};
        \node[circlenodes, fill=green!20] (four)  at (3,3) {$b_1$};
        \node[circlenodes, fill=yellow!20, below=0pt of four] (b2) {$b_2$};
        \node[circlenodes, fill=blue!20,] (six)   at (1,1.5) {$b_3$};
        \node[circlenodes, fill=red!20] (two)  at (4,4) {$b_0$};
        \path[->] (two) edge[bend left=30]  node[midnodes] {1} (four);
        \path[->] (b2) edge[bend left=30] node[midnodes] {3} (six);
        \path[->] (a1) edge[bend right=30] node[midnodes] {2} (five);
    \end{tikzpicture}
\end{document}

This gives the following error message with the lualatex compiler:

! Undefined control sequence.
<argument> \fp_if_undefined:NTF 
                     \l_hobby_out_angle_fp {\array_put:Nnx \l_hobby_matrix_b_ar
l.18         }] (4, 4)
                     --(4,-0.5) -- (-3, -0.5) -- (-3, 3);
? 

With a deadline drawing close, I am getting nervous :-). The wise man might say: ¨Never change a running system.“ I should have listened, but here I am:

Do you have any idea how to fix this?

7
  • Looks like some things didn't get updated properly. I have it working without any problems on an updated MikTeX.
    – percusse
    Jun 30, 2014 at 19:41
  • If there is not another error in your code, it is most probably connected to either lualatex or you used an earlier version of hobby before it was updated (End of january 2014)
    – user31729
    Jun 30, 2014 at 19:41
  • Matter of fact, I kept my TexLive 2013 updated until the freeze a couple of months back. Now I have completely setup TeXLive 2014 anew, so I would be surprised if it was that :/. Sorry for forgetting the positioning library.
    – Ingo
    Jun 30, 2014 at 19:46
  • 4
    Great I now updated and mine is broken too. Haha. It's something to do with the new l3 tools
    – percusse
    Jun 30, 2014 at 20:01
  • 1

2 Answers 2

7

This is now fixed in the version of hobby on CTAN and the change has propagated to TeXLive 14 (I can't say for MikTeX).

If you have an older version, see egreg's post.

1
16

The function \fp_if_undefined:NTF (and siblings) have been deprecated several months ago and removed from the last revision of the expl3 suite. Unfortunately, hobby wasn't updated timely.

You can momentarily solve the issue by defining in a suitable way the now inexistent functions:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{hobby,positioning}

\ExplSyntaxOn
\cs_set_eq:NN \fp_if_undefined:NTF \cs_if_free:NTF
\cs_set_eq:NN \fp_if_undefined:NT \cs_if_free:NT
\ExplSyntaxOff

After an examination of hobby.code.tex they seem the only functions that need to be provided back.

1
  • Better late than never ... it's now fixed on CTAN and in TL14. Aug 18, 2014 at 14:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .