目录中有句号,但参考文献中没有。

目录中有句号,但参考文献中没有。

我希望目录和章节标题中的罗马章节编号后面跟着一个句号。这是 MWE。

\documentclass{book}
\renewcommand{\thesection}{\Roman{section}.}
\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 This is Section \ref{l}.
\end{document}

这导致

加时赛

引用中出现了一个多余的句号。但是,如果我从

\renewcommand{\thesection}{\Roman{section}.}

目录中的点和章节标签随之消失。

目录和章节标签中没有句号

我该如何解决这个问题?谢谢。

答案1

必须防止将点写入标签的文件中,因此诀窍是.在写入时进行攻击。.aux\@currentlabel\p@section

\thesection这会通过改变\p@section\Roman{section}再次写入参考文献来吞噬点,但保留I.目录和标题的格式。

没有涉及其他类或包,缺点是\thesection必须记住的定义。

使用自动编号和标签编写定理条件这是此‘技巧’的另一种应用。

\documentclass{book}

\renewcommand{\thesection}{\Roman{section}.}


\makeatletter
\def\remove@@dot\csname the#1\endcsname{\Roman{#1}}
\def\p@section{\remove@@dot}
\makeatother

\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 This is Section \ref{l}.
\end{document}

在此处输入图片描述

答案2

最简单的方法是改变类别。KOMA-bundle 中的 scrbook 具有“自动点”功能,可仅在适当的位置添加句点:

\documentclass{scrbook}
\renewcommand{\thesection}{\Roman{section}}

\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 This is Section \ref{l}.
\end{document}

在此处输入图片描述

答案3

这是一个适用于book文档类的解决方案。它 (a) 使用包,并且 (b) 重置节级条目的tocloft低级 LaTeX 宏。\@seccntformat

\documentclass{book}

\renewcommand{\thesection}{\Roman{section}}
\makeatletter
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
   {\csname the#1\endcsname\quad}%     default
   {\csname #1@cntformat\endcsname}}%  enable individual control
\newcommand\section@cntformat{\thesection.\quad} % for section-level entries
\makeatother
\usepackage[titles]{tocloft}
\renewcommand{\cftsecaftersnum}{.} % place "." after section-level "number"

\begin{document}
\tableofcontents
\section{First section\label{l}}
This is Section \ref{l}.
\end{document}

答案4

您可以使用titlesectitletoc。但是这样会在所有部分级别的数字上添加一个点。

\documentclass{book}
\renewcommand{\thesection}{\Roman{section}}
\usepackage{titlesec}
\titlelabel{\thetitle.\enskip}
\usepackage[dotinlabels]{titletoc}
\begin{document}
\tableofcontents
\section{First section\label{l}}
Section \ref{l} contains new definitions.
\end{document}

在此处输入图片描述


以下是对 KOMA-Script 的额外建议,仅将点添加到节级别:

\documentclass[
  numbers=noenddot
  ]
  {scrbook}
\addtokomafont{disposition}{\rmfamily}
\renewcommand{\thesection}{\Roman{section}}

\usepackage{xpatch}
\xpatchcmd{\sectionformat}{\autodot}{.}{}{\PatchFailed}
\newcommand\sectionentrynumberformat[1]{\renewcommand\autodot{.}#1}
\RedeclareSectionCommand[
  tocentrynumberformat=\sectionentrynumberformat
]{section}

\usepackage{blindtext}
\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 Section \ref{l} contains new definitions.
%
\blinddocument
\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容