如何测试 tikz 库是否已加载

如何测试 tikz 库是否已加载

我想编写一些演示代码,展示 tikz 的示例代码。但是我希望生成的 pdf 自动依赖于 tikz 库,因此我必须测试哪些库已加载。

此功能是否已在 tikz 中实现,或者我可以测试特殊命令是否存在?

编辑:

示例显示代码在序言之外不起作用。但我需要可以在任何地方运行的代码:

\documentclass[]{scrbook}

\usepackage{pgf}
\usepackage{tikz}

\usetikzlibrary{circuits}

\makeatletter
\newcommand*\@tikzextension{code.tex}
\def\IfTikzLibraryLoaded#1{%
   \@ifl@aded\@tikzextension{tikzlibrary#1}
}
\makeatother

\listfiles

\begin{document}    
\IfTikzLibraryLoaded{circuits}{is loaded}{not loaded}
\end{document}

答案1

tikz加载库时foo,它会定义宏\tikz@library@foo@loaded。因此,以下代码将完成该工作:

\makeatletter
\def\IfTikzLibraryLoaded#1{%
  \ifcsname tikz@library@#1@loaded\endcsname
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

答案2

您可以根据命令的定义创建一个新的命令\@ifpackageloaded

在下面的例子中,我提供了\iftikzlibraryloaded 具有以下语法的新条件:

\iftikzlibraryloaded{<name>}%
 {True Code}%
 {False Code}

完整的例子如下:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{calc}

\makeatletter
\newcommand*\@tikzextension{code.tex}
\def\iftikzlibraryloaded#1{%
   \@ifl@aded\@tikzextension{tikzlibrary#1}
}
\makeatother
\iftikzlibraryloaded{calc}
 {\def\OUTPUT{calc loaded}}
 {\def\OUTPUT{calc not loaded}}

\begin{document}
\OUTPUT
\end{document}

相关内容