我喜欢使用阿拉伯数字带点在章节标题前面。例如,1. My section title
而不是1 My section title
或其他内容。为了实现这一点,语法简单的选项
\renewcommand\thesection{\arabic{section}.}
效果很好。点也出现在目录中,这很棒。接下来,我加载fancyhdr
包裹 (文档)。目的fancyhdr
是为了在的花哨标头中获得相同的格式。默认情况下(当\renewcommand\thesection{\arabic{section}.}
正在使用时),它提供两个点而不是所需的一个点,所以1.. My section title
不是1. My section title
。这是唯一的事情我想改。
在阅读了一些文档后,我猜测
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
可以。使用 Overleaf 进行编译,这没有帮助。改用我的本地(更新的)发行版进行编译,问题就解决了。
- 这是解决问题的合理/安全/规范的方法吗?
(“安全”——未来可能会正常工作,不会破坏后台的重要内容)
- 如果没有,有什么更好/替代的解决方案?(最好是微创、语法简单的解决方案)
MWE(取消注释我尝试的解决方案):
\documentclass{book}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage[colorlinks=true, linkcolor=blue, hypertexnames=false]{hyperref}
\renewcommand\thechapter{\Roman{chapter}}
\renewcommand\thesection{\arabic{section}.}
%\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} <-- uncomment this for my attempt
\begin{document}
\clearpage\thispagestyle{empty}
{\hypersetup{linkcolor=black}\tableofcontents}
\pagestyle{fancy}
\thispagestyle{empty}
\chapter{My chapter title}
\section{My chapter title}
\pagebreak
Why two dots in fancy header here?
\end{document}
第 5 页的输出(Overleaf,带注释或不带注释 - 没有区别):
第 5 页的输出(本地,已注释):
第 5 页的输出(本地,未注释):
我正在运行
pdflatex
3.141592653-2.6-1.40.22(MikTeX 21.3),并且我本地发行版中的每个软件包都于 2021 年 4 月 28 日更新。
答案1
没有titlesec
您需要更新两件事 - 章节标题中的章节单元编号(\@seccntformat
)以及目录中打印的内容(\cftsecafternsum
来自tocloft
):
\documentclass{book}
\usepackage{fancyhdr}
\usepackage{tocloft}
\renewcommand\thechapter{\Roman{chapter}}
\makeatletter
% Add dot after sectional unit number (for \section, \subsection, ...)
\renewcommand{\@seccntformat}[1]{\csname the#1\endcsname.\quad}
\makeatother
\renewcommand\thesection{\arabic{section}}% Remove chapter number from section number
\renewcommand{\cftsecaftersnum}{.}% Add dot after section number in ToC
\pagestyle{fancy}
\begin{document}
\tableofcontents
\chapter{My chapter title}
\section{My chapter title}
\clearpage
Why two dots in fancy header here? No more\ldots
\end{document}
不包括句号的原因\thesection
是,否则它将被包含在\ref
节的 s 中,这可能很奇怪,因为它们可能出现在句子中间。
答案2
更新您可以使用titlesec
已加载的包,将点添加到节号,而不是重新定义\thesection
。
在小节编号后以类似的方式进行。
我添加了一些虚拟文本来检查生成的标题fancyhdr
。
严格来说,fancyhdr
不需要解决双点问题。但它可以让您更好地控制页眉和页脚。
我添加了 Werner 代码的一部分,以便在目录中为章节和小节添加点(最后一张图)。
% !TeX TS-program = pdflatex
\documentclass{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage[compact,explicit]{titlesec}
\titleformat{\section}{\large\bfseries}{}{0pt}{\thesection .\quad #1} % section number with dot
\titleformat{\subsection}{\bfseries}{}{0pt}{\thesubsection .\quad #1} % subsection number with dot
\usepackage[colorlinks=true, linkcolor=blue, hypertexnames=false]{hyperref}
\renewcommand\thechapter{\Roman{chapter}}
% *********************************** TOC
\usepackage{tocloft} % added to correct TOC%
\renewcommand{\cftsecaftersnum}{.}% Add dot after section number in ToC
\renewcommand{\cftsubsecaftersnum}{.}% Add dot after subsection number in ToC
% *********************************** TOC
\usepackage{kantlipsum} % dummy text
\begin{document}
{\hypersetup{linkcolor=black}\tableofcontents}
\clearpage\thispagestyle{empty}
\chapter{My chapter title}
11. \kant[11-15]
\section{My section title (sec)}
12. \kant[12-16]
\subsection{My subsection title (subsec)}
14. \kant[14-18]
\newpage
Why two dots in fancy header here?
\end{document}
答案3
由于您加载了 titlesec,因此您可以使用它的\titlelabel
命令:
\documentclass{book}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage[colorlinks=true, linkcolor=blue, hypertexnames=false]{hyperref}
\titlelabel{\thetitle.\quad}
\renewcommand\thechapter{\Roman{chapter}}
\begin{document}
\clearpage\thispagestyle{empty}
{\hypersetup{linkcolor=black}\tableofcontents}
\pagestyle{fancy}
\thispagestyle{empty}
\chapter{My chapter title}
\section{My section title}
\pagebreak
Why two dots in fancy header here?
\end{document}