Argomento macro in espansione parziale

Aug 18 2020

Ho una libreria di immagini tikz, ad es.

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

che vorrei stampare insieme ai loro nomi (argomenti inclusi). Però,

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

produce

Errore tikz del pacchetto: Spiacenti, alcuni pacchetti hanno ridefinito il significato del simbolo del dollaro in modalità matematica. Questo è incompatibile con tikz e la sua libreria calc e potrebbe causare errori irreversibili.

Immagino che \ show stia cercando di espandere il suo argomento all'interno di \ verb. Ho sperimentato \ expandafter ma non ha aiutato. Quando ho sostituito \ verb | | con \ texttt {}, \ show non stampava affatto il nome della macro.

Risposte

3 muzimuzhiZ Aug 18 2020 at 12:15

In primo luogo, è meglio non ridefinire primitivo, per esempio \show. Basta scegliere un altro nome di comando. Quindi, \Verbfrom fvextrapackage è più robusto di \verb, se usato all'interno di un'altra 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}