क्या कोई तरीका है जिससे मैं LaTeX में एक चर को परिभाषित कर सकता हूं?


350

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

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


2
विशाल सामग्री के लिए, यह \ savebox ( en.wikibooks.org/wiki/LaTeX/Boxes#savebox ) का उल्लेख करने योग्य है ।
इमैनुएल वेइनाचटेन जुले

जवाबों:


371

आपको प्रस्तावना में निम्नलिखित जोड़ें:

\newcommand{\newCommandName}{text to insert}

तब आप केवल \newCommandName{}पाठ में उपयोग कर सकते हैं

अधिक जानकारी के लिए \newcommand, उदाहरण के लिए wikibooks देखें

उदाहरण:

\documentclass{article}
\newcommand\x{30}
\begin{document}
\x
\end{document}

आउटपुट:

30

31
@DiAlex घुंघराले ब्रेसिज़ को छोड़ते समय सावधान रहें, क्योंकि यह सम्मिलित पाठ के बाद सफेद स्थान के साथ हस्तक्षेप करेगा। इस प्रश्न को देखें ।
jtpereyda

मुझे गैर-अस्की पात्रों के साथ ठीक से काम करने के लिए यह नहीं मिल सकता है। कोई विचार?
लंदहे १५'१६ को

164

\defकमांड का उपयोग करें :

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

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


10
उपयोग \defसमस्याग्रस्त हो सकता है क्योंकि यह preexisting मैक्रोज़ के लिए जाँच नहीं करता है। LaTeX नरक का दूसरा चक्र देखें - इस तरह, यह उपयोग करने के लिए बेहतर है\newcommand
रयान अटल्ला

2
धन्यवाद @RyanAtallah ने उस बारे में नोट जोड़ा। हालांकि, variableइसका मतलब यह नहीं है कि यह बदलने के लिए उत्तरदायी है? :)
पीएलए

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

4
ध्यान दें कि \defगणित मोड में चीजों के लिए काम करता है, जबकि \newCommandNameऐसा नहीं है। (जैसे, \def\mathExpression{\pi^2 + \sin x})
जॉलीवेट

35

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

इसी तरह आप तक पहुँच है \newcounter सेक्शन और फिगर नंबर्स जैसी चीजों , जिन्हें पूरे दस्तावेज में बढ़ाना चाहिए। मैंने कोड नमूने प्रदान करने के लिए अतीत में इसका उपयोग किया है जो अन्य आंकड़ों के अलग-अलग क्रमांकित किए गए थे ...

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


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

20

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

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


यह भी देखें tex.stackexchange.com/questions/31091/…
myrdd

1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.