आंशिक रूप से विस्तृत मैक्रो तर्क

Aug 18 2020

मेरे पास tikz चित्रों की एक लाइब्रेरी है, उदाहरण के लिए।

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

जिसे मैं उनके नाम (तर्कों सहित) के साथ मुद्रित करना चाहूंगा। तथापि,

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

का उत्पादन

पैकेज टिक्ज़ एरर: क्षमा करें, कुछ पैकेज ने गणित-मोड डॉलर चिह्न के अर्थ को फिर से परिभाषित किया है। यह टिक्ज़ और इसकी कैल्क लाइब्रेरी के साथ असंगत है और अपरिवर्तनीय त्रुटियों का कारण हो सकता है।

मुझे लगता है कि \ show अपने तर्क को \ क्रिया के अंदर विस्तारित करने की कोशिश कर रहा है। मैंने \ expandfter के साथ प्रयोग किया लेकिन यह मदद नहीं की। जब मैंने \ क्रिया को प्रतिस्थापित किया | | \ texttt {} के साथ, \ show ने मैक्रो नाम को बिल्कुल नहीं छापा।

जवाब

3 muzimuzhiZ Aug 18 2020 at 12:15

सबसे पहले, यह बेहतर है कि उदाहरण के लिए आदिम को फिर से परिभाषित न करें \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}