Existem inúmeras variações na pergunta "Como faço para colocar minhas seções não numeradas no índice?" ...
- Criação de capítulos/seções não numerados (além de adicioná-los ao ToC e/ou cabeçalho)
- \tableofcontents não lista o capítulo não numerado
- Como usar \section*{something} sem removê-lo do Índice?
- ...
e nenhuma das respostas é boa para mim, porque todas envolvem colar \addcontentsline
, além de talvez outras coisas ( \mark
, \phantomsection
, ...?), no lugar certo do documento. No meu caso, os \section*
comandos estão sendo emitidos por pacotes e não me dão ganchos para inserir coisas no lugar certo; e também não está claro exatamente de que conjunto de "outras coisas" eu preciso. Seria mais simples e robusto se eu pudesse simplesmente redefinir \section*
para que ele se comportasse exatamente como sua versão sem estrela, exceto que não imprime um número de seção.
Como eu façoque?
Nota: As classes KOMA-Script não são uma opção. Atualmente, estou usando o plano article
para rascunhos e, eventualmente, precisarei participar de uma aula de diário.
Nota 2 (dos comentários sobre uma tentativa de resposta): o ajuste \secnumdepth
global não funcionará para mim, porque (a) ainda quero a numeração normal da seção sem estrela \section
, etc., e (b) os pacotes que estão emitindo \section*
comandos não podem ser persuadidos a usar simples \section
em vez disso.
Responder1
Você pode redefinir \section
a captura e condicionar quando a versão com estrela será usada. Ao encontrá-lo \section*
, emita-o como faria \section
, masremova o mecanismo de impressão de números através de uma configuração apropriada do 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
fornece uma interface fácil para (re)definir comandos que podem ter uma s
versão tarred, bem como um o
argumento opcional.