Mở rộng một phần đối số macro
Tôi có một thư viện hình ảnh tikz, ví dụ.
\newcommand*{\mypic}[1]{
\begin{tikzpicture}
%...
\end{tikzpicture}
}
mà tôi muốn in cùng với tên của chúng (bao gồm cả các đối số). Tuy nhiên,
\renewcommand{\show}[1]{\verb|#1|\quad #1}
\show{\mypic{a}}
sản xuất
Gói tikz Lỗi: Xin lỗi, một số gói đã xác định lại ý nghĩa của ký hiệu đô la ở chế độ toán học. Điều này không tương thích với tikz và thư viện calc của nó và có thể gây ra lỗi không thể khôi phục.
Tôi đoán \ show đang cố gắng mở rộng đối số của nó bên trong \ verb. Tôi đã thử nghiệm với \ expand after nhưng không giúp được gì. Khi tôi thay thế \ verb | | với \ texttt {}, \ show hoàn toàn không in tên macro.
Trả lời
Đầu tiên, tốt hơn là không nên xác định lại nguyên thủy, chẳng hạn \show. Chỉ cần chọn một tên lệnh khác. Sau đó, \Verbtừ fvextragói sẽ mạnh mẽ hơn \verbkhi được sử dụng bên trong một macro khác.
\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}