Usando intervalo de subseção para numeração de seção

Usando intervalo de subseção para numeração de seção

Ok, esta pode ser uma pergunta não convencional.

Quero usar o intervalo das subseções (ou subseções por motivos de formatação) como meu número de seção.

Então, para:

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

Gostaria de obter o título da seção e a entrada do ToC:

§1 - §3 First section

Então, basicamente, use o texto da primeira (sub) subseção e o texto da última (sub) subseção de uma seção como a seção exibida - "número".

Eu não me importaria de declarar explicitamente esse número no início de cada seção, se isso não puder ser feito automaticamente.

Responder1

Seu problema consiste em alguns subproblemas distinguíveis:

  1. Seja numerado subsubsectionsna bookaula:\setcounter{secnumdepth}{3}

  2. Numeração contínua de subsubsections: Isso pode ser feito usando remresetpackage para evitar o reset do subsubsectioncontador.

  3. Para contar subsubsectionspor capítulo, o pacote xcntperchappode ser usado

  4. Para formatar os títulos sectione subsubsection, usei o titlesecpacote


\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}

insira a descrição da imagem aqui

Responder2

Eu resolvi isso introduzindo contadores personalizados

\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}

Embora esta solução introduza números de página errados no ToC devido à linha addcontents após a última subseção. Eu não sabia como consertar aquela âncora errada, então decidi usar apenas a primeira cláusula e acrescentar o "ff" alemão. para "e o seguinte" no ToC.

O contador sectionstart é apenas para facilitar a leitura e pode ser ignorado se o código ToC da seção for movido para a primeira cláusula.

\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}

informação relacionada