在 .sty 文件中包括 tikzlibrary

在 .sty 文件中包括 tikzlibrary

这个问题可能有点傻,但我知道有\RequirePackage{}办法写文件。有没有类似的东西要求在文件中.sty包含库?TikZ.sty

我还没有真正测试过它,但我认为它在文件\usetikzlibrary{}中可以正常工作.sty

我只是想知道是否\RequirePackage{}确实存在类似的东西,或者是否有不同的方法来要求在文件TikZ内包含一个库.sty

答案1

不存在类似的东西\requiretikzlibrary

但是,\usetikzlibrary实际上会检查库是否已经加载,\input如果已经加载,则不会再次加载。这也是为什么不应该\usetikzlibrary在组中本地使用的原因。检查库是否已加载是全局定义的,但库本身很可能不会使用\gdef

如果您不想使用 的重载,\usetikzlibrary您可以通过测试 的宏\tikz@library@<library name>@loaded来模仿其行为\relax。如果此测试为真,则表示尚未加载。如果测试结果为正\pgfutil@empty(或在 LaTeX 中测试结果为\empty和/或,\@empty则表示已加载。请注意,还为(letter, 11) 和(other, 12)\usetikzlibrary设置了正确的 catcode (并将它们恢复为以前的 catcode)。@|

%%% Lines 4394–4403 of tikz.code.tex
\expandafter\ifx\csname tikz@library@\pgf@temp @loaded\endcsname\relax%
  \expandafter\global\expandafter\let\csname tikz@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
  \expandafter\edef\csname tikz@library@#1@atcode\endcsname{\the\catcode`\@}
  \expandafter\edef\csname tikz@library@#1@barcode\endcsname{\the\catcode`\|}
  \catcode`\@=11
  \catcode`\|=12
  \input tikzlibrary\[email protected]
  \catcode`\@=\csname tikz@library@#1@atcode\endcsname
  \catcode`\|=\csname tikz@library@#1@barcode\endcsname
\fi%

定义的其余部分\use@@tikz@library是对给定的可能列表的处理\usetikzlibrary。同样适用于\usepgflibrary但在大多数地方tikz用代替。pgf

相关内容