2010-01-04 4 views
5

मुझे निम्न समस्या है। मैं किसी मैक्रो को परिभाषित किया है, \func रूपलेटेक्स - निकालने/अक्षरों को अनदेखा करें

\newcommand{\func}[1]{% do something with #1 
X #1 Y 
} 

इस प्रकार मैं अब एक और मैक्रो

\newcommand{\MyFunc}[1]{ 
% parse #1 and if it contains "\func{....}", ignore all except this part 
% otherwise ignore #1 
} 

कोई मुझे बताओ कैसे \MyFunc लागू करने के लिए कर सकते हैं परिभाषित करना चाहते हैं?

\MyFunc{123abcdefg}    % should print nothing 
\MyFunc{123\func{abcd}efg}  % should print X abcd Y 

मैं केवल \MyFunc के कोड बदल सकते हैं:

यहाँ क्या होने चाहिए। \func जैसा होना चाहिए उतना ही रहना चाहिए।

+0

बिल्कुल आप ऐसा करने का प्रयास क्यों कर रहे हैं? –

+1

मैं एल्गोरिदम में एक शीर्षक है कि शीर्षक {blah blah \ समारोह {algorithm_name}, ऐसा} जब मैं टीओसी बनाने के लिए, मैं (बस algorithm_name निकालने के लिए \ समारोह और उपेक्षा की वजह से स्वरूपण के साथ चाहते हैं के रूप में परिभाषित किया गया है है बाकी। – Jus12

+0

'\ caption [\ func {algorithm_name}] {blah blah \ func {algorithm_name} blah blah}' –

उत्तर

10

यह मानक लाटेक्स प्रोग्रामिंग के साथ किया जा सकता है। कुछ ऐसा:

 
\documentclass{article} 
\newcommand\func[1]{X #1 Y} 
\makeatletter 
\newcommand\MyFunc[1]{% 
    \[email protected]{\func}{#1}% 
    \[email protected] 
    \[email protected]@[email protected]#1\@nil 
    \fi 
} 
\def\[email protected]@[email protected]#1\func#2#3\@nil{\func{#2}} 
\makeatother 
\begin{document} 
[\MyFunc{123abcdefg}]    % should print nothing 
[\MyFunc{123\func{abcd}efg}]  % should print X abcd Y 
\end{document} 
+0

परिभाषित किया गया है और यहां पर काम किया गया है। परिणाम प्राप्त करने के अन्य तरीके हैं, लेकिन यह सबसे सरल होना चाहिए। –

+1

धन्यवाद !! यही वही है जो मैं देख रहा था :) क्या सीखने (ला) टीएक्स प्रोग्रामिंग के लिए कोई अच्छा संसाधन है? – Jus12

+1

मुझे यह उल्लेख करना चाहिए कि मुझे आपके कोड में '\ newcland' को '\ DeclareRobustCommand' में बदलना था, और फिर सबकुछ बेकार ढंग से काम करता था! (यह पाठ्यक्रम के वास्तविक दस्तावेज से संबंधित है, ऊपर खिलौना उदाहरण नहीं) – Jus12