# how to test if tikz library is loaded

I want to write some demo code showing code with examples for tikz. However I want the resulting pdf to be automatically depended on the tikz libraries and therefore I must test which are loaded.

Is this functionality implemented in tikz already or can I test for the existence of special commands?

EDIT:

Example which shows that the code does not work outside the preamble. I however need code that works everywhere:

\documentclass[]{scrbook}

\usepackage{pgf}
\usepackage{tikz}

\usetikzlibrary{circuits}

\makeatletter
\newcommand*\@tikzextension{code.tex}
}
\makeatother

\listfiles

\begin{document}
\end{document}


When tikz loads the library foo, it defines the macro \tikz@library@foo@loaded. Therefore the following code will do the job:

\makeatletter
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\makeatother

• I made a remix of this solution (thanks!) to make it a one-liner that can go inside the document rather than on the preamble. Here it goes: \def\CheckTikzLibraryLoaded#1{ \ifcsname tikz@library@#1@loaded\endcsname \else \PackageWarning{tikz}{You forgot to add usetikzlibrary{#1} in the preamble!} \fi } \CheckTikzLibraryLoaded{circuits} Oct 20, 2021 at 12:36

you can create a new command based on the definition of the command \@ifpackageloaded:

In the example below I provided the new conditional \iftikzlibraryloaded with the syntax:

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


Here the complete example:

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

\makeatletter
\newcommand*\@tikzextension{code.tex}
}
\makeatother

• You are not using \@ifpackageloaded, at least I see not where. What is \@ifl@aded actually doing and what is your meaning of \@tikzextension ? Is this code working also outside the preamble? Mar 18, 2012 at 9:20
• @MatthiasPospiech: \@ifpackageloaded is defined as \def\@ifpackageloaded{\@ifl@aded\@pkgextension}. Do you see what I mean?. A library of tikz has the following syntax tikzlibrary<Name of Library>.code.tex and the command \@ifl@aded requires two arguments. The first one is the extension. Mar 18, 2012 at 9:24
• Ok, but as far as I know \@ifpackageloaded only works in preamble. Mar 18, 2012 at 9:53
• @MatthiasPospiech: That's right. In the file latex.ltx you can find the relevant part \@onlypreamble\@ifpackageloaded. I don't set this. Mar 18, 2012 at 9:55
• Ok, so If I use only \@ifl@aded I do not have this proble, correct? Mar 18, 2012 at 10:46