我希望我的章节标题根据其是否列在目录中或正文中而具有不同的“样式”(不确定这是否是正确的词)。这可能不太清楚,所以让我演示一下。
在正文中,我想看到:
Article I. Intro
....
Article II. Methods
....
但在目录中我希望看到
I. Intro .......... 5
II. Methods ........10
没有“文章”部分。
现在,我正在使用它来设置章节标题:
\renewcommand{\thesection}{Article \Roman{section}.}
我应该提到我正在使用这个article
课程。
答案1
该titlesec
包用于在章节编号前添加“文章”,并在编号后添加点。该tocloft
包用于在目录条目中的编号后添加点,并增加为编号保留的空间:
\documentclass{article}
\usepackage{titlesec}
\usepackage{tocloft}
\renewcommand\thesection{\Roman{section}}
\titleformat{\section}
{\normalfont\Large\bfseries}{Article~\thesection.}{1em}{}
\renewcommand\cftsecaftersnum{.}
\addtolength\cftsecnumwidth{1em}
\begin{document}
\tableofcontents
\section{Introduction}
\section{Methods}
\end{document}
答案2
您可以使用“The LaTeX Companion”第 26f 页中描述的方法生成以下输出:
\documentclass{article}
\renewcommand{\thesection}{\Roman{section}}
\makeatletter
%% The "\@seccntformat" command is an auxiliary command
%% (see pp. 26f. of 'The LaTeX Companion,' 2nd. ed.)
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
{\csname the#1\endcsname\ }% default
{\csname #1@cntformat\endcsname}% enable individual control
}
%% Put everything together by defining the macros
%% '\...@seccntformat', where ... can be 'section',
%% 'subsection', etc.
\newcommand{\section@cntformat}{Article \thesection. }
\makeatother
\begin{document}
\tableofcontents
\section{Intro}
\section{Methods}
\end{document}
附录:你可能已经注意到,这种方法不是在目录中的罗马章节编号后插入一个句号。(我不喜欢不必要地提供标点符号……)如果你做需要目录中罗马数字后面的点,请确保加载tocloft
包并发出命令\renewcommand\cftsecaftersnum{.}
(当然是在序言中)。并且,如果您需要目录样式的章节标题和相关页码之间的点线,则应\renewcommand\cftsecleader{\cftdotfill{\cftdotsep}}
在加载tocloft
包后发出命令。