나는 로마자 섹션 번호 뒤에 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}.}
,
TOC 및 섹션 레이블의 점이 함께 사라집니다.
이 문제를 어떻게 해결할 수 있나요? 감사합니다.
답변1
라벨용 파일 .
에 점을 쓰는 것을 방지해야 하므로 쓰기에 관해서는 공격하는 것이 요령입니다 ..aux
\@currentlabel
\p@section
이는 참조를 \thesection
변경 \p@section
하고 다시 작성하여 점을 집어넣지만 ToC 및 제목의 형식은 유지합니다. \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}