仅在目录中将章节标题更改为小型大写字母

仅在目录中将章节标题更改为小型大写字母

我是 LaTeX 新手,已经遇到了第一个问题。我想将目录中的所有章节标题都改为小写,但是不是在文中。

我正在使用 WriteLaTeX 和article作为文档类。

我的文档结构如下

\documentclass{article}

\begin{document}

\tableofcontents

\newpage
\section{Section 1}
\subsection{Section 1.1}
\subsection{Section 1.2}

\newpage
\section{Section 2}

\newpage
\section{Section 3}
\end{document}

答案1

最优解决方案

加载tocloft包并将\renewcommand{\cftsecfont}{\scshape}其放在前导码后面。MWE:

\documentclass[11pt]{article}
\usepackage{tocloft}
\renewcommand{\cftsecfont}{\scshape}
\begin{document}

\title{My document}
\maketitle

\tableofcontents

\section{first section}
bla

\subsection{a subsection}
bla

\section{second section}
bla
\end{document}

这只会改变目录,而不会改变标题。

低于标准的解决方案

如果由于某种原因你无法加载 tocloft,这是有史以来最丑陋的黑客攻击:

% make your sections using \newsection{title}

\newcommand{\newsection}[1]{
\stepcounter{section}
\section*{\arabic{section}. #1}
\addcontentsline{toc}{section}{\scshape \arabic{section}. #1}
}

答案2

仅供比较,以下是使用titletoc包中,重要的部分是

\titlecontents{section}
[0pt]                                               % left margin
{}%
{\contentsmargin{0pt}                               % numbered entry format
    \thecontentslabel\enspace%
    \large\scshape}
{\contentsmargin{0pt}\large}                        % unnumbered entry format
{\titlerule*[.5pc]{.}\contentspage}                 % filler-page format (e.g dots)
[]                                                  % below code (e.g vertical space)

我加载了hyperref包仅用于演示。

这是一个完整的 MWE,可供使用。

% arara: pdflatex

\documentclass{article}
\usepackage{titletoc}
\usepackage{hyperref}

\titlecontents{section}
[0pt]                                               % left margin
{}%
{\contentsmargin{0pt}                               % numbered entry format
    \thecontentslabel\enspace%
    \large\scshape}
{\contentsmargin{0pt}\large}                        % unnumbered entry format
{\titlerule*[.5pc]{.}\contentspage}                 % filler-page format (e.g dots)
[]                                                  % below code (e.g vertical space)


\begin{document}

\tableofcontents
\loop
\section{Section text}
\ifnum\value{section}<5\repeat

\end{document}

答案3

以下代码将把所有部分标题更改为小写字体:

\documentclass{article}

\usepackage[T1]{fontenc}

\makeatletter
\renewcommand*\l@section[2]{%
  \ifnum \c@tocdepth >\z@
    \addpenalty\@secpenalty
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      \scshape #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
    \endgroup
  \fi}
\makeatother

\begin{document}

\tableofcontents

\newpage
\section{Section 1}
\subsection{Section 1.1}
\subsection{Section 1.2}

\newpage
\section{Section 2}

\newpage
\section{Section 3}
\end{document}

重新定义命令l@section,将所有部分改为小写。fontenc用于使目录中出现粗体小写字母。

相关内容