![tikzlibrary 书法警告](https://linux22.com/image/368012/tikzlibrary%20%E4%B9%A6%E6%B3%95%E8%AD%A6%E5%91%8A.png)
以下 MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{%
decorations.pathreplacing,
calligraphy
}
\begin{document}
\thispagestyle{empty}
\tikz \draw[
ultra thick,
decorate,
decoration={
calligraphic brace,
amplitude=1.5mm
}
](0,0) -- (4in,0);%
\end{document}
生成以下警告:
*************************************************
* LaTeX warning: "kernel/invalid-variant"
*
* Variant form 'nnV' invalid for base form '\spath_get:nnN'.
*************************************************
*************************************************
* LaTeX warning: "kernel/invalid-variant"
*
* Variant form 'VnV' invalid for base form '\spath_get:nnN'.
*************************************************
加载时会发生这种情况tikzlibrary
calligraphy
。我意识到这些只是LaTeX 3
警告(代码按预期产生输出),但我想确保这不是未来更严重问题的前奏。(MacTeX 2017,今天早上更新。)
答案1
我不知道这是否符合真正的答案,但问题是:(spath3.sty
该spath3
包似乎是calligraphy
TikZ 库的辅助包)定义了一个控制序列\spath_get:nnN
和以下变体
\cs_generate_variant:Nn \spath_get:nnN {nnV,VnN,VnV}
但这行不通,因为您无法为 N 参数生成 V 类型变体(您只能为 n 指定 V),这在变体一和变体三中被忽略。这意味着该包未正确编程,应通知作者。
编辑:只是为了澄清这是什么意思:LaTeX3 宏的命令规范包含参数规范。这表示宏需要哪种类型的参数。N 表示像 这样的标记\foo
,na 像 这样的标记列表f o o
。V 是一种说法,\foo
命令将获得的不是标记,而是它的值(因为\def\foo{a}
它将获得 a)。
编辑2:正如 @egreg 在评论中指出的那样,其中一个可疑变体的唯一用途是在spath3.sty
以下几点:
\NewDocumentCommand \SPathInfoInto { m m m }
{
\tl_set:Nn \l_tmpa_tl #3
\spath_get:nnV {#1} {#2} \l_tmpa_tl
}
这个问题可以通过使用重新定义而不是变体来解决(甚至在文档级别)\spath_get:nnN
。但要使警告消失,必须更新软件包。