目录中的大写部分(带有 hyperref)

目录中的大写部分(带有 hyperref)

我已经在 StackOverFlow 上看到了有关此问题的所有链接,但它们都无法帮助我。我尝试使用 hyperref 包将 ToC 中的部分名称更改为大写,但它不起作用。

这是我的代码:

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}

\usepackage{geometry}
\usepackage{caption}
\usepackage{indentfirst}
\linespread{1.5}
\usepackage{afterpage}
\usepackage{listofitems}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{lipsum}
\usepackage{array,mathtools}
\usepackage{graphicx}
\usepackage{float}
\usepackage{tikz}
\usepackage{pgfplots}
%\usepackage{xstring}
\usepackage{lastpage}
\pgfplotsset{compat=1.15}
\usepackage{geometry}
\usepackage{enumerate}
\usepackage[labelsep=endash,format=hang,font=small]{caption}
\geometry{a4paper,
    top=3cm,
    left=3cm,
    right=2cm,
    bottom=2cm,
}

\usepackage[num]{abntex2cite}


% MODIFICAR TÍTULOS DAS SEÇÕES DE FIGURAS, TABELAS E SUMÁRIO
\addto\captionsbrazil{%
    \renewcommand\contentsname{\hspace*{\fill}\bfseries\large\sffamily SUMÁRIO\hspace*{\fill}}
    \renewcommand\listfigurename{\hspace*{\fill}\bfseries\large\sffamily LISTA DE FIGURAS\hspace*{\fill}}
    \renewcommand\listtablename{\hspace*{\fill}\bfseries\large\sffamily LISTA DE TABELAS\hspace*{\fill}}
}

% AJUSTAR AS SEÇÕES E SUBSEÇÕES
\usepackage{titlesec}
\usepackage{titletoc}
\titlespacing*{\section}{0pt}{0pt}{1.5cm}
\titleformat{\section}[hang]
  {\bf\sffamily\large}{\thesection}{20pt}{\MakeUppercase}
\titlespacing*{\subsection}{0pt}{1.5cm}{1.5cm}
\titlespacing*{\subsubsection}{0pt}{1.5cm}{1.5cm}

% MODIFICAR O SUMÁRIO
\titlecontents{section}[1cm]{\bfseries\sffamily}{\contentslabel{3em}}
{\hspace{0em}}{\titlerule*[1pc]{.}\contentspage}

\titlecontents{subsection}[1cm]{\sffamily}{\contentslabel{3em}}
{\hspace{0em}}{\titlerule*[1pc]{.}\contentspage}

\titlecontents{subsubsection}[1cm]{\sffamily}{\contentslabel{3em}}
{\hspace{0em}}{\titlerule*[1pc]{.}\contentspage}

% MODIFICAR A LISTA DE FIGURAS
\titlecontents{figure}[0em]{
    Figura~\thecontentslabel \enspace - \enspace
}{}{\hspace{0em}}{\titlerule*[1pc]{.}\contentspage}

% MODIFICAR LISTA DE TABELAS
\titlecontents{table}[0em]{
    Tabela~\thecontentslabel \enspace - \enspace
}{}{\hspace{0em}}{\titlerule*[1pc]{.}\contentspage}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} 
\fancyhead[RO,LE]{\thepage}
\fancyhead[RE,LO]{}
\renewcommand{\headrulewidth}{0pt}
\usepackage[colorlinks=true, linkcolor=blue, citecolor=blue, filecolor=blue, urlcolor=blue]{hyperref}

答案1

我无法理解你的 MWE;没有\documentclass和 没有\begin{document}\end{document}。我没有看到任何提及hyperref

最简单的方法可能是使用\section命令的可选参数,该参数被放入目录和标题中。下面我重新定义了\section大写目录条目,但消除了使用可选参数的机会。

% sectocprob.tex  SE 566966

\documentclass{book}
\usepackage{lipsum}

\let\oldsec\section
\renewcommand{\section}[1]{\oldsec[\MakeUppercase{#1}]{#1}}

\begin{document}
\tableofcontents

\chapter{One}
\section{First section}
\lipsum[1]
\clearpage
\lipsum[2]
\clearpage
\lipsum[3]
\end{document}

如果您需要在目录中使用大写字母但在标题中不需要大写字母,请考虑使用提供memoir两个可选部分参数的类,一个用于目录,另一个用于标题。

答案2

@BlackBird 给了我最简单的解决方案,而且效果很好。我只需要将选项放在部分命令中:

\section[INTRODUCTION]{Introduction}

谢谢你们所有人。

相关内容