TOC에는 있지만 참조에는 없는 기간

TOC에는 있지만 참조에는 없는 기간

나는 로마자 섹션 번호 뒤에 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

가장 쉬운 방법은 클래스를 변경하는 것입니다. KOMA 번들의 스크북에는 적절한 위치에만 마침표를 추가하는 "자동 도트" 기능이 있습니다.

\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

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}

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

관련 정보