2009-07-31 11 views
255

लाटेक्स में, मैं एक स्ट्रिंग वेरिएबल को कैसे परिभाषित कर सकता हूं जिसका संकलन संकलित पीडीएफ में चर के बजाय उपयोग किया जाता है?क्या कोई तरीका है कि मैं लाटेक्स में एक चर परिभाषित कर सकता हूं?

मान लें कि मैं एक सॉफ्टवेयर पर एक तकनीकी दस्तावेज़ लिख रहा हूं और मैं प्रक्षेपण या पैकेज में पैकेज नाम को परिभाषित करना चाहता हूं ताकि अगर उसका नाम बदल जाए, तो मुझे इसे कई जगहों पर प्रतिस्थापित नहीं करना है, केवल एक ही स्थान पर। करने के लिए आप प्रस्तावना

+2

बड़ी सामग्री के लिए, \ savebox (https://en.wikibooks.org/wiki/LaTeX/Boxes#savebox) का उल्लेख करना उचित है। –

उत्तर

263

निम्नलिखित जोड़ें:

\newcommand{\newCommandName}{text to insert} 

तो फिर तुम सिर्फ \newCommandName{} पाठ

में \newcommand पर उपयोग कर सकते हैं अधिक जानकारी के लिए, उदाहरण के लिए देख wikibooks

+10

आप घुंघराले ब्रेसिज़ को छोड़कर केवल '' \ newCommandName'' – dialex

+16

@DiAlex का भी उपयोग कर सकते हैं, क्योंकि यह सम्मिलित टेक्स्ट के बाद सफेद स्थान में हस्तक्षेप करेगा। [यह सवाल] देखें (http://tex.stackexchange.com/q/31091)। – jtpereyda

+0

मैं इसे गैर-असीसी वर्णों के साथ ठीक से काम करने के लिए नहीं मिल सकता। कोई विचार? – lindhe

24

दूरी का वर्णन चर के लिए, आप \newlength का उपयोग करें (और \setlength, \addlength, \settoheight, \settolength और \settodepth साथ मूल्यों में हेरफेर) होगा।

इसी प्रकार आपके पास अनुभाग और आंकड़े संख्या जैसी चीजों के लिए \newcounter तक पहुंच है जो पूरे दस्तावेज़ में वृद्धि होनी चाहिए। मैंने अतीत में कोड नमूने प्रदान करने के लिए इसका इस्तेमाल किया है जो अन्य आंकड़ों की अलग-अलग संख्या में गिने गए थे ...

नोट्स भी \makebox है जो आपको बाद में पुनः उपयोग के लिए थोड़ा सा रखरखाव दस्तावेज़ स्टोर करने की अनुमति देता है (और \settolength के साथ उपयोग के लिए ...)।

+12

सरल उपयोग उदाहरण जैसे \ \ newlength {\ hcolw} 'और' \ setlength {\ hcolw} {0.47 \ textwidth} 'उपयोगी होगा। – trybik

136

\def आदेश का उपयोग करें:

\def \variable {Something that's better to use as a variable} 

ध्यान रखें कि \def ओवरराइड कोई चेतावनी के बिना मैक्रो पहले से मौजूद है और इसलिए कर सकते हैं विभिन्न सूक्ष्म त्रुटियों का कारण। इसे दूर करने के लिए या तो my_var जैसे नेमस्पेस्ड वेरिएबल्स का उपयोग करें या \newcommand पर \renewcommand आदेशों के बजाय वापस आते हैं।

+5

'\ def' का उपयोग समस्याग्रस्त हो सकता है क्योंकि यह पूर्ववर्ती मैक्रोज़ की जांच नहीं करता है। [लाटेक्स नरक का दूसरा चक्र] देखें (http://dabacon.org/pontiff/?पी = 6101) - इस तरह, यह '\ newcommand' –

+2

धन्यवाद @RyanAtallah का उपयोग करने के लिए बेहतर है। हालांकि, 'परिवर्तनीय' का अर्थ यह नहीं है कि यह बदलने के लिए उत्तरदायी है? :) – plaes

+4

@plaes आप सही हैं, लेकिन इसका अभी भी मतलब यह नहीं है कि आप '\ def' का उपयोग करना चाहते हैं। इसके बजाए, मुझे लगता है कि उन सभी चरों को "प्रारंभ करें" करने के लिए सबसे अच्छा अभ्यास है जिसे आप '\ newcommand' के साथ उपयोग करना चाहते हैं (भले ही यह केवल \ \ खाली' के साथ है), और उसके बाद' \ renewcommand का उपयोग करके चर को संशोधित करने के लिए अपना आदेश बनाएं '। यह आपको बताएगा कि क्या आपका चर पहले ही निकलता है, क्योंकि '\ newcommand' एक त्रुटि फेंक देगा (या कम से कम एक चेतावनी)। – Nick2253

12

आप \newcommand का उपयोग करना चाहते हैं, तो आप भी \usepackage{xspace} शामिल हैं और \newcommand{\newCommandName}{text to insert\xspace} द्वारा आदेश परिभाषित कर सकते हैं। यह आपको \newCommandName{} के बजाय \newCommandName का उपयोग करने की अनुमति दे सकता है।

अधिक विस्तार के लिए, http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html

1

मुझे लगता है कि आप शायद इस उद्देश्य के लिए एक टोकन सूची का उपयोग करना चाहते हैं: टोकन सूची \newtoks\packagename स्थापित करने के लिए नाम प्रदान करते हैं: \packagename={New Name for the package} में नाम डालने के लिए आपका आउटपुट: \the\packagename

संबंधित मुद्दे

 संबंधित मुद्दे