使用小節範圍進行節編號

使用小節範圍進行節編號

好吧,這可能是一個非常規的問題。

我想使用小節(或出於格式原因的子小節)的範圍作為我的節號。

因此對於:

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

我想取得章節標題和目錄條目:

§1 - §3 First section

因此,基本上使用節的第一個(子)小節的文字和最後一個(子)小節的文字作為顯示的節「數字」。

如果不能自動完成,我不介意在每個部分的開頭明確聲明這個數字。

答案1

您的問題由幾個可區分的子問題組成:

  1. subsubsectionsbook課堂上取得編號:\setcounter{secnumdepth}{3}

  2. 連續編號subsubsections:這可以使用remreset套件來完成,以防止計數器重置subsubsection

  3. 要計算每章的數量,可以使用subsubsections該包xcntperchap

  4. 為了格式化sectionsubsubsection標題,我使用了titlesec


\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 而在目錄中引入了錯誤的頁碼。我不知道如何修復錯誤的錨點,所以我決定只使用第一個子句並附加德語“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}

相關內容