Частично расширяющийся аргумент макроса
У меня есть библиотека картинок тикз, например.
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
%...
\end{tikzpicture}
}
которые я хотел бы напечатать вместе с их именами (включая аргументы). Тем не мение,
\renewcommand{\show}[1]{\verb|#1|\quad #1}
\show{\mypic{a}}
производит
Пакет tikz Ошибка: Извините, в некоторых пакетах переопределено значение знака доллара в математическом режиме. Это несовместимо с tikz и его библиотекой calc и может вызвать неисправимые ошибки.
Думаю, \ show пытается расширить свой аргумент внутри \ verb. Я экспериментировал с \ expandafter, но это не помогло. Когда я заменил \ verb | | с \ texttt {} \ show вообще не печатал имя макроса.
Ответы
Во-первых, например, примитив лучше не переопределять \show
. Просто выберите другое имя команды. Тогда \Verb
from fvextra
package более надежен, чем \verb
когда используется внутри другого макроса.
\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}
