อาร์กิวเมนต์แมโครขยายบางส่วน

Aug 18 2020

ฉันมีคลังภาพ tikz เช่น

\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 ไม่ได้พิมพ์ชื่อมาโครเลย

คำตอบ

3 muzimuzhiZ Aug 18 2020 at 12:15

ประการแรกดีกว่าที่จะไม่ redefine \showดั้งเดิมเช่น เพียงแค่เลือกชื่อคำสั่งอื่น จากนั้น\Verbจากfvextraแพ็กเกจจะมีประสิทธิภาพมากกว่า\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}