「番号が付いていないセクションを目次に入れるにはどうしたらいいですか?」という質問には、さまざまなバリエーションがあります...
- 番号なしの章/セクションを作成する(さらに目次やヘッダーに追加する)
- \tableofcontentsには番号のない章は記載されていない
- 目次から削除せずに \section*{something} を使用するにはどうすればよいでしょうか?
- ...
回答のどれも私には役に立ちません。なぜなら、それらはすべて\addcontentsline
、 に加えて、おそらく他のもの ( \mark
、\phantomsection
、 ...?) をドキュメント内の適切な場所に貼り付ける必要があるからです。私の場合、コマンドは\section*
パッケージによって発行されており、適切な場所にものを挿入するためのフックは提供されません。また、必要な「他のもの」のセットが正確に何であるかは不明です。 を再定義して、\section*
セクション番号を印刷しないことを除いて、星なしバージョンとまったく同じように動作するようにすることができれば、よりシンプルで堅牢になります。
私はどのように行いますかそれ?
注: KOMA-Script クラスはオプションではありません。現在、article
ドラフトにはプレーンを使用していますが、最終的にはジャーナルのクラスを追加する必要があります。
注 2 (回答の試みに対するコメントより):\secnumdepth
グローバルに調整してもうまくいきません。理由は、(a) 星なし\section
などからの通常のセクション番号付けがまだ必要なため、(b) コマンドを発行しているパッケージに、代わりに\section*
plain を使用するように説得できないためです\section
。
答え1
を再定義して、スター付きバージョンが使用されるときに をキャプチャして条件付けすることができます\section
。 を見つけたら\section*
、 と同じように発行します\section
が、カウンターの適切な設定により数字印刷機構を削除するsecnumdepth
。
\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
オプション引数s
だけでなく、tar バージョンを持つ可能性のあるコマンドを (再) 定義するための簡単なインターフェイスを提供します。o