我希望目錄和章節標題中的羅馬章節編號後面跟著一個句點。這是 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
答案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
您可以使用titlesec
和titletoc
。但隨後會在所有部分層級的數字上添加一個點。
\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}