Vérifier si une commande contient du texte ou pas en LaTeX

En ce moment, pour les besoins de mon projet de fin d’études, nous sommes en train de construire un template LaTeX afin d’avoir un truc modulable et facilement réutilisable pour tous les documents et rendus que nous avons à fournir aux professeurs niveau suivi.

Dans ce template LaTeX, il est pour le moment possible d’inclure dans le header de chaque page (fait avec le paquet fancyhdr au passage, peut-être que je ferai un autre article dessus) le logo du projet, et le logo d’un partenaire (dans notre cas, le LabEIP, instance d’Epitech nous suivant sur notre projet de fin d’études, l’EIP).

Inclure une image en LaTeX est relativement facile :

[cc lang= »latex »]

\newcommand{\PartnerLogo}{logo_eip.png}

\includegraphics[height=35pt]{\PartnerLogo}

[/cc]

Les problèmes arrivent lorsqu’on n’a pas de logo à mettre, ou qu’on n’a pas encore l’image, etc… tout en voulant conserver notre template et le garder le plus réutilisable possible, car la commande \includegraphics râle si on lui passe une chaîne vide.

[cc lang= »latex »]

\newcommand{\PartnerLogo}{}

\includegraphics[height=35pt]{\PartnerLogo} %% ça ne marche pas !

[/cc]

Une solution est d’utiliser le paquet etoolbox: il contient la commande \ifdefempty permettant de savoir si le résultat d’une commande est une chaîne de caractères vide ou pas, et de faire une action appropriée le cas échéant.

En pratique, ça s’utilise comme ça :

[cc lang= »latex »]

\ifdefempty{\PartnerLogo}
{} %% si aucun fichier n’est spécifié, on ne fait rien
{
\includegraphics[height=35pt]{\PartnerLogo} %% sinon, on affiche l’image
}

[/cc]

Et voilà, maintenant je peux aussi facilement utiliser mon template pour un projet où je n’ai pas de logo à mettre 😉