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, \Verbfrom fvextrapackage est plus robuste que \verblorsqu'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}
