उपरोक्त सभी मुश्किल यह है कि यह LaTeX में एक अच्छा, लचीला (या एक अतिभारित) मना करने के लिए हो सकता है !!! (वह TeX कोड मेरे लिए ग्रीक जैसा दिखता है)
ठीक है, बस अपना हाल जोड़ने के लिए (यद्यपि उतना लचीला नहीं) विकास, यहाँ मैंने हाल ही में अपनी थीसिस डॉक में किसके साथ प्रयोग किया है,
\usepackage{ifthen} % provides conditonals...
डिफ़ॉल्ट रूप से "वैकल्पिक" कमांड सेट खाली के साथ कमांड शुरू करें:
\newcommand {\figHoriz} [4] [] {
तब मैक्रो ने एक अस्थायी चर सेट किया है, \ अस्थायी {}, अलग-अलग इस बात पर निर्भर करता है कि वैकल्पिक तर्क रिक्त है या नहीं। यह किसी भी पारित तर्क के लिए बढ़ाया जा सकता है।
\ifthenelse { \equal {#1} {} } %if short caption not specified, use long caption (no slant)
{ \def\temp {\caption[#4]{\textsl{#4}}} } % if #1 == blank
{ \def\temp {\caption[#1]{\textsl{#4}}} } % else (not blank)
तब मैं दो मामलों के लिए \ temp {} चर का उपयोग करके मैक्रो चलाता हूं। (यहां यह केवल लघु-कैप्शन को लंबे कैप्शन के बराबर सेट करता है यदि यह उपयोगकर्ता द्वारा निर्दिष्ट नहीं किया गया था)।
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
इस मामले में मैं केवल एकल, "वैकल्पिक" तर्क के लिए जांच करता हूं जो कि \ newcommand {} प्रदान करता है। यदि आप इसे 3 "वैकल्पिक" आर्ग के लिए सेट अप करने के लिए कहते हैं, तो आपको अभी भी 3 रिक्त args भेजना होगा ... उदा।
\MyCommand {first arg} {} {} {}
जो बहुत ही मूर्खतापूर्ण है, मुझे पता है, लेकिन जहां तक मैं लेटेक्स के साथ जाने वाला हूं - यह सिर्फ सनसनीखेज नहीं है क्योंकि मैं टीएक्स कोड को देखना शुरू करता हूं ... मुझे श्री रॉबर्टसन की एक्सपर्स विधि पसंद है, हालांकि मैं शायद 'यह कोशिश करेंगे ...