セクション番号付けにサブセクション範囲を使用する

セクション番号付けにサブセクション範囲を使用する

さて、これは型破りな質問かもしれません。

サブセクション (または書式設定上の理由によりサブサブセクション) の範囲をセクション番号として使用します。

つまり、

\section{First section}
\subsubsection{\S1}
\subsubsection{\S2}
\subsubsection{\S3}

セクションの見出しと目次エントリを取得したい:

§1 - §3 First section

したがって、基本的には、セクションの最初の (サブ) サブセクションのテキストと、最後の (サブ) サブセクションのテキストを、表示されるセクション「番号」として使用します。

自動的に実行できない場合は、各セクションの始めにこの番号を明示的に宣言してもかまいません。

答え1

問題は、いくつかの区別可能なサブ問題で構成されています。

  1. subsubsectionsクラスで番号をもらうbook:\setcounter{secnumdepth}{3}

  2. の連続番号付け: これは、カウンターのリセットを防ぐためにパッケージsubsubsectionsを使用して実行できます。remresetsubsubsection

  3. 章ごとにカウントするにはsubsubsections、パッケージをxcntperchap使用できます

  4. sectionとタイトルの書式設定にはsubsubsectiontitlesecパッケージを使用しました


\documentclass{book}

% numbered subsubsections in book class
\setcounter{secnumdepth}{3}

% number subsubsections continiously
\usepackage{remreset}
\makeatletter
    \@removefromreset{subsubsection}{chapter}
    \@removefromreset{subsubsection}{section}
    \@removefromreset{subsubsection}{subsection}
\makeatother

% count subsubsections per chapter
\usepackage{xcntperchap}
\RegisterTrackCounter{section}{subsubsection}

% format subsubsection titles
\usepackage[explicit]{titlesec}
\titleformat{\subsubsection}{\bfseries}{%
    \S \arabic{subsubsection}
}{0pt}{}

% Format section
\newcounter{start}
\newcounter{stop}

\titleformat{\section}{\bfseries}{%
    \setcounter{start}{\value{subsubsection}}%
    \addtocounter{start}{1}%
    \setcounter{stop}{\ObtainTrackedValueExp[\value{section}]{section}{subsubsection}}%
    \addtocounter{stop}{\value{start}}%
    \addtocounter{stop}{-1}%
    \ifnum\ObtainTrackedValueExp[\value{section}]{section}{subsubsection}>0
        \S \arabic{start} -- \S \arabic{stop}
    \fi
    #1
}{0pt}{}

\begin{document}

\section{First section}
\subsubsection{} 
\subsubsection{} 
\subsubsection{} 

\section{Second section}
\subsubsection{} 
\subsubsection{} 

\section{Third section}

\end{document}

ここに画像の説明を入力してください

答え2

カスタムカウンターを導入してこの問題を解決しました

\newcounter{clause}
\newcounter{sectionstart}
\newcounter{sectionend}

\begin{document}
\setcounter{sectionstart}{\value{clause}}
\section*{Section 1}
\refstepcounter{sectionstart}
\refstepcounter{clause}
\subsubsection{\textbf{\S\arabic{clause}}}

\refstepcounter{clause}
\subsubsection{\textbf{\S\arabic{clause}}}

\setcounter{sectionend}{\value{clause}}
\addcontentsline{toc}{section}{\S\arabic{sectionstart}\enspace\textendash\enspace\S\arabic{sectionend}\quad Section 1}
\end{document}

ただし、このソリューションでは、最後のサブセクションの後の addcontentsline により、ToC に間違ったページ番号が導入されます。この間違ったアンカーを修正する方法がわからなかったので、最初の句だけを使用して、ToC に「および以下」を表すドイツ語の「ff.」を追加することにしました。

sectionstart カウンターは読みやすさのためだけのものであり、セクションの ToC コードが最初の節に移動された場合はスキップできます。

\newcounter{clause}
\newcounter{sectionstart}

\begin{document}
\setcounter{sectionstart}{\value{clause}}
\refstepcounter{sectionstart} % increase by 1 as section should have at least 1 clause
\section*{Section 1}
\addcontentsline{toc}{section}{\S\arabic{sectionstart}\space ff.\enspace Section 1}

\refstepcounter{clause}
\subsubsection{\textbf{\S\arabic{clause}}}

\refstepcounter{clause}
\subsubsection{\textbf{\S\arabic{clause}}}

\end{document}

関連情報