एर्रोर्स (त्रुटियों) से निपटना
यह पाठ LaTeX डाक्यूमेंट्स में होने वाली कुछ सामान्य त्रुटियों को दर्शाता है, उनका अर्थ समझाता है, और उन्हें सुधारने के उपाय बताता है।
एक सामान्य वर्ड प्रोसेसिंग सिस्टम के विपरीत, LaTeX का कार्य “Edit/Run/View” आदि टूल्स से जुदा होता है, अत: यह ऐसा प्रतीत होता है जैसे आप किसी प्रोग्रामिंग भाषा के कंपाइलर के साथ काम कर रहे हैं। और जैसे प्रोग्रामिंग में उपयोगकर्ता इनपुट में त्रुटियाँ कर सकते हैं, वैसे ही LaTeX में भी आप से त्रुटियाँ हो सकती हैं, जिन्हें उपयोगकर्ता को त्रुटि संदेशों के माध्यम से पहचान कर सुधारना होता है।
सामान्य त्रुटियाँ
यह पृष्ठ कई सामान्य LaTeX त्रुटियों के उदाहरण प्रस्तुत करता है। प्रत्येक त्रुटि उदाहरण के साथ संबंधित त्रुटि संदेश की व्याख्या दी गई है। इन उदाहरणों को पहले से जान लेना उपयोगी हो सकता है, साथ ही संपादन सुविधाओं का उपयोग करके डाक्यूमेंट्स को सुधारने और त्रुटियों को ठीक करने का अभ्यास भी करें।
pdflatex not found
जब लोग शुरुआत करते हैं, तो उन्हें Windows पर दिखाई देने वाली पहली सामान्य त्रुटि यह होती है:
'pdflatex' is not recognized as an internal or external command,
operable program or batch file.
जब लोग शुरुआत करते हैं, तो उन्हें Linux पर दिखाई देने वाली पहली सामान्य त्रुटि यह होती है:
bash: pdflatex: command not found
यह कोई TeX त्रुटि नहीं है, बल्कि एक ऑपरेटिंग सिस्टम की त्रुटि है जो यह बताती है कि TeX या तो इंस्टॉल नहीं है या सिस्टम को नहीं मिल रहा है। एक आम गलती यह होती है कि उपयोगकर्ता केवल कोई एडिटर (जैसे TeXworks या TeXShop) इंस्टॉल कर लेते हैं, लेकिन किसी TeX सिस्टम (जैसे TeX Live या MiKTeX) को इंस्टॉल नहीं करते।
TeX त्रुटि संदेश की संरचना (Anatomy of a TeX error message)
\documentclass{article}
\usepackage[T1]{fontenc}
\newcommand\mycommand{\textbold{hmmm}}
\begin{document}
My command is used here \mycommand.
\end{document}
यह लॉग फाइल में एक बहु-पंक्तीय (multi-line) संदेश उत्पन्न करता है।
! Undefined control sequence.
\mycommand ->\textbold
{hmmm}
l.8 My command is used here \mycommand
.
?
पहली पंक्ति, जो
!
चिह्न से आरंभ होती है, त्रुटि का सामान्य प्रकार बताती है (इस मामले में यह एक अपरिभाषित कमांड है)।अगली दो पंक्तियाँ उस पंक्ति को दिखाती हैं जिसे TeX संसोधित कर रहा था, जिसमें लाइन ब्रेक यह दर्शाता है कि TeX कहाँ तक पहुँचा। अपरिभाषित कमांड आखिरी टोकन होता है जिसे पढ़ा गया, जैसे यहाँ
\textbold
। लाइन ब्रेक के बाद के टोकन{hmmm}
संभवतः एक आर्ग्युमेंट के रूप में पढ़े गए हैं, लेकिन अभी TeX द्वारा निष्पादित नहीं हुए हैं।सामान्यतः इस बिंदु पर कुछ अतिरिक्त पंक्तियाँ हो सकती हैं जो त्रुटि सन्देश का और अधिक सन्दर्भ प्रदान करती हैं।
अंतिम पंक्ति
l.
से शुरू होती है, इसके बाद लाइन नंबर होता है, और फिर उस स्रोत फाइल की पंक्ति होती है जहाँ त्रुटि पाई गई है।अंतिम पंक्ति में
?
होता है। यदि आप TeX को इंटरऐक्टिव मोड में चला रहे हैं, तो इस बिंदु पर आप उसे निर्देश दे सकते हैं। हालाँकि, अधिकतर एडिटर और ऑनलाइन प्रणालियाँ TeX को ऐसे मोड में चलाती हैं जो त्रुटियों पर नहीं रुकता, बल्कि दस्तावेज़ के बाकी हिस्सों को संसाधित करने की कोशिश करता है। यदि आप इंटरऐक्टिव मोड में हैं, तोs
टाइप करने से TeX आगे जारी रखेगा।
यहाँ ध्यान दें कि TeX को त्रुटि उस स्थान पर नहीं दिखती जहाँ पर परिभाषा की जाती है; और वास्तव में, यदि \mycommand
परिभाषित है लेकिन कभी उपयोग में नहीं लाया गया है, तो कोई त्रुटि (error) नहीं आएगी। इसलिए यद्यपि त्रुटि ‘लाइन 8’ पर दर्शाई गई है आपको, वास्तविकता में शायद त्रुटि ‘लाइन 4’ में हो। अतः संपूर्ण त्रुटि सन्देश को देखना महत्वपूर्ण होता है।
सावधान रहें कि कुछ एडिटर त्रुटि लॉग की केवल एक-पंक्ति की “सारांश” ही दिखाते हैं। यह विशेष रूप से तब भ्रामक हो सकता है जब ऐसा प्रदर्शित हो:
line 8: undefined command: ...\mycommand
क्योंकि यह ऐसा प्रतीत कराता है कि \mycommand
परिभाषित ही नहीं किया गया है।
मेल न खाती ब्रेसेस (Mismatched braces)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[leqno}{amsmath}
\begin{document}
\end{document}
यहाँ त्रुटि एक मेल न खाती हुई }
(बन्द ब्रेसे) की है, जो वैकल्पिक आर्ग्युमेंट (optional argument) को समाप्त करने के लिए उपयोग की गई है। इस बंद ब्रेसे के कारण LaTeX का विकल्प-पार्सिंग (option parsing) असफल हो जाता है, और परिणामस्वरूप आपको एक आंतरिक और अधिक उपयोगी न लगने वाली त्रुटि प्राप्त होती है।
! Argument of \@fileswith@ptions has an extra }.
हालाँकि त्रुटि का विवरण बहुत सहायक नहीं होता; लेकिन इसके बाद की दो पंक्तियाँ त्रुटि का स्थान सही ढंग से दर्शाती हैं। लाइन ब्रेक (linebreak) यह दिखाता है कि TeX ने कहाँ तक पढ़ा है, जिससे त्रुटि की स्थिति स्पष्ट हो जाती है।
l.4 \usepackage[leqno}
{amsmath}
गुम फाइलें (Missing Files)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmathz}
\begin{document}
\end{document}
इससे यह त्रुटि उत्पन्न होती है:
! LaTeX Error: File `amsmathz.sty' not found.
नोट: एक ही त्रुटि दो अलग-अलग कारणों से उत्पन्न हो सकती है; जैसे कि यहाँ एक साधारण टाइपो (वर्तनी की गलती), जिसे पैकेज का नाम सही करके ठीक किया जा सकता है, या यह भी संभव है कि वह फाइल वास्तव में आपके सिस्टम पर मौजूद नहीं है और उसे इंस्टॉल करने की आवश्यकता है।
डिस्प्ले मैथ में खाली पंक्तियाँ (Blank lines in display math)
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
Some text
\begin{equation}
1=2
\end{equation}
\end{document}
यह एक थोड़ी रहस्यमय त्रुटि उत्पन्न करता है:
! Missing $ inserted.
लेकिन इसका समाधान सरल है, गणित के वातावरण में रिक्त पंक्तियों की अनुमति नहीं है और उन्हें हटा दिया जाना चाहिए।
अभ्यास
दिए गए उदाहरणों में त्रुटियों को ठीक करने का प्रयास करें। विभिन्न त्रुटियों वाले छोटे डॉक्यूमेंट बनाएँ और त्रुटि संदेशों के स्वरूप को नोट करें।