我希望文档中的主要部分(章节、节)不编号,但子节和子小节有编号。我希望每个新单元的编号都重新开始。
我试图通过添加可预置的内容来更改编号:
\renewcommand{\thesubsection}{\arabic{subsection}}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}
但是编号会在整个文档中继续,并且不会在每个部分重新开始,我猜它会在每个更高级别的编号部分之后重新开始。
我想要实现的是在文档正文中;*chapter
始终进行编号,有时加星号,有时不加。*section
subsubsection
subsection
这是最小的工作示例:
\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}
需要进行一些解释。
最简单且记录最详尽的 hack 是使用 的 hack ,其中设置了标题的定义方式。该 hack 包括通过重新定义和
fancyhdr
来从标题中删除“第 n 章”或节号位。\chaptermark
\sectionmark
\section
以下每个分段命令均执行\@seccntformat{<level>}
,其中<level>
代表section
,subsection
依此类推。通常的定义是\def\@seccntformat#1{\csname the#1\endcsname\quad}
我将其重新定义为
\def\@seccntformat#1{\csname mythe#1\endcsname}
等等
\mythesection
将依次执行或什么也没有如果命令未定义。因此定义\mythesubsection
和就足够了\mythesubsubsection
。我也重新定义了
\@makechapterhead
,删除了设置“第 n 章”的部分。\subsection
被重新定义,这样数字无论如何都会被分步。有人可能更喜欢\def\subsection{% \@ifstar {\setcounter{subsubsection}{0}\latex@subsection*} {\latex@subsection}}
这样,子段号就不会递增,而只是将子段计数器重置为 0。
最后
\l@chapter
进行修改,以便\numberline
忽略其参数并且章节编号不会出现在目录中。