2010-10-20 2 views
8

Ich schreibe ein Dokument, in dem ich die Unterteilung nicht im Inhaltsverzeichnis anzeigen möchte (ich möchte die Unterabschnittsüberschrift im Inhaltsverzeichnis sehen), aber ich möchte den Unterabschnitt Nummerierung, die in der aktuellen Dokumentüberschrift angezeigt wird.Latex, KEINE Abschnittsnummer in TOC, aber sichtbar in der aktuellen Abschnittsüberschrift

Dies ist, was ich

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 

möchte ich versuchte \ setcounter {secnumdepth} {1}, aber diese entfernt die Nummer auch aus dem Abschnitt mit Überschrift so, was ich habe ist,

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 

Ist es möglich, die Abschnittsnummer in der Dokumentüberschrift, aber nicht im Inhaltsverzeichniseintrag abzurufen?

Antwort

4

In einem Latex-Beispiel (die "Artikel"-Klasse), bekomme ich diese in der .toc-Datei:

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

Wichtig hier Teil die \numberline Makro ist. Die Neudefinition es etwas leer wie

\def\numberline#1{} 

alle Nummerierungen im toc und nicht an anderer Stelle zu entfernen. Wenn Sie so etwas wie \tocsubsection stattdessen in der .toc (siehe andere Antwort) erhalten, dann kann man wohl so etwas wie tun:

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

Dies ist jedoch entfernt alle Zahlen in dem Inhaltsverzeichnis. Wenn Sie steuern möchten, auf welcher Ebene die Nummerierung verschwindet, wird das Makro \contentsline je nach Kontext auf verschiedene Makros erweitert, z. B. \[email protected]. Diese Makros wiederum verwenden das allgemeine Makro \@dottedtocline. Dies ist die, die Sie ändern müssen, in der wir \numberline bedingt neu definieren werden.

Um die Kontrolle über die Tiefe, in der Zahlen zu stoppen angezeigt wird, lassen Sie uns einen neuen Zähler definieren:

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

Dann ist die bedingte Neudefinition folgende Zeile sein wird (aus dem Code für mehr Lesbarkeit extrahiert).

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

ich einfach kopieren kleisterte die Definition von \@dottedtocline aus der latex.ltx Quelldatei, und hinzugefügt, um die Kontrolle zu verlieren.Hier ist der Code für das gesamte Beispiel:

\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 

Abschließender Hinweis: Dies wird den Titel Abschnitt und Abschnitt macht an derselben horizontalen Position zu starten, da es keine Nummer angezeigt werden soll. Wenn Sie mehr Polsterung möchten, können Sie zum Beispiel hinzufügen \quad die neuen Definition von \numberline, oder sogar die ursprünglichen Definition verwenden, um mit nur die #1 entfernt:

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

Ich möchte nur sagen, dass dies für mich bemerkenswert hilfreich war. Vielen Dank! – Tyr

2

Ich bin mir nicht sicher über eine programmatische Art, dies zu tun, aber ich weiß, dass Sie in die generierte * .toc-Datei für Ihr Dokument gehen können und entfernen Sie die Abschnittsnummer Argument für den Abschnitt, den Sie unterdrücken möchten.

Sie können dies ändern:

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

Um dies:

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

Welche generiert, was Sie wollen. Achtung, dies wird jedes Mal neu generiert, wenn Sie Ihre Tex-Quelle kompilieren.

+0

Danke, ich werde dies halten als wieder nach oben, wenn es gibt keinen programmatischen Weg. – nbz

+0

Sie müssen die Ausgabe zwar einmal erstellen, nachdem Sie die Änderung in der .toc-Datei vorgenommen haben, um die Auswirkungen der Änderungen zu sehen. – nbz

+0

Es tut mir leid, dass ich meine angenommene Antwort ändern musste. Sparshong funktioniert sehr gut und ist ziemlich sauber auf eine programmatische Weise getan. Aber bis dahin hat dir deine Idee auch sehr gut geholfen! – nbz

Verwandte Themen