Argumento macro de expansión parcial

Aug 18 2020

Tengo una biblioteca de imágenes tikz, por ejemplo.

\newcommand*{\mypic}[1]{
\begin{tikzpicture}
 %...
\end{tikzpicture}
 }

que me gustaría imprimir junto con sus nombres (incluidos los argumentos). Sin embargo,

\renewcommand{\show}[1]{\verb|#1|\quad #1}
\show{\mypic{a}}

produce

Error de paquete tikz: Lo sentimos, algunos paquetes han redefinido el significado del signo de dólar en modo matemático. Esto es incompatible con tikz y su biblioteca calc y puede causar errores irrecuperables.

Supongo que \ show está tratando de expandir su argumento dentro de \ verb. Experimenté con \ expandafter pero no ayudó. Cuando reemplacé \ verb | | con \ texttt {}, \ show no imprimió el nombre de la macro en absoluto.

Respuestas

3 muzimuzhiZ Aug 18 2020 at 12:15

En primer lugar, es mejor no redefinir primitivo, por ejemplo \show. Simplemente elija otro nombre de comando. Entonces, \Verbfrom fvextrapackage es más robusto que \verbcuando se usa dentro de otra 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}