TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

Consider the following MWE:



        % 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},
        \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);

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?

share|improve this question
Looks like some things didn't get updated properly. I have it working without any problems on an updated MikTeX. – percusse Jun 30 '14 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) – Christian Hupfer Jun 30 '14 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 '14 at 19:46
Great I now updated and mine is broken too. Haha. It's something to do with the new l3 tools – percusse Jun 30 '14 at 20:01
up vote 7 down vote accepted

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.

share|improve this answer
Looks like MikTeX is still at 1.4: miktex.org/packages/hobby – Paul Gessler Aug 18 '14 at 14:46

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:



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

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

share|improve this answer
This fixed it. Thanks! – Ingo Jul 1 '14 at 7:40
Better late than never ... it's now fixed on CTAN and in TL14. – Loop Space Aug 18 '14 at 14:43

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.