TOC とセクション タイトルで、ローマ字のセクション番号の後にピリオドを付けたいです。これが 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 スクリプトの提案を次に示します。
\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}