पाठ ९

क्रॉस-रेफरेंसिंग

यह पाठ यह बताता है कि डॉक्यूमेंट में किसी भी चित्र (figures), टेबल (tables) और अनुभाग (sections) जिन्हें किसी नंबर से पहचाना जा सकता है, उन्हें वापस कैसे रेफर किया जा सकता है।

जब आप कोई भी लंबा डॉक्यूमेंट लिखते हैं, तो आपको यदि किसी पहले से बनाए गए चित्रों, टेबल्स या समीकरणों (जिनकी पहचान किसी नंबर के द्वारा होती है) का कहीं ज़िक्र करना होता है, तो आपको यहाँ बताई गई प्रक्रिया का पालन करना होता है। अच्छी बात यह है कि LaTeX यह नंबर अपने आप जोड़ सकता है; हमें बस इसकी सही सेटिंग करनी होती है।

\label और \ref की प्रक्रिया

अगर आप चाहते हैं कि LaTeX आपके डॉक्यूमेंट में किसी विशेष स्थान को याद रखे, तो आपको उसे पहले label करना होगा, और फिर जहाँ ज़रूरत हो वहाँ उसका ref (संदर्भ) देना होता है।

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}
Hey world!

This is a first document.

\section{Title of the first section}

Text of material for the first section.


\subsection{Subsection of the first section}
\label{subsec:labelone}

Text of material for the first subsection.
\begin{equation}
  e^{i\pi}+1 = 0
\label{eq:labeltwo}
\end{equation}

In subsection~\ref{subsec:labelone} is equation~\ref{eq:labeltwo}.
\end{document}

दो \label{...} कमांड होते हैं, एक उप-अनुभाग के बाद और एक समीकरण वातावरण के अंदर। ये पिछली पंक्ति के \ref{...} कमांड से जुड़े हुए होते हैं।
जब आप LaTeX को चलाते हैं, यह labels की जानकारी LaTeX एक सहायक फ़ाइल (auxiliary file) में सेव कर लेता है।

\label{subsec:labelone} के लिए, LaTeX जानता है कि वह अब एक उप-अनुभाग में है, इसलिए यह उप-अनुभाग का नंबर सेव कर लेता है।

\label{eq:labeltwo} के लिए, LaTeX जानता है कि हाल ही में जो वातावरण चल रहा है वह एक समीकरण है, इसलिए यह उस समीकरण की जानकारी सेव करता है।
जब आप संदर्भ माँगते हैं, तो LaTeX वह जानकारी सहायक फ़ाइल से ले लेता है।

subsec: और eq: का उपयोग LaTeX द्वारा नहीं किया जाता; यह सिर्फ़ यह ट्रैक करने के लिए होता है कि अभी हाल ही में क्या प्रोसेस किया गया है। लेकिन जब आप पैराग्राफ या किसी प्रकार का टेक्स्ट लिख रहे होते हैं, तो ये आपको याद रखने में मदद करते हैं कि label किस बारे में है।

आप ऐसे रेफरेन्सेस / संदर्भ देख सकते हैं जो आउटपुट PDF में मोटे अक्षरों वाले दो प्रश्नवाचक चिन्हों (??) के रूप में दिखाई दे रहे हैं। इसका कारण यह है कि सहायक फ़ाइल की वजह से, पहली बार जब आप डॉक्यूमेंट को कंपाइल कर रहे होते हैं, तो label सेव नहीं हुए होते हैं। ऐसी स्थिति में आप LaTeX को एक बार और चलाएँ और फिर देखिये सब ठीक हो जाएगा। (अक्सर लेखन के समय आप LaTeX को कई बार चलाते हैं, इसलिए यह कोई परेशानी की बात नहीं होती।)

ध्यान दें कि संदर्भों से पहले टिल्डा (~) कैरेक्टर लगाए गए हैं। आप नहीं चाहेंगे कि subsection और उसके नंबर के बीच, या equation और उसके नंबर के बीच लाइन ब्रेक हो। टिल्डा लगाने का मतलब है कि LaTeX वहाँ लाइन ब्रेक नहीं करेगा।

\label कहाँ लगाएँ?

\label कमांड हमेशा पिछले नंबर वाले तत्व को संदर्भित करता है: जैसे कोई अनुभाग, समीकरण, फ्लोट आदि। इसका मतलब है कि \label को हमेशा उस चीज़ के बाद आना चाहिए जिसे आप संदर्भित करना चाहते हैं। विशेष रूप से, जब आप फ्लोट्स बनाते हैं, तो \label को \caption के बाद (या बेहतर यह कि उसी में), लेकिन फ्लोट वातावरण के अंदर देना चाहिए।

अभ्यास

परीक्षण डॉक्यूमेंट में कुछ नए नंबर वाले भाग (sections, subsections, enumerated lists) जोड़ें और पता करें कि \label कमांड को काम करने के लिए कितनी बार डॉक्यूमेंट पर कम्पाइलर को रन करना पड़ता है।

कुछ फ्लोट्स जोड़ें और देखें कि जब आप \label को \caption से पहले लगाते हैं, तो क्या होता है; क्या आप इसका परिणाम पहले से अनुमानित कर सकते हैं?

क्या होता है अगर आप किसी समीकरण के लिए \label को \end{equation} के बाद लगाते हैं?