2010-10-20 13 views
8

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

यह जो मैं चाहता है

Table of Contents 
1. Chapter One 
1.1 Section One 
     SubSection One 

Chapter 1 
Chapter One 
Some chapter text 

1.1 Section One 
Some text 

1.1.1 Subsection One 
Some text 

मैं \ setcounter {secnumdepth} {1} लेकिन इस खंड इतना बढ़ रहा है कि मैं क्या है से भी नंबर निकाल देता है, उपयोग करने की कोशिश

Table of Contents 
1. Chapter One 
1.1 Section One 
     SubSection One 

Chapter 1 
Chapter One 
Some chapter text 

1.1 Section One 
Some text 

Subsection One 
Some text 

क्या दस्तावेज़ शीर्षक में सेक्शन नंबर प्राप्त करना संभव है लेकिन टीओसी प्रविष्टि में नहीं?

उत्तर

4

एक लेटेक्स उदाहरण ("लेख" वर्ग का उपयोग) में, मैं .toc फ़ाइल में इस मिल:

\contentsline {section}{\numberline {1}test section without number}{1}{section.1} 

यहाँ महत्वपूर्ण हिस्सा \numberline मैक्रो है। जैसे

\def\numberline#1{} 

खाली कुछ करने के लिए यह पुनर्परिभाषित toc में और कहीं और नहीं सभी numberings निकाल देंगे।

\let\oldtocsubsection=\tocsubsection 
\def\tocsubsection#1#2#3{\oldtocsubsection{#1}{}{#3}} 

हालांकि, इस सामग्री तालिका में सभी संख्या निकालता है: आप \tocsubsection बजाय .toc में की तरह कुछ (अन्य उत्तर देखें) मिलता है, तो आप शायद की तरह कुछ कर सकते हैं। यदि आप नियंत्रित करना चाहते हैं कि संख्या किस स्तर पर गायब हो जाती है, तो \contentsline मैक्रो संदर्भ के आधार पर विभिन्न मैक्रोज़ तक फैलता है, उदाहरण के लिए, \[email protected]। बदले में वे मैक्रोज़ सामान्य \@dottedtocline मैक्रो का उपयोग करते हैं। यह वह है जिसे आपको संशोधित करने की आवश्यकता है, जिसमें हम सशर्त रूप से \numberline को फिर से परिभाषित करेंगे।

\newcounter{sectocnonumdepth} 
\setcounter{sectocnonumdepth}{2} 

तो सशर्त परिभाषा लाइन (अधिक पठनीयता के लिए कोड से निकाले) निम्नलिखित होगा:

गहराई पर नियंत्रण है, जिस पर नंबर प्रदर्शन को रोकने का करवाने के लिए, हमें एक नया काउंटर को परिभाषित करते हैं।

\ifnum #1>\[email protected] \def\numberline##1{}\fi% 

मैं बस कॉपी-पेस्ट किया latex.ltx स्रोत फ़ाइल से \@dottedtocline की परिभाषा, और अंदर की जांच गयी।

\newcounter{sectocnonumdepth} 
\setcounter{sectocnonumdepth}{2} 


\makeatletter 
\def\@dottedtocline#1#2#3#4#5{% 
    \ifnum #1>\[email protected] \else 
    \vskip \[email protected] \@plus.2\[email protected] 
    {\ifnum #1>\[email protected] \def\numberline##1{}\fi% 
    \leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip 
    \parindent #2\relax\@afterindenttrue 
    \interlinepenalty\@M 
    \leavevmode 
    \@tempdima #3\relax 
    \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip 
    {#4}\nobreak 
    \leaders\hbox{$\[email protected] 
     \mkern \@dotsep mu\hbox{.}\mkern \@dotsep 
     mu$}\hfill 
    \nobreak 
    \[email protected]@\@pnumwidth{\hfil\normalfont \normalcolor #5}% 
    \par}% 
    \fi} 
\makeatother 

अंतिम नोट:: यहाँ पूरे उदाहरण के लिए कोड है यह एक ही क्षैतिज स्थिति में शुरू करने के लिए, के बाद से वहाँ प्रदर्शित करने के लिए कोई संख्या है अनुभाग और उपधारा के शीर्षक कर देगा। आप और अधिक गद्दी चाहते हैं, आप उदाहरण के लिए \numberline की नई परिभाषा के लिए \quad जोड़ सकते हैं, या बस #1 निकाले जाने के साथ मूल परिभाषा का उपयोग करें:

\def\numberline##1{\[email protected]@\@tempdima{\hfil}} 
+0

मैं बस इतना कहना चाहूंगा कि यह मेरे लिए उल्लेखनीय रूप से सहायक था। धन्यवाद! – Tyr

2

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

आप इसे बदल सकते हैं:

\contentsline {subsection}{\tocsubsection {}{1.1}{subsection one}}{1} 
इस के लिए

:

\contentsline {subsection}{\tocsubsection {}{}{subsection one}}{1} 

कौन सा आप क्या चाहते हैं उत्पन्न होगा। देखें, हर बार जब आप अपने टेक्स्ट स्रोत को संकलित करते हैं तो यह पुन: उत्पन्न हो जाता है।

+0

धन्यवाद, मैं इस के रूप में वापस ऊपर अगर रखेंगे, कोई प्रोग्रामेटिक तरीका नहीं है। – nbz

+0

हालांकि परिवर्तनों के प्रभाव देखने के लिए आपको .toc फ़ाइल में परिवर्तन करने के बाद एक बार आउटपुट बनाने की आवश्यकता है। – nbz

+0

मुझे खेद है कि मुझे अपना स्वीकृत उत्तर बदलना पड़ा। स्पारशोंग का काम वास्तव में अच्छा है और प्रोग्रामेटिक तरीके से काफी साफ किया जाता है। लेकिन तब तक आप एक त्वरित फिक्स के रूप में भी काम किया! – nbz

संबंधित मुद्दे