
सभी को नमस्कार। हाल ही में, मैंने छात्र जीवन में एक महत्वपूर्ण मोड़ को भी पछाड़ दिया - एक स्नातक की थीसिस। इस उल्लेखनीय घटना के कई औपचारिक विवरणों में, मानक नियंत्रण विशेष रूप से ध्यान देने योग्य है। नहीं, मैं समझता हूं और जोरदार समर्थन करता हूं कि एक शैक्षणिक पाठ के डिजाइन के लिए मानकों सहित मानक
आवश्यक हैं। यह सिर्फ इतना है कि हमारे मानक, पश्चिमी लोगों के विपरीत, बल्कि मूर्खतापूर्ण हैं। वे न तो स्याही और न ही कागज बचाते हैं, वे नामकरण द्वारा साहित्य की खोज को सरल नहीं करते हैं, लेकिन नाम के पढ़ने को जटिल करते हैं। इस तथ्य का उल्लेख नहीं करने के लिए कि मानक का पाठ माइक्रोसॉफ्ट वर्ड संपादक में काम करने वाले लोगों द्वारा डिज़ाइन और वर्णित किया गया है। फिर से, मेरे पास वर्ड के खिलाफ कुछ भी नहीं है, यह एक शक्तिशाली प्रणाली है। लेकिन इसमें तकनीकी पाठ टाइप करने के लिए असुविधाजनक है, और लचीलेपन के संदर्भ में यह डोनाल्ड नुथ - लाटेक्स के अमर निर्माण के लिए कई बार हारता है।
तो, डिप्लोमा का मेरा लेखन इस तथ्य से शुरू हुआ कि मैंने डिजाइन DSTU 3008-95 के लिए यूक्रेनी मानक के मानदंडों को स्थापित करने में 4 घंटे बिताए। जहां तक मुझे पता है, यह रूसी GOST के साथ लगभग पूरी तरह से सुसंगत है। मुझे पता था कि तैयार किए गए समाधान थे (उदाहरण के लिए,
अव्यवस्था ), लेकिन कुछ परीक्षणों के बाद मैंने प्रत्येक भाग को स्वयं कॉन्फ़िगर करना पसंद किया। प्रशिक्षण के लिए। प्रशिक्षण एक सफलता थी - मैंने LaTeX के बारे में नई चीजों की एक खाई सीखी, इस राक्षस को पूरी तरह से सीखना असंभव है :-)
कटौती के तहत, मैं प्रत्येक विशिष्ट भाग और लेखन में उनके उपयोग की प्रक्रिया, साथ ही साथ विभिन्न छोटी चीजों को पूरी तरह से वर्णित करूंगा जो डिप्लोमा के लेखन को और भी अधिक सरल बनाते हैं। मैं आपको तुरंत चेतावनी देता हूं: कहीं, मेरे फैसले बैसाखी की तरह लग सकते हैं। कहीं वे सार्वभौमिक तो नहीं हैं। मुझे यह पता है, टिप्पणी में टिप्पणियों और सुझावों को समझें, स्वीकार करें और उनका स्वागत करें ;-)
फौजों को घर देना
चलो रिक्त के साथ शुरू करते हैं। मुझे लगता है कि आपके पास वितरण किट स्थापित है (विंडोज पर
MiKTeX या लिनक्स / मैक पर समान) और सिरिलिक
PsCyr फोंट को
निर्देशों के अनुसार
कॉन्फ़िगर किया गया है। "फ्लाई पर" अतिरिक्त पैकेजों की स्थापना को सक्षम करने के लिए मत भूलना - आपको उनमें से बहुत कुछ की आवश्यकता होगी :)
मानक को सभी पाठ को 14 टाइम्स न्यू रोमन फ़ॉन्ट में डेढ़ रिक्ति के साथ लिखा जाना चाहिए। अंतिम एक Microsoft Word शब्दावली है: LaTeX में इसके एनालॉग की रचना करने के लिए,
extsizes
पैकेज को कनेक्ट करें, जो दस्तावेज़ वर्ग के मापदंडों में
extsizes
जोड़ता है और बाकी सब को कॉन्फ़िगर करता है, जैसा कि नीचे वर्णित है:
\ documentclass [ a4paper,14pt,russian ]{ extreport }
\usepackage { extsizes }
\usepackage { cmap } % pdf
\usepackage [ T2A ]{ fontenc }
\usepackage [ utf8 ]{ inputenc }
\usepackage [ russian ]{ babel }
\usepackage { pscyr }
\usepackage { graphicx } %
\usepackage { amssymb,amsfonts,amsmath,amsthm } %
\usepackage { indentfirst } %
\usepackage [ usenames,dvipsnames ]{ color } %
\usepackage { makecell }
\usepackage { multirow } %
\usepackage { ulem } %
\linespread { 1.3 } %
\renewcommand { \rmdefault }{ ftm } % Times New Roman
\frenchspacing
\begin { document }
\end { document }
सेटिंग
\linespread{1.3}
(लाइन स्पेसिंग को 1.3 गुना बढ़ाने के लिए) मोटे तौर पर वर्ड वर्ल्ड में "डेढ़ इंटरवल" कहलाता है।
cmap
पैकेज में परिणामी पीडीएफ में एक वर्ण तालिका शामिल है (मैं PDFLaTeX का उपयोग करता हूं), ताकि एन्कोडिंग को विकृत किए बिना पीडीएफ में सिरिलिक पाठ को कॉपी और खोज करना संभव हो जाए। स्रोत फ़ाइलों के रूप में, मैं उन्हें UTF-8 एन्कोडिंग में संग्रहीत करता हूं, आपकी सामान्य सेटिंग्स के लिए,
inputenc
साथ पैरामीटर के मूल्य को
inputenc
। मैं शेष संकुल के उद्देश्य पर थोड़ी देर बाद टिप्पणी करूंगा, जब मैं सीधे डिप्लोमा के लेखन पर चर्चा करूंगा, और डिजाइन के साथ प्रस्तावना नहीं।
पृष्ठ पर अंक लगाना
अंकुरण ऊपरी दाएं कोने में होना चाहिए। मेरे मामले में, यह नंबर 5 से शुरू होता है, क्योंकि पहले 4 पेज कवर पेज, असाइनमेंट शीट, कैलेंडर प्लान और अन्य नौकरशाही द्वारा कब्जा किए जाते हैं। उनके लिए प्रपत्र doc / docx में भेजे गए थे, और उन्हें LaTeX में इस डिज़ाइन का अनुकरण करने के बजाय समय बिताने के बजाय उन्हें प्रिंट करना बहुत आसान है;)
fancyhdr
हेडर पैकेज को कनेक्ट
fancyhdr
, जो पेज हेडर और
fancyhdr
लिए डिज़ाइन किया गया है, और इसमें किसी भी प्रकार की चूक को अक्षम करें। हेडर के दाहिने कोने में नंबर (
\thepage
) पेज को छोड़कर पेज पूरी तरह से खाली हो जाता है।
\usepackage { fancyhdr }
\pagestyle { fancy }
\fancyhf { }
\fancyhead [ R ]{ \thepage }
\fancyheadoffset { 0mm }
\fancyfootoffset { 0mm }
\setlength { \headheight }{ 17pt }
\renewcommand { \headrulewidth }{ 0pt }
\renewcommand { \footrulewidth }{ 0pt }
\fancypagestyle { plain }{
\fancyhf { }
\rhead { \thepage }}
\setcounter { page }{ 5 } % №5
यह ध्यान दिया जाना चाहिए कि अध्याय का पहला पृष्ठ डिफ़ॉल्ट रूप से सादे पृष्ठ शैली का उपयोग करता है। इसे
fancyhdr
संदर्भ में भी पुनर्परिभाषित किया जाना चाहिए, ताकि अध्याय के पहले पन्नों पर भी संख्याएँ डाल दी जाएँ (देखें
\fancypagestyle
)।
छवियों और तालिकाओं के लिए कैप्शन
हम हस्ताक्षर प्रारूप को कॉन्फ़िगर करेंगे, जिसके लिए हम पहले
caption
पैकेज को
caption
। चूंकि मुझे कई इंटरकनेक्टेड सब-पार्ट्स के साथ विस्तृत चित्रण पसंद है, इसलिए हम
subcaption
पैकेज भी शामिल करेंगे। मानक के अनुसार, आकृति का नाम आकृति के नीचे स्थित है, और तालिका का नाम तालिका के ऊपर है। आपको इन स्थानों की स्वयं निगरानी करनी होगी (नीचे देखें), लेकिन आप इस कानून के बारे में पैकेज को बता सकते हैं ताकि यह तदनुसार रिक्त स्थान के आवंटन का अनुकूलन कर सके।
\usepackage [ tableposition=top ]{ caption }
\usepackage { subcaption }
\DeclareCaptionLabelFormat { gostfigure }{ #2 }
\DeclareCaptionLabelFormat { gosttable }{ #2 }
\DeclareCaptionLabelSeparator { gost }{ ~---~ }
\captionsetup { labelsep=gost }
\captionsetup [ figure ]{ labelformat=gostfigure }
\captionsetup [ table ]{ labelformat=gosttable }
\renewcommand { \thesubfigure }{ \asbuk { subfigure }}
यहां,
\DeclareCaptionLabelFormat
का उपयोग करते हुए
\DeclareCaptionLabelFormat
नया कस्टम हस्ताक्षर प्रारूप कॉन्फ़िगर किया गया है, जिसे तब दस्तावेज़ के सभी आरेखण और तालिकाओं को सौंपा गया है। इसका पहला पैरामीटर # 1 मानक लेबल पाठ है (मैंने इसे एक अलग पंक्ति के रूप में कॉन्फ़िगर नहीं करना पसंद किया, लेकिन # 1 का उपयोग किए बिना स्पष्ट रूप से लिखने के लिए), दूसरा पैरामीटर # 2 चित्र / तालिका की संख्या है।
\DeclareCaptionLabelSeparator
कैप्शन लेबल और आपके द्वारा निर्दिष्ट पाठ के बीच विभाजक सेट करता है। हमारे मामले में, यह एक औसत डैश है।
हमें अंतिम पंक्ति में भी टिप्पणी करनी चाहिए। चूंकि मैं कभी-कभी दृष्टांतों को उप-भागों में विभाजित करता हूं, जो मुझे एक सब-
subfigure
पैकेज बनाने की अनुमति देता है, इन सबपार्ट्स को क्रमांकित करने की आवश्यकता होती है। यह उन्हें छोटे अक्षरों में क्रम में संख्या करने के लिए प्रथागत है - हालांकि, हमारे मामले में, ये सिरिलिक वर्णमाला के अक्षर होने चाहिए, न कि लैटिन वर्णमाला के! काउंटरेल का सिरिलिक प्रतिनिधित्व (
arabic
,
roman
,
latin
आदि के सुप्रसिद्ध अभ्यावेदन के साथ सादृश्य द्वारा) पहले से ही
babel
पैकेज में लागू किया गया है। इसे छोटे सिरिलिक अक्षरों के लिए
\asbuk
\Asbuk
और बड़े के लिए
\Asbuk
कहा जाता है।
मैं एक तस्वीर के विशिष्ट डिजाइन का एक उदाहरण दूंगा:
\begin { figure }[ ht ]
\centering
\begin { subfigure }[ b ]{ 0.3 \textwidth }
\centering
$$ \begin { array }{ l }
F \to x \ ;| \ ; y \ ;| \ ; (S) \\
T \to F \ ;| \ ; T \ast F \\
S \to T \ ;| \ ; S + T \\
\end { array } $ $
\ caption { }
\end { subfigure } %
\begin { subfigure }[ b ]{ 0.6 \textwidth }
\centering
\includegraphics [ scale=0.7 ]{ parseTree.png }
\ caption { }
\end { subfigure }
\ caption { (a) $G$ ;
() $x+y \ast y$ $G$ . }
\ label { fig_parsetree }
\end { figure }
और टेबल:
\begin { table }[ ht ]
\ caption { }
\ label { tab_weight }
\centering
\begin { tabular }{ |c|c|c|c|c|c|c|c|c| }
\ hline \multirow { 2 }{ * }{ $x_i$ } & \multicolumn { 4 }{ c| }{ $x_j$ } &
\multicolumn { 2 }{ c| }{ } & \multicolumn { 2 }{ c| }{ } \\
\cline { 2-9 } & $X_1$ & $X_2$ & $X_3$ & $X_4$ & $w_i$ &
${ K_ \text { }} _i$ & $w_i$ & ${ K_ \text { }} _i$ \\
\ hline $X_1$ & 1 & 1 & 1.5 & 1.5 & 5 & 0.31 & 19 & 0.32 \\
\ hline $X_2$ & 1 & 1 & 1.5 & 1.5 & 5 & 0.31 & 19 & 0.32 \\
\ hline $X_3$ & 0.5 & 0.5 & 1 & 0.5 & 2.5 & 0.16 & 9.25 & 0.16 \\
\ hline $X_4$ & 0.5 & 0.5 & 1.5 & 1 & 3.5 & 0.22 & 12.25 & 0.20 \\
\ hline \multicolumn { 5 }{ |c| }{ : } & 16 & 1 & 59.5 & 1 \\
\ hline
\end { tabular }
\end { table }
यह सुंदर तालिकाओं को बनाने के लिए
\multirow
और
\multicolumn
कमांड के उपयोग पर ध्यान देने योग्य है। वे क्रमशः HTML <table> पैरामीटर:
rowspan
और
colspan
के अनुरूप हैं। सच है, पहले
multirow
पैकेज को जोड़ने की आवश्यकता है।
डिजाइन का परिणाम नीचे दिखाया गया है।
ड्राइंग के लिए:
तालिका के लिए:
सुर्खियों में
DSTU 3008-95 सुर्खियों में सिर्फ एक गाना है। या यों कहें, एक शोकाकुल विचार। हेडर को संरेखित करने के लिए सभी आवश्यकताओं को एक प्रकार की रचनात्मक आत्मा द्वारा शब्द के रूप में तैयार किया गया था: यहां लंघन एक पंक्ति है, यहां दो लाइनें हैं, और डेढ़ अंतराल है, और यहां दोहरी है ... नतीजतन, कुछ समय बाद एक सुंदर समाधान के साथ आने की कोशिश करते हुए, मुझे सभी स्थिरांक खोजने पड़े। पैडिंग और रिक्ति को मैन्युअल रूप से और उन्हें
पिक्सेल बिंदुओं में हार्डकोड करें। मुझे लगता है कि यह प्रोग्रामिंग की सबसे घृणित शैली है जिसे मैंने अपने पूरे "कैरियर" में सहारा लिया है। हालांकि इस मामले में, LaTeX का प्रोग्रामिंग से कोई लेना-देना नहीं है :)
हेडर को प्रारूपित करने के लिए, हम
titlesec
पैकेज का उपयोग करते हैं। मानक के अनुसार, अध्याय (वे खंड हैं) केंद्र में लिखे गए हैं, "अध्याय एन" लाइन से पहले, और उपखंड और पैराग्राफ अध्याय के भीतर गिने जाते हैं, और उन्हें इंडेंट किया जाता है। सब कुछ बोल्ड में टाइप किया गया है, ऊपरी मामले में अध्याय शीर्षकों के साथ भी।
शीर्षक का
\titleformat
से कॉन्फ़िगर किया गया है। उसके पास निम्न विकल्प हैं:
- पहला कस्टम शीर्षक का स्तर है (उदाहरण के लिए, अध्याय या अनुभाग);
- दूसरा वैकल्पिक हैडर फॉर्म है। इसके स्थान की वैश्विक शैली का वर्णन करता है - चाहे वह केंद्र में "लटका" हो, पाठ के सामने एक सामान्य बोल्ड लाइन में मुद्रित हो, पाठ दर्ज करें, हाशिये पर रखा जाए, या कुछ और। पैकेज मैनुअल में रूपों की एक पूरी सूची दी गई है; यहां मैं केवल अध्याय के डिजाइन के लिए प्रदर्शन फॉर्म का उपयोग करता हूं;
- तीसरा पैरामीटर वह कमांड है जिसे पूरे हेडर को प्रिंट करने से पहले लगाया जाता है;
- चौथा पैरामीटर लेबल डिजाइन है;
- पांचवां पैरामीटर - लेबल और शीर्षक पाठ के बीच की दूरी (क्षैतिज या ऊर्ध्वाधर, फॉर्म पर निर्भर करता है);
- छठा पैरामीटर - हेडर टेक्स्ट प्रिंट होने से पहले कहे जाने वाले कमांड;
- सातवां वैकल्पिक - हेडर के टेक्स्ट को प्रिंट करने के बाद जो कमांड दिया जाता है।
ये आदेश आपको अध्याय शीर्षक के पाठ के अनिवार्य पूंजीकरण के अपवाद के साथ, सभी आवश्यक डिजाइन प्राप्त करने की अनुमति देते हैं।
\MakeUppercase
अनन्य रूप से एक पैरामीटर के साथ काम करता है, और इसका उपयोग "
\bffamily
" जैसे प्रिंट प्रारूप को "अभी और
हमेशा के लिए समूह के अंत में" स्विच करने के लिए नहीं किया जा सकता है। इस प्रकार, मैं शीर्षक लेबल (शब्द "अध्याय" या "परिशिष्ट") को कैपिटल करने के लिए इसे लागू करने में सक्षम था, लेकिन शीर्षक पाठ को अपने आप कैप में मुद्रित करना पड़ा। ठीक है, कुछ भी नहीं, निषिद्ध बटन को कई बार दबाने पर यह इतना डरावना नहीं होता है :)
\usepackage { titlesec }
\titleformat { \chapter }[ display ]
{ \filcenter }
{ \MakeUppercase { \chaptertitlename } \thechapter }
{ 8pt }
{ \bfseries }{ }
\titleformat { \section }
{ \normalsize \bfseries }
{ \thesection }
{ 1em }{ }
\titleformat { \subsection }
{ \normalsize \bfseries }
{ \thesubsection }
{ 1em }{ }
%
\titlespacing* { \chapter }{ 0pt }{ -30pt }{ 8pt }
\titlespacing* { \section }{ \parindent }{ *4 }{ *4 }
\titlespacing* { \subsection }{ \parindent }{ *4 }{ *4 }
\parindent
के लिए इंडेंटेशन सेटिंग में
\parindent
ध्यान दें, उन्हें पैरा इंडेंटेशन के साथ संरेखित करने के लिए मजबूर करें।
और यह कैसे यह सब अब साधारण
\chapter
और
\section
मुद्रित करते समय दिखता है:
खेतों
पेज मार्जिन को अनुकूलित करना आज के कार्यों में सबसे आसान है:
\usepackage { geometry }
\geometry { left=3cm }
\geometry { right=1.5cm }
\geometry { top=2.4cm }
\geometry { bottom=2.4cm }
सूचियों
मानक में सूचियों की आवश्यकताएं इस प्रकार हैं:
- पहले स्तर पर गिने जाने वाले सूचियों को "ए", "बी)", "सी)" ... दूसरे पर - "1)", "2)," 3) के रूप में चिह्नित किया गया है। हां, हां, मुझे यहां तर्क की एक बूंद भी नहीं दिख रही है।
- अव्यवस्थित सूचियों को हाइफ़न किया गया है।
दुर्भाग्य से, LaTeX को अंतरिक्ष की
itemize
बड़ी मात्रा के
itemize
और वातावरण को घेरना पसंद है, उनके लिए एक विशेष इंडेंटेशन बनाना। इस बुरी आदत को दूर करने के लिए, आप
enumitem
पैकेज का उपयोग कर सकते हैं और इसे
nolistsep
सेट कर सकते हैं, जो सभी अतिरिक्त इंडेंट को निष्क्रिय कर देता है। सच है,
enumitem
को
asbuk
काउंटरों की बिल्कुल नई प्रस्तुति के बारे में कुछ भी नहीं पता है, जिसके बारे में मैंने ऊपर बात की थी, इसलिए आपको इसे
\AddEnumerateCounter
साथ इंगित करने की आवश्यकता है। इसका तीसरा पैरामीटर व्यापक प्रतिनिधित्व का एक उदाहरण है (पैकेज मुद्रण करते समय इस चौड़ाई पर ध्यान केंद्रित करेगा)। किसी कारण से (बिना कारण के) मुझे ऐसा लगता है कि टाइम्स न्यू रोमन में सिरिलिक वर्णमाला का सबसे चौड़ा अक्षर ठीक "द" है। किसी भी मामले में, जो व्यक्ति "a" से "m" की लंबाई के साथ एक क्रमांकित सूची बनाता है या मेरे लिए स्वास्थ्य अधिकारियों के कम ध्यान देने योग्य है, जैसा कि :)
\usepackage { enumitem }
\ makeatletter
\AddEnumerateCounter { \asbuk }{ \@asbuk }{ ) }
\ makeatother
\setlist { nolistsep }
\renewcommand { \labelitemi }{ - }
\renewcommand { \labelenumi }{ \asbuk { enumi } ) }
\renewcommand { \labelenumii }{ \arabic { enumii } ) }
सामग्री की तालिका
सामग्री की तालिका प्रस्तावना सेटिंग प्रक्रिया का दूसरा सबसे दर्दनाक चरण है। यह मॉडल के अनुसार ट्यून किया जाना है, इस संबंध में मानक बहुत अधिक क्रिया नहीं है। पैटर्न के अनुसार ट्यूनिंग का परिणाम अंतराल के बीच "जादू स्थिरांक" का एक और गुच्छा है।
विचार करने के लिए विभिन्न छोटी चीजों की सूची में शामिल हैं:
- शब्द "पृष्ठ" पृष्ठ संख्या के साथ कॉलम के ऊपर;
- बोल्ड और ऊपरी मामले (और प्रारंभिक "अध्याय एन") में अध्यायों को हाइलाइट करना;
- सामान्य अध्यायों के स्तर पर विशेष वर्गों ("परिचय", "संक्षिप्तीकरण की सूची", "निष्कर्ष", "संदर्भों की सूची" ...) की सामग्री की तालिका में शामिल किया गया है, लेकिन शब्द "अध्याय" और क्रमांक के बिना;
- सामग्री की तालिका में उपखंड और पैराग्राफ को शामिल करना, लेकिन उप-अनुच्छेद और नीचे नहीं;
- और सुंदर संरेखण की एक किस्म।
सौभाग्य से, एक
tocloft
पैकेज है। मैं इस नोट के पाठ में इसके
दस्तावेज़ीकरण की नकल नहीं करने जा रहा हूं, इसमें अनगिनत कमांड शामिल हैं जो सामग्री की तालिका में शाब्दिक रूप से हर पिक्सेल को कॉन्फ़िगर करते हैं। ये सभी कमांड "की शैली में प्रतिस्थापन हैं, लेकिन उपधारा के नाम के पाठ और बिंदीदार रेखा की शुरुआत के बीच इसे टाइप करें।" प्रस्तावना में, मैं 9 ऐसे आदेशों का उपयोग करता हूं, जिनके द्वारा और बड़ी सामग्री की तालिका की उपस्थिति को अनुकूलित करें:
\usepackage { tocloft }
\renewcommand { \cfttoctitlefont }{ \hspace { 0.38 \textwidth } \bfseries \MakeUppercase }
\renewcommand { \cftbeforetoctitleskip }{ -1em }
\renewcommand { \cftaftertoctitle }{ \ mbox { } \hfill \\ \ mbox { } \hfill { \footnotesize . } \vspace { -2.5em }}
\renewcommand { \cftchapfont }{ \normalsize \bfseries \MakeUppercase { \chaptername } }
\renewcommand { \cftsecfont }{ \hspace { 31pt }}
\renewcommand { \cftsubsecfont }{ \hspace { 11pt }}
\renewcommand { \cftbeforechapskip }{ 1em }
\renewcommand { \cftparskip }{ -1mm }
\renewcommand { \cftdotsep }{ 1 }
\setcounter { tocdepth }{ 2 } % — subsection
ये आदेश उपरोक्त सूची से सभी आवश्यक छोटी चीजों को कॉन्फ़िगर करते हैं, एक को छोड़कर। विशेष वर्गों को एक विशेष तरीके से संभालना होगा।
विशेष खंड (अमूर्त, परिचय, संक्षिप्त सूची, निष्कर्ष, संदर्भों की सूची)
सूचीबद्ध अनुभाग विशेष रूप से बनाए गए हैं। सबसे पहले, उनमें से प्रत्येक एक नए पृष्ठ से शुरू होता है। यह कोई समस्या नहीं है -
\newpage
कोई
\newpage
कमांड जानता है। दूसरे, उनका शीर्षक पृष्ठ के केंद्र में बोल्ड अपर केस में तैयार किया गया है ... और इसे दो पंक्तियों में पाठ से अलग किया गया है। और अंत में, इस बकवास को पूरा करने के लिए, विशेष खंड अध्याय स्तर पर सूचीबद्ध हैं, लेकिन क्रमांकित नहीं हैं, और अध्याय नहीं हैं। ऐसा महसूस करें कि किसी के पास करने को कुछ नहीं था?
स्पष्ट कारणों के लिए
\chapter*
कमांड उपयुक्त नहीं है: जिन अध्यायों को शुरू किया गया है वे सामग्री की तालिका में शामिल नहीं हैं। इसके अलावा, आपको पाठ से पहले किसी तरह डबल लाइन ब्रेक की व्यवस्था करने की आवश्यकता है - ठीक है, क्या आप हर बार मैन्युअल रूप से
\newline
नहीं लिखते हैं?
हम आसान तरीकों की तलाश नहीं कर रहे हैं। मैंने अपनी तरह का सेक्शन बनाने का फैसला किया। जैसा कि यह निकला, यह इतना मुश्किल नहीं है।
एक खंड को परिभाषित करने के लिए (मैंने इसे
likechapter
कहा है), पहले आपको उचित प्रारूपण कमांड को निर्धारित करने की आवश्यकता है। अनुभाग नाम के केंद्र और पूंजीकरण की व्यवस्था करने के लिए - बस थूक। जो मैंने किया -
\likechapterheading
उस अनुभाग नाम को प्रिंट करता है जो इसे पास करना चाहिए।
\newcommand { \empline }{ \ mbox { } \newline }
\newcommand { \likechapterheading }[ 1 ]{
\begin { center }
\ textbf { \MakeUppercase { #1 }}
\end { center }
\empline }
हालांकि, अनुभाग को सामग्री की तालिका में शामिल करने और अध्याय के स्तर के साथ गठबंधन करने की भी आवश्यकता है। और यहां आपको पहले से ही थोड़ा चकमा देने की आवश्यकता है।
सैद्धांतिक रूप से, सामग्री की तालिका में एक नई पंक्ति को जोड़ने का काम
\addcontentsline
साथ किया जाता है। इसके तीन मापदंड हैं:
- लाइन को जोड़ने के लिए सूची का प्रकार। हमारे मामले में, यह सामग्री की तालिका - तालिका है।
- जिस स्तर पर लाइन लगानी है।
- जोड़ने के लिए स्ट्रिंग पाठ।
पहले और तीसरे के साथ, सब कुछ स्पष्ट है। लेकिन आप केवल "अध्याय" को दूसरे के रूप में नहीं लिख सकते हैं, क्योंकि सहायक
tocloft
, जिसे हम थोड़ा ऊपर सेट करते हैं, लाइन के पहले "अध्याय" शब्द को प्रिंट करेगा। केवल एक ही रास्ता है - अंत तक जाएं और अपना स्वयं का अनुभाग स्तर निर्धारित करें।
जब LaTeX सामग्री की तालिका में एक विशिष्ट स्तर प्रिंट करता है, तो इसे आंतरिक कमांड
\l@XXX
, जहां XXX स्तर (अध्याय, अनुभाग, आदि) का नाम है। इस कमांड के दो पैरामीटर हैं - हेडर टेक्स्ट और पेज नंबर। टीम का लक्ष्य सीधे एक धराशायी लाइन, इंडेंटेशन और आपकी जरूरत की सभी चीजों के साथ कंटेंट लाइन के टेबल को प्रिंट करना है। यदि हम अपने स्वयं के स्तर को परिभाषित करना चाहते हैं, तो हमें अपने स्तर के नाम के लिए इस तरह की कमांड को परिभाषित करने की आवश्यकता है। फिर,
\addcontentsline
कमांड को संसाधित करने की प्रक्रिया में,
\addcontentsline
इसके दूसरे पैरामीटर को देखेगा, इसकी परिभाषाओं के बीच संबंधित
\l@XXX
ढूंढें, जहां XXX दूसरा पैरामीटर प्रतिस्थापित किया गया है, और जिससे सामग्री की तालिका में पंक्ति समाप्त हो जाती है।
यह कमांड
\l@likechapter
निर्धारित करने के लिए बनी हुई है (साथ ही, इसके लिए धराशायी लाइन में बिंदुओं के बीच की अवधि के लिए अवधि निर्धारित करना, जैसे कि
tocloft
), और
\likechapter
की परिभाषा समाप्त करना:
\ makeatletter
\renewcommand { \@dotsep }{ 2 }
\newcommand { \l @likechapter }[ 2 ]{ { \bfseries \@dottedtocline { 0 }{ 0pt }{ 0pt }{ #1 }{ #2 }}}
\ makeatother
\newcommand { \likechapter }[ 1 ]{
\likechapterheading { #1 }
\addcontentsline { toc }{ likechapter }{ \MakeUppercase { #1 }}}
अब आप कार्य के परिणाम को देख सकते हैं। यहाँ सामग्री की तालिका की शुरुआत है:

विशेष खंड दिखाने का कोई मतलब नहीं है, मुझे लगता है। यह पृष्ठ के केंद्र में केवल बोल्ड कैपिटलाइज्ड टेक्स्ट है, जो
\likechapter{}
साथ छपा है।
संदर्भ
स्रोतों से संबंध बनाते समय, मैंने BibTeX का उपयोग नहीं करने का फैसला किया, जिसका मुझे एक हजार बार बाद में पछतावा हुआ। पत्रिका के अगले अंक का वर्णन करते समय इन सभी स्लैश, अवधियों, अल्पविरामों और डैश को ध्यान से रखने की आवश्यकता है। लेकिन, दुर्भाग्य से, मैंने पहले BibTeX का उपयोग नहीं किया था, और इसके डिज़ाइन के कॉन्फ़िगरेशन से निपटने की मेरी इच्छा पहले ही प्रस्तावना के अंत तक समाप्त हो गई थी। क्या अफ़सोस है।
वैसे, मुझे यकीन है कि पहले से ही वर्णित
डिस्बर्स प्रोजेक्ट में पहले से ही कॉन्फ़िगर की गई BibTeX फाइलें लगभग पूरी तरह से इस समस्या को हल करती हैं।
लेकिन अभी के लिए, हम विशेष रूप से मेरी प्रस्तावना पर विचार कर रहे हैं। संदर्भों की सूची बनाने के लिए, मैंने शुद्ध रूप में
thebibliography
और the
\bibitem
के अच्छे पुराने वातावरण का उपयोग किया। उन्हें थोड़ा कॉन्फ़िगर करने के लिए, यह करना आवश्यक था:
\usepackage [ square,numbers,sort&compress ]{ natbib }
\renewcommand { \bibnumfmt }[ 1 ]{ #1. \hfill } % —
\renewcommand { \bibsection }{ \likechapter { }} %
\setlength { \bibsep }{ 0pt }
अब शीर्षक "संदर्भ" को एक लिकर के रूप में तैयार किया गया है, और तदनुसार सामग्री की तालिका में रखा गया है।
natbib
पैकेज अच्छी तरह से संख्याओं को संपीड़ित करता है जब इसे "[2, 6-9]" में संदर्भित किया जाता है।
पृष्ठों, आंकड़ों, तालिकाओं, स्रोतों का काउंटर
मानक के लिए आवश्यक है कि काम के लिए सार रेखा "थीसिस: 107 पी।, 14 अंजीर।, 19 टैब।, 2 परिशिष्ट, 28 स्रोतों" से शुरू होता है। स्वाभाविक रूप से, LaTeX हमारे समय का सबसे अच्छा लेआउट सिस्टम नहीं होगा यदि इसमें इन सभी मात्राओं की स्वचालित रूप से गणना करने और कमांड के साथ पाठ में वांछित संख्या डालने का साधन नहीं था।
पेजों से शुरू करते हैं। यहां चीजें आसान हैं: हम
lastpage
पैकेज को कनेक्ट करते हैं, और टेक्स्ट में हम केवल नए
LastPage
लेबल को संदर्भित करते हैं जो इसे
\pageref*
का उपयोग करके
LastPage
:
\usepackage { lastpage }
% ...
: \pageref * { LastPage } ~., ...
आंकड़ों और तालिकाओं के साथ,
टोटकाउंट पैकेज, जो ऐसे उद्देश्यों के लिए लिखा गया था, मदद
कर सकता है - एक दस्तावेज़ में विभिन्न वस्तुओं की संख्या की गणना करने के लिए। दुर्भाग्य से, अभी के रूप में, इसमें एक गंभीर खामी है: काउंटरिंग आमतौर पर प्रत्येक अध्याय के अंत में रीसेट किया जाता है जब नंबरिंग के माध्यम से नहीं होता है, ताकि किसी दस्तावेज़ के मामले में जैसे कि रिपोर्ट नहीं, लेख नहीं, हमें कुल आंकड़े नहीं मिलते हैं, लेकिन केवल आंकड़ों की संख्या अंतिम अध्याय। लेखक को बग के बारे में सूचित किया जाता है, और जब वह काम कर रहा होता है, तो उसे वर्कअराउंड ढूंढना आवश्यक होता है।
नुस्खा StackOverflow की विशालता में पाया गया था। हम प्रत्येक प्रकार के ऑब्जेक्ट के लिए अपने स्वयं के काउंटर को परिभाषित करेंगे, और फिर इस काउंटर के मूल्य को ऑक्स-फ़ाइल (संकलन के अंत में,
\AtEndDocument
) के साथ
\AtEndDocument
। अगले संकलन पर, इसे फ़ाइल से लिया जाएगा, और हमने जो कमांड परिभाषित किया है, वह पाठ में आवश्यक संख्या को प्रतिस्थापित करेगा। इस प्रकार, pdfLaTeX के दो शुरू होने के बाद, हमें सही काउंटर वैल्यू वाला टेक्स्ट मिलता है।
\newcounter { totfigures }
\newcounter { tottables }
\ makeatletter
\AtEndDocument { %
\addtocounter { totfigures }{ \value { figure }} %
\addtocounter { tottables }{ \value { table }} %
\immediate \write \@mainaux { %
\string \gdef \string \totfig { \number \value { totfigures }} %
\string \gdef \string \tottab { \number \value { tottables }} %
} %
}
\ makeatother
% ...
: \pageref * { LastPage } ~., \totfig ~., \tottab ~...
इस समाधान में एक घातक दोष है: आपको प्रत्येक आकृति या तालिका में काउंटर मूल्य को मैन्युअल रूप से बढ़ाना होगा। आप केवल प्रत्येक अध्याय के अंत में (संबंधित सिस्टम काउंटर से) काउंटर के आंकड़ों / तालिकाओं की संख्या को जोड़कर जीवन को थोड़ा सरल कर सकते हैं, लेकिन वैसे भी कोड द्वारा कॉपी-पेस्ट मौजूद होगा। हालाँकि, इस प्रक्रिया को स्वचालित किया जा सकता है।
स्वचालन
etoolbox
। इसमें (अन्य चीजों के बीच) एक अद्भुत
\pretocmd
, जो आपको सामने के किसी भी कमांड की परिभाषा के लिए कुछ अतिरिक्त कोड असाइन करने की अनुमति देता है। इस मामले में, हम चाहते हैं कि काउंटर को किसी भी कॉल से पहले बदल दिया जाए।
\usepackage { etoolbox }
\pretocmd { \chapter }{ \addtocounter { totfigures }{ \value { figure }}}{ }{ }
\pretocmd { \chapter }{ \addtocounter { tottables }{ \value { table }}}{ }{ }
मैं ध्यान देता हूं कि मैन्युअल रूप से काउंटर परिवर्तन कमांड को अभी भी दो बार और कॉल करना होगा। एक बार दस्तावेज़ के बहुत अंत में (ऊपर देखें
\AtEndDocument
)। और एक बार उन अनुप्रयोगों की शुरुआत से पहले जिन्हें अध्याय के रूप में वर्गीकृत किया गया है, लेकिन उन्हें
\chapter
(नीचे देखें) के साथ नहीं बुलाया जाता है।
अंत में, आप स्रोतों के साथ भी ऐसा कर सकते हैं: एक काउंटर को परिभाषित करें, स्वचालित रूप से इसे बढ़ाएं और संकलन के अंत में इसे एक aux फ़ाइल में डंप करें। केवल इस बार,
\bibitem
कमांड को
\bibitem
करना होगा:
\newcounter { totreferences }
\pretocmd { \bibitem }{ \addtocounter { totreferences }{ 1 }}{ }{ }
अब
\AtEndDocument
(ऊपर देखें) के लिए एक समान लाइन जोड़ना न भूलें:
\string \gdef \string \totref { \number \value { totreferences }} %
और आप "
\totref
~ सूत्रों ..." पाठ में लिख सकते हैं
क्षुधा
मुझे अनुप्रयोगों के साथ टिंकर करना पड़ा। सबसे पहले, सामग्री की तालिका के कारण: यह
tocloft
को कॉन्फ़िगर करने के लिए काम नहीं करता था ताकि यह अध्याय के लिए "अध्याय" शब्द, और आवेदन के लिए "आवेदन" शब्द को मुद्रित कर सके, इस तथ्य के बावजूद कि इसे
\chapter
रूप में घोषित किया गया था। उसी समय, शीर्षक में आवश्यक शब्द को
स्वयं किसी भी समस्या के बिना प्राप्त किया
जाता है, शीर्षक
\chaptertitlename
परिभाषित
\chaptertitlename
।
आगे की हलचल के बिना, मैंने एक बैसाखी का निर्माण किया। मैंने एप्लिकेशन को पैराग्राफ के रूप में प्रारूपित करने का निर्णय लिया। वैसे भी, पाठ में
असली पैराग्राफ मैंने कहीं भी उपयोग नहीं किया है। यह एक छोटी सी बात थी - शीर्षक में
\paragraph
डिस्प्ले को
\chapter
_
\chapter
समान सेट करने के लिए, और इसी तरह की सामग्री को टेबल पर इसी प्रकार के स्तर पर जोड़ें।
\usepackage [ title,titletoc ]{ appendix }
\titleformat { \paragraph }[ display ]
{ \filcenter }
{ \MakeUppercase { \chaptertitlename } \thechapter }
{ 8pt }
{ \bfseries }{ }
\titlespacing* { \paragraph }{ 0pt }{ -30pt }{ 8pt }
\newcommand { \append }[ 1 ]{
\clearpage
\stepcounter { chapter }
\paragraph { \MakeUppercase { #1 }}
\empline
\addcontentsline { toc }{ likechapter }{ \MakeUppercase { \chaptertitlename ~ \Asbuk { chapter }\ ;#1 }}}
अब इसे इस तरह इस्तेमाल किया जा सकता है:
\begin { appendices }
\renewcommand \thechapter { \Asbuk { chapter }}
\setcounter { chapter }{ 0 }
\append { }
...
\end { appendices }
होने की असहनीय लपट पर ध्यान दें: आवेदन अनिवार्य रूप से पैराग्राफ होते हैं, जैसे सामग्री की तालिका में लिखा गया है जैसे कि एसकथ्रॉन-एस, लेकिन एक ही समय में मैं उन्हें गिनने के लिए अध्याय काउंटर का उपयोग करता हूं, क्योंकि संक्षेप में अनुप्रयोग अध्याय हैं :) एक काउंटर प्रतिनिधित्व के रूप में
\Asbuk
लिया जाता है, क्योंकि यह अपरकेस साइरिलिक अक्षरों में संख्या अनुप्रयोगों के लिए प्रथागत है।
अब स्नातक के थीसिस में निर्दिष्ट दो आवश्यक अनुप्रयोगों में से प्रत्येक को कैसे पूरा करें, इसके बारे में अधिक विस्तार से।
परिशिष्ट A: चित्र सामग्री
पहला आवश्यक एप्लिकेशन प्रेजेंटेशन स्लाइड्स है। मैंने Microsoft Power Point में प्रस्तुति दी, यहाँ एक महान उत्पाद के खिलाफ मुझे अब तक कोई शिकायत नहीं है। शायद मेरे जीवन में जल्द ही एक टिपिंग पॉइंट आएगा जब मैं लाटेक्स में प्रस्तुतियां दूंगा, लेकिन अभी तक मैं उस स्तर पर नहीं हूं। मुख्य तर्क यह है कि प्रस्तुति में बड़ी संख्या में सूत्र मैं लाटेक्स की तरह मार्कअप भाषा में टाइप करता हूं, जिसे माइक्रोसॉफ्ट ऑफिस संस्करण 2007 और उससे अधिक में बनाया गया है;)
तो, प्रस्तुति तैयार है, डिप्लोमा के स्रोत कोड के बगल में एक पीपीटीएक्स-फ़ाइल में सहेजा गया है।
संकलन के अधिकार में अब इसे स्वचालित रूप से डिप्लोमा पीडीएफ में कैसे डाला जाएगा? विधि मिली, और बहुत सरल थी। हम प्रस्तुति को पीडीएफ में परिवर्तित करेंगे और इस पीडीएफ को एक अद्भुत पैकेज की मदद से जनरेट करेंगे pdfpages
।मैंने प्रति पृष्ठ दो स्लाइड प्रदर्शित करने का फैसला किया, जो कि फ्रेम से घिरा हुआ था। प्रक्रिया में, दो बिंदुओं को ध्यान में रखा जाना था। सबसे पहले, आवेदन वाले पृष्ठों को भी क्रमांकित करने की आवश्यकता है - इसलिए आपको पैकेज को कमांड देना नहीं भूलना चाहिए fancyhdr
ताकि यह शामिल पृष्ठों पर भी काम करे। दूसरे, आवेदन के पहले पृष्ठ पर न केवल प्रस्तुति के पहले दो स्लाइड हैं, बल्कि शीर्षक "परिशिष्ट ए" भी है। पहली और दूसरी दोनों कठिनाइयों को पैरामीटर द्वारा हल किया जाता है pagecommand
जो हमारी मुख्य टीम के विकल्पों की सूची में मौजूद है \includepdf
। तैयार स्रोत कोड:\usepackage { pdfpages }
% ...
\includepdfset { nup=1x2,frame=true,delta=10mm 10mm,noautoscale=true }
\includepdf [ pages=1-2,scale=0.55,offset=10mm -20mm,pagecommand={ \append { }} ]{ defence.pdf }
\includepdf [ pages=3-,scale=0.55,offset=10mm 0mm,pagecommand={ \fancyhead [ R ]{ \thepage }}]{ defence.pdf }
और परिणाम:परिशिष्ट बी: सॉफ्टवेयर उत्पाद कोड
मैं एक छोटे से मोनोपॉज़ फॉन्ट में सम्मिलित स्रोत कोड को हाइलाइट करना और पेस्ट करना चाहता हूं ताकि यह डिप्लोमा के एक अच्छे आधे हिस्से पर कब्जा न करे और अपने आप में कागज बर्बाद न करे। अनुप्रयोगों में यह अनुमति है।पैकेज स्रोत कोड को उजागर करने का एक बड़ा काम करता है listings
। उसे बस थोड़ी मदद चाहिए: कोड (विकल्प basicstyle
) को प्रिंट करने के लिए किस फ़ॉन्ट के साथ निर्दिष्ट करें, लाइनों में शब्दों को लपेटने के लिए कहें (विकल्प breaklines
), और प्रोग्रामिंग भाषा में कीवर्ड के सेट को समायोजित करें (विकल्प morekeywords
) - यह C # 2.0 को पहचानता है, और मैंने C / 4.0 में लिखा है। पैकेज सब कुछ के साथ सामना करेगा, यहां तक कि उसके बगल में स्थित फ़ाइल से स्रोत पाठ को लोड करें।\usepackage { listings }
%...
\append { }
\lstset { language= [ Sharp ] C,
morekeywords= { yield,var,get,set,from,select,partial } ,
breaklines=true,
basicstyle= \footnotesize \ttfamily }
\linespread { 1 } %
\lstinputlisting { MyCoolProjectClass.cs }
कार्यक्षेत्र संगठन
डीएएसटीयू का अनुवाद एलईटीएक्स पर 3008-95 मानक खत्म हो गया है। मेरी प्रस्तावना में अंतिम कुछ पंक्तियाँ इस बात से संबंधित हैं कि थीसिस में कई खंडों और उप-वर्गों के साथ काम को व्यवस्थित करना सबसे सुविधाजनक कैसे था।बेशक, हम पूरे दस्तावेज़ को कई फ़ाइलों में विभाजित करेंगे - एक टेक्स फ़ाइल प्रति उपधारा (अनुभाग)। हम प्रत्येक अध्याय को एक अलग सबफ़ोल्डर में संग्रहीत करेंगे, जैसे नाम chapter_ProgramSynthesis
। इस फ़ोल्डर में एक फ़ाइल होगी chapter_ProgramSynthesis.tex
जिसमें अध्याय के उप-वर्गों की एक विधानसभा होगी , sec_XXX.tex
विशिष्ट उप-वर्गों के साथ वास्तविक फाइलें , और सभी आवश्यक अतिरिक्त सामग्री (उदाहरण के लिए, चित्र)।मुख्य दस्तावेज़ के मुख्य भाग में एक अध्याय फ़ाइल शामिल करने और इसे अनुमति देने के लिए, बदले में, सबफ़ाइल्स शामिल करें और इसके सबफ़ोल्डर में सामग्री के लिए पथ देखें, हम पैकेज का उपयोग करेंगे import
। इसमें एक अद्भुत टीम है \subimport
जो दो मापदंडों को लेती है - एक फ़ोल्डर जो अस्थायी रूप से एक फ़ाइल खोज बन जाता है, और एक सीधे शामिल फ़ाइल होती है। एक डिप्लोमा में अध्याय शामिल करने के लिए, हम एक सहायक कमांड को परिभाषित करते हैं, और अब हम आसानी से नाम से अध्याय का उल्लेख कर सकते हैं।मुख्य फ़ाइल में diploma.tex
:\usepackage { import }
\newcommand { \includechapter }[ 1 ]{ \subimport { chapter_#1/ }{ chapter_#1 }}
\newcommand { \inputintro }{ \ input { sec_Intro } \newpage }
% ...
\includechapter { ProgramSynthesis }
फ़ाइल में chapter_ProgramSynthesis/chapter_ProgramSynthesis.tex
:\chapter { PROGRAM SYNTHESIS }
\inputintro
\ input { sec_Basics }
\ input { sec_Stages }
\ input { sec_Example }
\ input { sec_Conclusions }
फ़ाइलें sec_Basics.tex
और अन्य एक ही सबफ़ोल्डर में हैं chapter_ProgramSynthesis
। एक ही सबफ़ोल्डर से छवियों का लिंक सीधे होता है - लेख की शुरुआत में उदाहरण की परिभाषा देखें। मैंने शुद्ध पूर्णतावाद सेटीम का \inputintro
निर्धारण किया: चूंकि मैं हमेशा उप-परिचय "परिचय" कहता हूं sec_Intro.tex
और इसके बाद एक नया पृष्ठ शुरू करता हूं , तो डुप्लिकेट कोड क्यों लिखें? :-)
निष्कर्ष
इस पर, 150-पंक्ति की प्रस्तावना का टाइटैनिक विवरण पूर्ण माना जा सकता है। एक बार फिर: मुझे यह नहीं लगता कि यह सभी काम अपने "शुद्ध" रूप में मानक का पालन करने के लिए एक मानक के रूप में किया जाना चाहिए - तैयार किए गए समाधानों का उपयोग करना बहुत आसान है। लेकिन मुझे आशा है कि जैसा कि आप इस लेख को पढ़ते हैं, कई लाटेकस उत्साही लोग कई नए दिलचस्प उपकरण और क्षमताओं को सीखेंगे, उपयोगी संकुल के साथ टूलबॉक्स को समृद्ध करेंगे, और, शायद, एक या दो नोट लें।अंत में, हम लाटेक्स को इस असीमित शक्ति के लिए प्यार करते हैं, है ना? ;) अपने लेआउट के साथ गुड लक!UPD: सभी एक साथ संदर्भ द्वारा ।