使用 titletoc/titlesec 根据章节/节格式化目录

使用 titletoc/titlesec 根据章节/节格式化目录

在我的书中,我需要将章节用粗体大写,将部分用大写常规字母,将小节用粗体常规字母,将小节用斜体常规字母。

在文本中,我设法使用 titletoc/titlesec 包实现了这一点。然而,在 中\tableofcontents,条目仅使用粗体和斜体进行相应格式化。我根本无法将章节/部分名称设为大写!其他一切都恰好符合我的要求。

我将其添加\MakeUppercase到了中的几个地方\titlecontents但要么产生错误要么根本不起作用。

有人能解释一下我在这里搞什么鬼吗?

这是我的 MWE:

\begin{filecontents*}{temp.bib}
@book{sadiku,
    author = {Alexander, C.K. and Sadiku, M.N.O.},
    title = {Fundamentos de Circuitos Elétricos},
    edition = {5ª edição},
    isbn = {978-85-8055-173-0},
    publisher = {{AMGH} Editora},
    location = {Porto Alegre},
    date = {2013}
}
\end{filecontents*}

\documentclass[a4paper, 12pt, oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage[portuguese]{babel}
\usepackage{titletoc}
\titlecontents                {chapter}[3.5pc]{\bfseries}{\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents                {section}[3.5pc]{}         {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents             {subsection}[3.5pc]{\bfseries}{\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents          {subsubsection}[3.5pc]{\itshape} {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents{numberless-entry-format}[3.5pc]{}         {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}

\setcounter{tocdepth}{3}

\setcounter{secnumdepth}{3}

\let\cleardoublepage=\clearpage

\addto\captionsportuguese{\renewcommand\contentsname{\hfill\bfseries\MakeUppercase Sumário \hfill}}
\addto\captionsportuguese{\renewcommand\listfigurename{\hfill\bfseries\MakeUppercase Lista de Figuras \hfill}}
\addto\captionsportuguese{\renewcommand\listtablename{\hfill\bfseries\MakeUppercase Lista de Tabelas \hfill}}

\usepackage{titlesec}
\titleformat      {\chapter}[hang]{\bfseries\MakeUppercase}{\thechapter}      {10pt}{\bfseries}
\titleformat      {\section}[hang]{\MakeUppercase}         {\thesection}      {10pt}{}
\titleformat   {\subsection}[hang]{\bfseries}              {\thesubsection}   {10pt}{\bfseries}
\titleformat{\subsubsection}[hang]{\itshape}               {\thesubsubsection}{10pt}{\itshape}

\titlespacing      {\chapter}{0pt}{-20pt}{5pt}
\titlespacing      {\section}{0pt}{5pt}  {5pt}
\titlespacing   {\subsection}{0pt}{5pt}  {5pt}
\titlespacing{\subsubsection}{0pt}{5pt}  {5pt}

\usepackage[style=abnt, extrayear, url=true]{biblatex}
\addbibresource{temp.bib}

\begin{document}

\tableofcontents

\chapter{Chapter}
\section{Section}
\subsection{Subsection}
\subsubsection{Subsubsection}
\cite{sadiku}

{\linespread{1} 
\printbibliography[
    heading=bibintoc,   % Faz aparecer a bibliografia no sumário
    title={Referências Bibliográficas} % Muda o nome do capítulo
    ]}

\chapter*{Numberless chapter}
\addcontentsline{toc}{chapter}{Numberless chapter}

\end{document}

答案1

因此我设法回答了我最初的问题并找到了 MWE 没有考虑到的原始错误。

必须\MakeUppercase在 之后添加\contentslabel{3.5pc}。我只会发布包含所有内容的摘录\titlecontents{...}

\titlecontents                {chapter}[3.5pc]{\bfseries}{\contentslabel{3.5pc}\MakeUppercase}{\MakeUppercase}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents                {section}[3.5pc]{}         {\contentslabel{3.5pc}\MakeUppercase}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents             {subsection}[3.5pc]{\bfseries}{\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents          {subsubsection}[3.5pc]{\itshape} {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents{numberless-entry-format}[3.5pc]{}         {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}

仍然不确定最后一个是否有用。

现在我发现 titletoc 和 hiperref 之间存在冲突。我会继续研究这个问题!但关于 MWE 的原始问题已经得到解答了!我只是一开始没有创建合适的 MWE...

我找到了这个帖子这回答了我的问题。由于我使用的\chapter*{}是附录,所以作者的问题没有发生在我的代码中。总而言之,问题是由于命令而发生的\MakeUppercase。用命令替换它对\uppercase我来说没问题。不知道这是否是好的做法。也许使用其他包有更好的方法。但我想,既然它有效,那就没问题了?

最后摘录:

\titlecontents                {chapter}[3.5pc]{\bfseries}{\contentslabel{3.5pc}\uppercase}{\uppercase}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents                {section}[3.5pc]{}         {\contentslabel{3.5pc}\uppercase}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents             {subsection}[3.5pc]{\bfseries}{\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents          {subsubsection}[3.5pc]{\itshape} {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}
\titlecontents{numberless-entry-format}[3.5pc]{}         {\contentslabel{3.5pc}}{}{\titlerule*[0.3pc]{.}\contentspage}

相关内容