Fancyhdr 的部分标题标题中的额外点:如何删除?

Fancyhdr 的部分标题标题中的额外点:如何删除?

我喜欢使用阿拉伯数字带点在章节标题前面。例如,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 页的输出(本地,已注释):

第 5 页的输出(本地,注释)

第 5 页的输出(本地,未注释):

第 5 页的输出(本地,未注释)

我正在运行pdflatex3.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 代码的一部分,以便在目录中为章节和小节添加点(最后一张图)。

s

子

吨

% !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} 

在此处输入图片描述

相关内容