Argument de macro en expansion partielle
J'ai une bibliothèque d'images tikz, par exemple.
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
%...
\end{tikzpicture}
}
que je voudrais imprimer avec leurs noms (y compris les arguments). cependant,
\renewcommand{\show}[1]{\verb|#1|\quad #1}
\show{\mypic{a}}
produit
Erreur du package tikz: Désolé, certains packages ont redéfini la signification du signe dollar en mode mathématique. Ceci est incompatible avec tikz et sa bibliothèque calc et peut provoquer des erreurs irrécupérables.
Je suppose que \ show essaie d'étendre son argument dans \ verb. J'ai expérimenté avec \ expandafter mais cela n'a pas aidé. Quand j'ai remplacé \ verb | | avec \ texttt {}, \ show n'aimait pas du tout le nom de la macro.
Réponses
Premièrement, il vaut mieux ne pas redéfinir le primitif, par exemple \show
. Choisissez simplement un autre nom de commande. Ensuite, \Verb
from fvextra
package est plus robuste que \verb
lorsqu'il est utilisé dans une autre macro.
\documentclass{article}
\usepackage{fvextra}
\usepackage{tikz}
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
\node[draw, circle] {text};
\end{tikzpicture}
}
\newcommand{\showTikzPic}[1]{\Verb|#1|\quad #1}
\begin{document}
\showTikzPic{\mypic{}}
\end{document}