Hay numerosas variaciones sobre la pregunta "¿Cómo puedo incluir mis secciones no numeradas en la tabla de contenido?" ...
- Crear capítulos/secciones sin numerar (además de agregarlos al ToC y/o al encabezado)
- \tableofcontents no enumera el capítulo sin numerar
- ¿Cómo utilizar \section*{algo} sin eliminarlo de la tabla de contenido?
- ...
y ninguna de las respuestas es buena para mí, porque todas implican pegarse \addcontentsline
, además de quizás otras cosas ( \mark
,, \phantomsection
...?), en el lugar correcto del documento. En mi caso, los \section*
comandos los emiten paquetes y no me dan ganchos para insertar cosas en el lugar correcto; y tampoco está claro exactamente qué conjunto de "otras cosas" necesito. Sería más simple y robusto si pudiera redefinirlo \section*
para que se comporte exactamente como lo hace su versión sin asterisco, excepto que no imprime un número de sección.
Como lo hagoeso?
Nota: Las clases de KOMA-Script no son una opción. Actualmente estoy usando formato simple article
para borradores y eventualmente tendré que asistir a una clase de diario.
Nota 2 (de los comentarios sobre un intento de respuesta): el ajuste \secnumdepth
global no funcionará para mí, porque (a) todavía quiero una numeración de secciones normal desde las no destacadas , etc., y (b) no se puede persuadir a \section
los paquetes que emiten comandos para que los usen. \section*
simple \section
en su lugar.
Respuesta1
Puede redefinir \section
para capturar y condicionar cuándo se utiliza la versión destacada. Al encontrarlo \section*
, emitalo como lo haría \section
, peroeliminar el mecanismo de impresión de números mediante una configuración adecuada del contadorsecnumdepth
.
\documentclass{article}
\usepackage{xparse}
\let\oldsection\section
\makeatletter
\newcounter{@secnumdepth}
\RenewDocumentCommand{\section}{s o m}{%
\IfBooleanTF{#1}
{\setcounter{@secnumdepth}{\value{secnumdepth}}% Store secnumdepth
\setcounter{secnumdepth}{0}% Print only up to \chapter numbers
\oldsection{#3}% \section*
\setcounter{secnumdepth}{\value{@secnumdepth}}}% Restore secnumdepth
{\IfValueTF{#2}% \section
{\oldsection[#2]{#3}}% \section[.]{..}
{\oldsection{#3}}}% \section{..}
}
\makeatother
\begin{document}
\tableofcontents
\section{TestA}
\section*{TestB}
\end{document}
xparse
proporciona una interfaz sencilla para (re)definir comandos que pueden tener una s
versión tarred, así como un o
argumento opcional.