섹션 번호 매기기에 하위 섹션 범위 사용

섹션 번호 매기기에 하위 섹션 범위 사용

좋습니다. 이것은 색다른 질문일 수도 있습니다.

하위 섹션 범위(또는 서식 지정상의 이유로 하위 섹션)를 섹션 번호로 사용하고 싶습니다.

그래서:

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

섹션 제목과 ToC 항목을 얻고 싶습니다.

§1 - §3 First section

따라서 기본적으로 섹션의 첫 번째 (하위)하위 섹션의 텍스트와 마지막 마지막 (하위)하위 섹션의 텍스트를 표시된 섹션 "번호"로 사용합니다.

자동으로 수행할 수 없는 경우 각 섹션의 시작 부분에 이 번호를 명시적으로 선언해도 괜찮습니다.

답변1

문제는 몇 가지 구별 가능한 하위 문제로 구성됩니다.

  1. subsubsections수업 시간 에 번호 매기기 book:\setcounter{secnumdepth}{3}

  2. 연속 번호 매기기 : 카운터 재설정을 방지하기 위해 패키지를 subsubsections사용하여 수행할 수 있습니다 .remresetsubsubsection

  3. 장당 개수를 계산하려면 subsubsections패키지를 xcntperchap사용할 수 있습니다 .

  4. 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}

이 솔루션은 마지막 하위 섹션 이후의 addcontentsline으로 인해 ToC에 잘못된 페이지 번호를 도입합니다. 나는 잘못된 앵커를 수정하는 방법을 몰랐기 때문에 첫 번째 절을 사용하고 독일어 "ff"를 추가하기로 결정했습니다. "및 다음"에 대해 ToC에 추가합니다.

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}

관련 정보