章节编号仅包括最低章节级别

章节编号仅包括最低章节级别

我希望文档中的主要部分(章节、节)不编号,但子节和子小节有编号。我希望每个新单元的编号都重新开始。

我试图通过添加可预置的内容来更改编号:

\renewcommand{\thesubsection}{\arabic{subsection}}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}

但是编号会在整个文档中继续,并且不会在每个部分重新开始,我猜它会在每个更高级别的编号部分之后重新开始。

我想要实现的是在文档正文中;*chapter始终进行编号,有时加星号,有时不加。*sectionsubsubsectionsubsection

这是最小的工作示例:

\documentclass{book}
\usepackage{fontspec}
\usepackage{polyglossia}

\setmainlanguage{polish}
\setotherlanguage[locale=mashriq]{arabic}
\setromanfont[Mapping=tex-text]{Linux Libertine O}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.3,Mapping=arabicdigits]{Scheherazade}

\renewcommand{\thesubsection}{\arabic{subsection}}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{0}

\begin{document}

\chapter*{Pierwszy}
\addcontentsline{toc}{chapter}{Pierwszy}

\section*{Jakaś część}
\subsection{To też}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection{I to również}
\subsubsection{ccc}
\subsubsection{dddd}

\section*{Inna część}
\subsection*{A to podpunkt}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection*{I to}
\subsubsection{ccc}
\subsubsection{dddd}



\chapter*{Drugi}
\addcontentsline{toc}{chapter}{Drugi}

\section*{Jakaś część}
\subsection*{To też}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection*{I to również}
\subsubsection{ccc}
\subsubsection{dddd}

\section*{Inna część}
\subsection{A to podpunkt}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection{I to}
\subsubsection{ccc}
\subsubsection{dddd}

\tableofcontents

\end{document}

也许我试图用错误的工具来实现我所不想实现的目标。谢谢任何提示。

答案1

我不认为这是个好主意,但这本书是你的。这些数字应该可以帮助读者在书中找到方向。

但这里有一种方法可以实现它。

\documentclass{book}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{fancyhdr} % this is necessary
\usepackage{kantlipsum} % this is only to provide mock text

\setmainlanguage{polish}
\setmainfont[Ligatures=TeX]{Linux Libertine O}

\renewcommand{\thesubsection}{\arabic{subsection}}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{0}

%%% ADDED CODE
\makeatletter
\def\@seccntformat#1{\csname mythe#1\endcsname}
\def\mythesubsection{\thesubsection\quad}
\def\mythesubsubsection{\thesubsubsection\quad}
\let\latex@subsection\subsection
\def\subsection{\@ifstar{\refstepcounter{subsection}\latex@subsection*}{\latex@subsection}}
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip 40\p@
  }}
\let\latex@l@chapter\l@chapter
\def\l@chapter#1#2{\begingroup\let\numberline\@gobble\latex@l@chapter{#1}{#2}\endgroup}
\makeatother

\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[RE]{\slshape\leftmark}
\fancyhead[LO]{\slshape\rightmark}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}}
%%% END ADDED CODE

\begin{document}

\chapter{Pierwszy}

\section{Jakaś część}
\subsection{To też}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection{I to również}
\subsubsection{ccc}
\subsubsection{dddd}

\section{Inna część}
\subsection*{A to podpunkt}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection*{I to}
\subsubsection{ccc}
\subsubsection{dddd}



\chapter{Drugi}

\section{Jakaś część}
\subsection*{To też}
\subsubsection{aaa}
\kant[1]

\subsubsection{bbb}
\kant[1]

\subsection*{I to również}
\subsubsection{ccc}
\kant[1]

\subsubsection{dddd}
\kant


\section{Inna część}
\subsection{A to podpunkt}
\subsubsection{aaa}
\subsubsection{bbb}
\subsection{I to}
\subsubsection{ccc}
\subsubsection{dddd}

\tableofcontents

\end{document}

需要进行一些解释。

  1. 最简单且记录最详尽的 hack 是使用 的 hack ,其中设置了标题的定义方式。该 hack 包括通过重新定义和fancyhdr来从标题中删除“第 n 章”或节号位。\chaptermark\sectionmark

  2. \section以下每个分段命令均执行\@seccntformat{<level>},其中<level>代表sectionsubsection依此类推。通常的定义是

    \def\@seccntformat#1{\csname the#1\endcsname\quad}
    

    我将其重新定义为

    \def\@seccntformat#1{\csname mythe#1\endcsname}
    

    等等\mythesection将依次执行或什么也没有如果命令未定义。因此定义\mythesubsection和就足够了\mythesubsubsection

  3. 我也重新定义了\@makechapterhead,删除了设置“第 n 章”的部分。

  4. \subsection被重新定义,这样数字无论如何都会被分步。有人可能更喜欢

    \def\subsection{%
      \@ifstar
        {\setcounter{subsubsection}{0}\latex@subsection*}
        {\latex@subsection}}
    

    这样,子段号就不会递增,而只是将子段计数器重置为 0。

  5. 最后\l@chapter进行修改,以便\numberline忽略其参数并且章节编号不会出现在目录中。

相关内容