The following MWE is from calligraphy
's manual (p.9) with Joseph Wright's workaround for the library's use of obsolete functions:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{expl3}
\ExplSyntaxOn
\int_zero_new:N \g__prg_map_int
\ExplSyntaxOff
\usetikzlibrary{decorations,calligraphy}
\begin{document}
\tikz \calligraphy [copperplate] (0,0) .. controls
+(1,−1) and +(−1,1) .. ++(3,0) [this stroke
style={light,taper=start}] +(0,0) .. controls
+(1,−1) and +(−1,1) .. ++(3,0) [this stroke
style={heavy}] +(0,0) .. controls +(1,−1) and
+(−1,1) .. ++(3,0) [this stroke
style={light,taper=end}] ;
\end{document}
However, I get the following compilation error:
! Undefined control sequence.
\GenericError ...
#4 \errhelp \@err@ ...
l.20 style={light,taper=end}] ;
?
What's the best workaround or fix? I realise that \GenericError
is defined, as latexdef
says so. Indeed, it gives a definition which uses \@err@
, too. So, presumably, \@err@
should be defined before \GenericError
is called, but isn't. But none of this really explains why I get an error with the manual's code at all.
The library also relies on \__prop_split:cnTF
which is defined as a variant of \__prop_split:NnTF
. However, I can't find this in interface3,pdf
. On the other hand, it is in l3kernel/expl3-code.tex
, so I guess it should work?
calligraphy
you also need to load librarydecorations.pathreplacing
.decorations
. Making itdecorations.pathreplacing
doesn't help. You only need that, I think, for calligraphic brackets and such. That code is conditionalised on the decorations stuff being defined.\__prop_split:NnTF
see page 148 ofinterface3.pdf
(version dated 2018/03/05)