Is there a LaTeX3 equivalent for \@ifpackageloaded?
Asked
Active
Viewed 405 times
1 Answers
17
No, there isn't. But you can easily build it.
\prg_new_conditional:Nnn \mhchem_package_if_loaded:n { p, T, F , TF }
{
\use:c { @ifpackageloaded } { #1 } { \prg_return_true: } { \prg_return_false: }
}
This will define the conditionals
\mhchem_package_if_loaded:nTF
\mhchem_package_if_loaded:nT
\mhchem_package_if_loaded:nF
and the predicate form
\mhchem_package_if_loaded_p:n
to be used in boolean expressions.
A test:
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\prg_new_conditional:Nnn \mhchem_package_if_loaded:n { p, T, F , TF }
{
\use:c { @ifpackageloaded } { #1 } { \prg_return_true: } { \prg_return_false: }
}
% now let's test it
\mhchem_package_if_loaded:nTF { expl3 }
{ \typeout{Yes~expl3} }
{ \typeout{No~expl3} }
\mhchem_package_if_loaded:nT { expl3 }
{ \typeout{Yes~expl3} }
\mhchem_package_if_loaded:nTF { kantlipsum }
{ \typeout{Yes~kantlipsum} }
{ \typeout{No~kantlipsum} }
\mhchem_package_if_loaded:nF { kantlipsum }
{ \typeout{No~kantlipsum} }
\bool_if:nTF
{
\mhchem_package_if_loaded_p:n {expl3}
||
\mhchem_package_if_loaded_p:n {kantlipsum}
}
{ \typeout{Yes~expl3~or~kantlipsum} }
{ \typeout{No~expl3~or~kantlipsum} }
\bool_if:nTF
{
\mhchem_package_if_loaded_p:n {expl3}
&&
\mhchem_package_if_loaded_p:n {kantlipsum}
}
{ \typeout{Yes~expl3~and~kantlipsum} }
{ \typeout{No~expl3~and~kantlipsum} }
\stop
The relevant console output:
Yes expl3
Yes expl3
No kantlipsum
No kantlipsum
Yes expl3 or kantlipsum
No expl3 and kantlipsum
egreg
- 1,121,712
-
Can you update your answer? that command is implemented since (LaTeX release 2021-11-15)
ltnews43...saludos – Pablo González L Oct 09 '23 at 14:17 -
-
-
@PabloGonzálezL That's not
expl3. For instance it lacks the predicate version. – egreg Oct 09 '23 at 15:46
\let\ltx_if_pkg_loaded:nTF\@ifpackageloadedyes, there is now? – David Carlisle May 30 '18 at 20:12