Le if en latex, c'est simple parfois mais pas tout le temps.
Publié par The Troll le 20 04 2021

Oui les p'tits clous, 2 billets en un rien de temps (et j'en ai un troisième sous le coude, mais comme il est 'politique' j'ai la flemme). Donc deuxième billet pour annoncer au monde entier que j'ai résolu un problème que j'avais avec latex, dans une application (on dit appliance ?) de mon cru (ui il y a un R) utilisant latex.

Pour expliquer simplement, j'ai une macro qui reçoit des arguments, juste que là c'est assez simple. Disons que dans cette macro je teste pour savoir si un argument est vide (ui, ils peuvent être vides, sinon c'est moins drôle). Pour cela j'utilise le package \ifthen comme cela :


\RequirePackage{ifthen}

\RequirePackage{ color, graphicx, fancyhdr}
\definecolor{t3}{RGB}{85,212,0}

\newcommand*{\truc}[3]{
Écrit le #1
% si le 3 n'est pas vide écrit le 3
\ifthenelse{\equal{#3}{}}{}{\noindent{{\color{t3}\ding{109}}\itshape~ #3} ~\\}

Écrit le #2
}

Pour le moment tout va bien, la vie est belle et cela fonctionne. SAUF SAUF SAUF que si l'argument en question contient du code latex, la compilation [s|t]e plante avec un log pas forcément facile à comprendre :


! Incomplete \iffalse; all text was ignored after ligne....

Après avoir bataillé un peu de temps à comprendre (je suis pas un dieu en latex) j'ai finalement utilisé une autre construction du même paquet \ifx:


% vvvv le 3 est là
\ifx&#3&%
\else {\begin{small}\vbox{\begin{list}{}{}#3 ~\end{list}}\end{small}}

Et là roulement de tambour cela compile et fait ce qu'il faut comme il faut où il faut. Je suis joie.

commentaire(s)
Ajouter un commentaire