tikzlibrary 书法警告

tikzlibrary 书法警告

以下 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.styspath3包似乎是calligraphyTikZ 库的辅助包)定义了一个控制序列\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。但要使警告消失,必须更新软件包。

相关内容