以下 MWE 来自calligraphy
手册(第 9 页),其中Joseph Wright 的解决方法对于库中已过时函数的使用:
\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}
但是,我收到以下编译错误:
! Undefined control sequence.
\GenericError ...
#4 \errhelp \@err@ ...
l.20 style={light,taper=end}] ;
?
最好的解决方法或修复方法是什么?我意识到 是\GenericError
定义的,正如latexdef
所说的那样。事实上,它给出了一个使用 的定义\@err@
。因此,大概\@err@
应该在 被\GenericError
调用之前定义,但事实并非如此。但这些都不能真正解释为什么我在手册的代码中遇到错误。
该库还依赖于 ,\__prop_split:cnTF
它被定义为 的变体\__prop_split:NnTF
。但是,我在 中找不到它interface3,pdf
。另一方面,它在 中l3kernel/expl3-code.tex
,所以我猜它应该可以工作?
答案1
这里的问题是这些−
符号:它们是不是'hyphen-minus' ( -
)。由于 LaTeX2e 2018 及以后版本启用了 UTF-8 支持作为 pdfTeX 的标准,因此您收到一个有点神秘的错误。在扩展上下文中,(非 ASCII)UTF-8 字符在这种方案下会产生一些奇怪的结果,但它从来都不是“正确的”。用标准连字符替换字符可以解决这个问题。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{expl3}
\ExplSyntaxOn
\int_zero_new:N \g__prg_map_int
\ExplSyntaxOff
\usetikzlibrary{decorations.pathreplacing,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}