LaTeX का विस्तार करना
यह पाठ यह दर्शाता है कि आप LaTeX को अपनी आवश्यकताओं के अनुसार कैसे विस्तारित कर सकते हैं तथा विभिन्न पैकेजों का उपयोग करके इसके स्वरूप (लेआउट) में और अधिक परिवर्तन कैसे कर सकते हैं। साथ ही यह भी बताया गया है कि आप अपने स्वयं के कमांड्स कैसे परिभाषित कर सकते हैं।
एक बार कक्षा (class) घोषित करने के बाद, प्रीएम्बल (preamble) में आप LaTeX की कार्यप्रणाली को एक या एक से अधिक पैकेजों को जोड़कर संशोधित कर सकते हैं। ये पैकेज निम्नलिखित कार्य कर सकते हैं:
- LaTeX के कुछ भागों की कार्यप्रणाली को परिवर्तित करना
- LaTeX में नए कमांड्स जोड़ना
- डॉक्यूमेंट की डिज़ाइन में परिवर्तन करना
LaTeX की कार्यप्रणाली में परिवर्तन
LaTeX का ‘कर्नेल’ (मुख्य भाग) उपयोगकर्ता द्वारा सीमित रूप से ही अनुकूलित किया जा सकता है, इसलिए कुछ अतिरिक्त पैकेज आमतौर पर उपयोग होने वाले कार्यों के लिए बनाए गए हैं। इनमें से पहला है भाषा-विशेष टाइपसेटिंग (जैसे हाइफ़नेशन, विराम चिह्न, उद्धरण चिह्न, स्थानीयकरण आदि) को नियंत्रित करना। विभिन्न भाषाओं के अपने-अपने नियम होते हैं, इसलिए यह आवश्यक होता है कि LaTeX को स्पष्ट रूप से बताया जाए कि कौन-सी भाषा प्रयोग की जा रही है। यह कार्य babel
पैकेज के माध्यम से किया जाता है।
\documentclass{article}
\usepackage[T1]{fontenc}
%\usepackage[french]{babel}
\usepackage[width = 6cm]{geometry} % To force hyphenation here
\begin{document}
This is a lot of filler which is going to demonstrate how LaTeX hyphenates
material, and which will be able to give us at least one hyphenation point.
This is a lot of filler which is going to demonstrate how LaTeX hyphenates
material, and which will be able to give us at least one hyphenation point.
\end{document}
किसी भी पंक्ति को अन-कमेंट करने का प्रयास करें ताकि babel
पैकेज लोड हो सके और उसका प्रभाव देखा जा सके। (डिफ़ॉल्ट रूप से, LaTeX में हाइफ़नेशन के लिए अमेरिकी अंग्रेज़ी के मानक नियम लागू होते हैं।)
babel
पैकेज केवल हाइफ़नेशन तक सीमित नहीं है — यह उपयोग की जा रही भाषा के अनुसार कई अन्य कार्य करता है। यदि आपको इसकी विस्तृत जानकारी चाहिए, तो हमने कुछ अतिरिक्त विवरण उपलब्ध कराए हैं।
डिज़ाइन में परिवर्तन
यह उपयोगी होता है कि आप दस्तावेज़ कक्षा (document class) से स्वतंत्र रूप से डिज़ाइन के कुछ पहलुओं को समायोजित कर सकें। इनमें सबसे स्पष्ट उदाहरण पृष्ठ के मार्जिन (margins) हैं। उपरोक्त उदाहरण में हमने geometry
पैकेज का प्रयोग किया था, लेकिन अब चलिए एक ऐसा उदाहरण देखते हैं जो विशेष रूप से मार्जिन्स से संबंधित हो।
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[margin=1in]{geometry}
\begin{document}
Hey world!
This is a first document.
% ================
\chapter{Chapter One}
Introduction to the first chapter.
\section{Title of the first section}
Text of material in the first section
Second paragraph.
\subsection{Subsection of the first section}
Text of material in the subsection.
% ================
\section{Second section}
Text of the second section.
\end{document}
आपको यहाँ पर geometry
पैकेज लोड करने और न करने के बीच का प्रभाव स्पष्ट रूप से समझ आएगा।
नई कार्यक्षमता को जोड़ना
LaTeX की एक बड़ी विशेषता यह है कि आप हजारों पैकेजों में से चयन कर सकते हैं — जिनमें गणितीय पाठ लिखने के लिए, हाइपरलिंकिंग के लिए, रंगों के साथ उन्नत कार्यक्षमताओं के लिए, आदि शामिल हैं। हम आगे के पाठों में कुछ सामान्य और उपयोगी पैकेजों को विस्तार से देखेंगे।
कमांड परिभाषित करना
कभी-कभी आपके डॉक्यूमेंट के लिए कोई विशेष कमांड आवश्यक होती है — या तो ऐसी कोई कार्यक्षमता जो मौजूदा पैकेजों में नहीं मिलती, या फिर कोई ऐसा संक्षिप्त कमांड जिसे बार-बार उपयोग होने वाले किसी अभिव्यक्ति को दर्ज करने के लिए बनाया जाए।
निम्न उदाहरण एक ऐसा कमांड दर्शाता है जो किसी शब्द को एक विशेष शैली के साथ “कीवर्ड” के रूप में प्रस्तुत करता है।
\documentclass{article}
\usepackage[T1]{fontenc}
\newcommand\kw[1]{\textbf{\itshape #1}}
\begin{document}
Something about \kw{apples} and \kw{oranges}.
\end{document}
परिभाषा में [1]
यह दर्शाता है कि कमांड में कितने आर्ग्यूमेंट्स (arguments) होंगे — यहाँ पर एक है। #1
उस पहले आर्ग्यूमेंट को संदर्भित करता है जो कमांड के उपयोग के समय प्रदान किया जाएगा (इस उदाहरण में apples
या oranges
)। आप अधिकतम नौ आर्ग्यूमेंट्स तक का उपयोग कर सकते हैं, लेकिन प्रायः एक या कभी-कभी बिना तर्क वाला कमांड उपयोग करना सबसे उपयुक्त होता है।
कमांड परिभाषित करने का उद्देश्य केवल टाइपिंग को कम करना नहीं है, बल्कि यह स्टाइलिंग से संबंधित जानकारी को अलग करने में भी मदद करता है। यदि किसी समय यह तय किया जाए कि कीवर्ड्स के लिए कोई भिन्न शैली अपनाई जाए, तो पूरे डॉक्यूमेंट में बदलाव करने की आवश्यकता नहीं पड़ेगी। आपको केवल कमांड की ही परिभाषा को बदलना होगा। इस उदाहरण में हम xcolor
पैकेज को लोड कर रहे हैं ताकि रंगों का उपयोग किया जा सके, और फॉर्मेटिंग में बोल्ड की जगह नीला रंग (blue) प्रयोग कर रहे हैं।
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\newcommand\kw[1]{\textcolor{blue}{\itshape #1}}
\begin{document}
Something about \kw{apples} and \kw{oranges}.
\end{document}
ध्यान दें कि बहुत अधिक कमांड परिभाषित करना या बहुत सारे आर्ग्यूमेंट्स (multiple arguments) वाले कमांड परिभाषित करना डॉक्यूमेंट के स्रोत को समझना कठिन बना सकता है, क्योंकि यह अपरिचित सिंटैक्स का उपयोग करता है। इसलिए डॉक्यूमेंट-विशिष्ट कमांड्स परिभाषित करने की क्षमता का सावधानीपूर्वक उपयोग किया जाना चाहिए।
अभ्यास
अन्य यूरोपीय भाषाओं में कुछ पाठ लिखने का प्रयास करें और देखें कि babel
पैकेज हाइफ़नेशन को किस प्रकार प्रभावित करता है। आप इंटरनेट पर से कोई पाठ खोज सकते हैं और उपयुक्त विकल्पों का अनुमान लगा सकते हैं।
geometry
उदाहरण में मार्जिन बदलने का प्रयास करें। आप top
, bottom
, left
तथा right
मार्जिन को अलग-अलग रूप से कॉमा द्वारा पृथक सूची में निर्दिष्ट कर सकते हैं।
lipsum
पैकेज लोड करने का प्रयास करें और फिर अपने दस्तावेज़ में \lipsum
कमांड जोड़ें। क्या आप अनुमान लगा सकते हैं कि यह पैकेज उदाहरणों के लिए क्यों उपयोगी है?
\kw
की परिभाषा को बदलकर एक भिन्न शैली लाने का प्रयास करें।