# 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

-
Works, thank you. –  Matthias Pospiech Mar 18 '12 at 13:39

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? –  Matthias Pospiech Mar 18 '12 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. –  Marco Daniel Mar 18 '12 at 9:24
Ok, but as far as I know \@ifpackageloaded only works in preamble. –  Matthias Pospiech Mar 18 '12 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. –  Marco Daniel Mar 18 '12 at 9:55
Ok, so If I use only \@ifl@aded I do not have this proble, correct? –  Matthias Pospiech Mar 18 '12 at 10:46