부분적으로 확장되는 매크로 인수

Aug 18 2020

나는 예를 들어 tikz 사진 라이브러리가 있습니다.

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

나는 그들의 이름 (인수 포함)과 함께 인쇄하고 싶습니다. 하나,

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

생산하다

패키지 tikz 오류 : 죄송합니다. 일부 패키지가 수학 모드 달러 기호의 의미를 재정의했습니다. 이것은 tikz 및 계산 라이브러리와 호환되지 않으며 복구 할 수없는 오류를 일으킬 수 있습니다.

\ show가 \ verb 내부의 인수를 확장하려고하는 것 같습니다. \ expandafter로 실험했지만 도움이되지 않았습니다. \ verb |를 바꿀 때 | \ texttt {}를 사용하면 \ show는 매크로 이름을 전혀 인쇄하지 않았습니다.

답변

3 muzimuzhiZ Aug 18 2020 at 12:15

첫째, 예를 들어 기본 체를 재정의하지 않는 것이 좋습니다 \show. 다른 명령 이름을 선택하십시오. 그러면 \Verbfrom fvextrapackage가 \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}