2010-10-20 11 views
8

Estoy escribiendo un documento en el que no deseo que se muestre la numeración de subsecciones en el TOC (quiero el encabezado de la subsección en el TOC) pero quiero la subsección numeración para mostrar en el título del documento real.Látex, NINGÚN número de sección en TOC pero visible en el encabezado de la sección actual

Esto es lo que quiero

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 

He intentado utilizar \ setcounter {secnumdepth} {1}, pero esto elimina el número incluso desde el encabezamiento así que lo que tengo es,

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 

¿Es posible obtener el número de sección en el título del documento pero no en la entrada de TOC?

Respuesta

4

En un ejemplo de látex (utilizando la clase "artículo"), me sale esto en el archivo .toc:

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

La parte importante aquí es la \numberline macro. Redefiniendo a algo vacío como

\def\numberline#1{} 

eliminará todas las numeraciones en la tabla de contenido y no en otra parte. Si usted consigue algo como \tocsubsection lugar en el .toc (ver otra respuesta), entonces es probable que pueda hacer algo como:

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

Sin embargo, esto elimina todos los los números en la tabla de contenido. Si desea controlar en qué nivel desaparece la numeración, la macro \contentsline se expande a diferentes macros según el contexto, por ejemplo, \[email protected]. Esas macros utilizan la macro genérica \@dottedtocline. Este es el que debe modificar, en el cual redefiniremos condicionalmente \numberline.

tener el control sobre la profundidad a la que deje de mostrar los números, vamos a definir un nuevo contador:

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

A continuación, la redefinición condicional habrá línea siguiente (extraído del código para más facilidad de lectura).

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

simplemente copiar-pegar la definición de \@dottedtocline a partir del archivo fuente latex.ltx, y añade el cheque en su interior.Aquí está el código para todo el ejemplo:

\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 

Nota final: esto hará que el título de la sección y el inciso a comenzar en la misma posición horizontal, ya que no hay un número para mostrar. Si quieres más relleno, se puede por ejemplo añadir \quad a la nueva definición de \numberline, o incluso a utilizar la definición original con sólo la #1 Eliminado:

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

Solo me gustaría decir que esto fue muy útil para mí. ¡Gracias! – Tyr

2

No estoy seguro de una forma programática de hacerlo, pero sé que puede ir al archivo * .toc generado para su documento y eliminar el argumento del número de sección para la sección que desea suprimir.

Puede cambiar esto:

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

A esto:

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

que generará lo que quiere. Ten cuidado, esto se regenera cada vez que compilas tu fuente de tex.

+0

Gracias, Voy a mantener esto como una copia de seguridad, si no hay ninguna forma programática. – nbz

+0

Aunque necesita generar salida una vez que realiza el cambio en el archivo .toc para ver los efectos de los cambios. – nbz

+0

Lo siento, tuve que cambiar mi respuesta aceptada. Sparshong funciona muy bien y se hace de forma bastante limpia y programática. ¡Pero hasta entonces el tuyo también funcionaba como una solución rápida! – nbz

Cuestiones relacionadas