Ладно, это может быть нетрадиционный вопрос.
Я хочу использовать диапазон подразделов (или подподразделов для целей форматирования) в качестве номера раздела.
Таким образом, для:
\section{First section}
\subsubsection{\S1}
\subsubsection{\S2}
\subsubsection{\S3}
Я хотел бы получить заголовок раздела и запись оглавления:
§1 - §3 First section
Таким образом, по сути, используйте текст первого (под)подраздела и текст последнего (под)подраздела раздела в качестве отображаемого «номера» раздела.
Я бы не возражал против явного указания этого числа в начале каждого раздела, если это нельзя сделать автоматически.
решение1
Ваша проблема состоит из нескольких различимых подзадач:
Получите номер
subsubsections
вbook
классе:\setcounter{secnumdepth}{3}
Непрерывная нумерация
subsubsections
: Это можно сделать с помощьюremreset
пакета, чтобы предотвратить сброс счетчикаsubsubsection
.Для подсчета по главам можно использовать
subsubsections
пакетxcntperchap
Для форматирования
section
заголовковsubsubsection
и я использовал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}
Хотя это решение вводит неправильные номера страниц в ToC из-за addcontentsline после последнего подподраздела. Я не знал, как исправить этот неправильный якорь, поэтому решил просто использовать первое предложение и добавить немецкое "ff." для "и следующее" в ToC.
Счетчик sectionstart нужен только для удобства чтения и может быть пропущен, если код оглавления раздела перенести в первое предложение.
\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}