Expandindo parcialmente o argumento macro
Tenho uma biblioteca de fotos tikz, por exemplo.
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
%...
\end{tikzpicture}
}
que eu gostaria de imprimir junto com seus nomes (incluindo argumentos). Contudo,
\renewcommand{\show}[1]{\verb|#1|\quad #1}
\show{\mypic{a}}
produz
Erro do pacote tikz: Desculpe, alguns pacotes redefiniram o significado do cifrão do modo matemático. Isso é incompatível com o tikz e sua biblioteca calc e pode causar erros irrecuperáveis.
Eu acho que \ show está tentando expandir seu argumento dentro de \ verb. Experimentei o \ expandafter mas não adiantou. Quando substituí \ verb | | com \ texttt {}, \ show não imprimiu o nome da macro.
Respostas
Em primeiro lugar, é melhor não redefinir primitivo, por exemplo \show
. Basta escolher outro nome de comando. Então, \Verb
from fvextra
package é mais robusto do que \verb
quando usado dentro de outra 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}
