重新定义没有包的 ToC 条目样式

重新定义没有包的 ToC 条目样式

我将序言中的章节、小节和小节样式重新定义为

\renewcommand\section{%
  \@startsection{section}{1}
                {\z@}%
                {-3.5ex \@plus -1ex \@minus -.2ex}%
                {2.3ex \@plus.2ex}%
                {\normalfont\normalsize\bfseries\uppercase}%
}

\renewcommand\subsection{%
  \@startsection{subsection}{2}
                {\z@}%
                {-3.25ex\@plus -1ex \@minus -.2ex}%
                {2.3ex \@plus.2ex}%
                {\normalfont\normalsize\MakeUppercase}
}

\renewcommand\subsubsection{%
  \@startsection{subsubsection}{3}
                {\z@}%
                {-3.25ex\@plus -1ex \@minus -.2ex}%
                {2.3ex \@plus.2ex}%
                {\normalfont\normalsize\bfseries}
}

我希望它在目录中以相同的方式显示。我尝试使用 tocloft,但它会与其他内容混淆。如何在不使用任何包的情况下做到这一点?

答案1

嗯,找到解决办法了:)

将这段代码放在我的序言中

\let\stdl@section\l@section
\renewcommand*{\l@section}[2]{%
  \stdl@section{\normalfont\normalsize\bfseries\uppercase{#1}}
{\normalfont\normalsize\bfseries\uppercase{#2}}}

交易完成了。对 subsection 和 subsubsecion 也可以做同样的事 ;) 只剩下一个小细节:特殊字符不大写,例如:

á é í ó ú à õ ô

我不知道为什么在生成 PDF 时放置\MakeUppercase而不是\uppercase会出现随机错误。我会深入研究一下,看看会发生什么。

@Update 猜测 hyperref 包有问题\MakeUppercase。我删除了 hyperref 包并更改了所有\uppercasefor \MakeUppercase,它就可以正常工作了。我实际用来修改 ToC 外观的代码是:

\let\stdl@section\l@section
\renewcommand*{\l@section}[2]{%
  \stdl@section{\MakeUppercase{#1}}{#2}}

\let\stdl@subsection\l@subsection
\renewcommand*{\l@subsection}[2]{%
  \stdl@subsection{\normalfont\MakeUppercase{#1}}{#2}}

\let\stdl@subsubsection\l@subsubsection
\renewcommand*{\l@subsubsection}[2]{%
  \stdl@subsubsection{\bfseries{#1}}{#2}}

相关内容