这个问题可能有点傻,但我知道有\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