仅获取目录中的大写字母

仅获取目录中的大写字母

我想修改目录,使其中的所有字母都变成大写字母。如何在不改变布局的情况下实现此目的?我的字体没有小写字母,因此我不能简单地使用

{\scshape \tableofcontents}

另外,我发现了以下代码片段,但它只改变了部分内容:

\usepackage{textcase, etoolbox}
\makeatletter
\patchcmd{\l@section}{#1}{\MakeTextUppercase{#1}}{}{}
\makeatother

答案1

对于 ,article您可以使用tocloftetoolbox将您的节、小节和小小节大写。对于book环境,您需要替换section->chaptercftsecfont->cftchapfont

\documentclass{article}
\usepackage{tocloft}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\l@section}
    {\cftsecfont #1}
    {\cftsecfont {#1}}
    {}
    {}
\makeatother
\renewcommand\cftsecfont{\bf\MakeUppercase} 

\makeatletter
\patchcmd{\l@subsection}
    {\cftsubsecfont #1}
    {\cftsubsecfont {#1}}
    {}
    {}
\makeatother
\renewcommand\cftsubsecfont{\small\MakeUppercase}  

\makeatletter
\patchcmd{\l@subsubsection}
    {\cftsubsubsecfont #1}
    {\cftsubsubsecfont {#1}}
    {}
    {}
\makeatother
\renewcommand\cftsubsubsecfont{\small\MakeUppercase}  

\begin{document}

\tableofcontents 

\section{First one}
\section{Second one}
\subsection{Subsection}
\subsubsection{Subsubsection}

\end{document}

例子

此外,您还可以使用和\section[UPPERCASED TEXT]{Normal text}来实现相同的效果。\subsection[]{}\subsubsection[]{}

希望它能起作用!祝你有个愉快的一天!

相关内容