如何在同时使用 fancyhdr 和 titlesec 时使章节名称出现在目录中

如何在同时使用 fancyhdr 和 titlesec 时使章节名称出现在目录中

我们想要的是前言出现在目录中,但如下面的屏幕截图所示,虽然虚线也与页码一起出现,但章节名称似乎不可见。

在此处输入图片描述

当我们尝试使该部分出现在目录中时,我们使用以下几行:

\input{sections/0_Preface}
\addcontentsline{toc}{section}{\hspace*{2.2em}\nameref{sec:preface}} % ---- ADDS PREFACE TO THE TOC

导致这种情况的原因可能是我们同时使用了 titlesec 和 fancyhdr,尽管它们相互冲突。如果我们删除 titlesec 包,则节名称会突然出现在目录中:

在此处输入图片描述

当仍然使用 titlesec 和 fancyhdr 时,我们如何使章节名称出现在目录中?我们需要 fancyhdr 用于页眉、页脚等,以及 titlesec 用于更改章节的字体大小。

平均能量损失

\documentclass[11pt, report]{report}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\graphicspath{ {./figures/} }
\usepackage{lastpage}
\usepackage{array}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{float}

\usepackage[pagestyles]{titlesec} % <------ This here 
\titleformat{\section}{\bfseries\LARGE}{\hspace{1ex}\Huge\thesection}{2ex}{} %<--- changes font size of sections

\usepackage{fancyhdr} %<---- Before that there
\usepackage{color}
\usepackage{hyperref}
\usepackage{lastpage,refcount,atbegshi}
\usepackage{lipsum}

\title{Header}   % Title
\author {Ahmad Ahmadsen} % Author
\date{\today} % Date

\makeatletter
\let\mytitle\@title
\let\theauthor\@author
\let\thedate\@date
\makeatother

\pagestyle{fancy} 
\fancyhf{} 
\lhead{\mytitle} 

\rfoot{\thepage \space} 
\lfoot{University} 

\begin{document}

\pagenumbering{Roman} 

\input{sections/0_Preface}
\addcontentsline{toc}{section}{\hspace*{2.2em}\nameref{sec:preface}} % ---- ADDS PREFACE TO THE TOC

\cfoot{\thepage \space of \pageref{LastPage}}
\rfoot{} 
\lfoot{} 

\renewcommand \thesection{\arabic{section}}

\pagenumbering{gobble}

\pagenumbering{arabic}

\vspace*{-20em}\tableofcontents\numberline{} 

%\tableofcontents
\thispagestyle{empty}

\clearpage
\setcounter{page}{1}
\setcounter{tocdepth}{3}
\newpage


% Add sections here!
\section{Introduction}
\subsection{Motivation}
\subsection{Research Question}

\newpage

\section{Analysis}
\subsection{analys 1}
\subsection{analys 2}
\subsection{analys 3}

\end{document}

0_前言文件:

\section*{Preface} \label{sec:preface}

\clearpage

答案1

更新:

这似乎是软件包hyperrefnameref由 加载hyperref)和titlesec(参见https://tex.stackexchange.com/a/397032/113546)。所以我用那里给出的解决方案来解决冲突。

\makeatletter
\newcommand*{\starsection}[1]{%
  \section*{#1}%
  \NR@gettitle{#1}%
}
\makeatother

然后使用\starsection而不是\section*

  • 删除了该pagestyles选项
  • 替换\input{sections/0_Preface}
\chapter*{Preface}
\label{sec:preface}
  • 已重命名\thetitle\TheTitle
  • 删除了页脚字段的重新定义。
  • 顺便说一句,如果您在 中写入Preface而不是,这个问题就会消失。您仍然可以通过添加对宏的调用并使用而不是 来简化操作。请参阅下面的第二个解决方案。\nameref{sec:preface}\addcontentsline\addcontentsline\starsection#1\nameref{sec:preface}
\documentclass[11pt, report]{report}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\graphicspath{ {./figures/} }
\usepackage{lastpage}
\usepackage{array}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{float}

\usepackage{titlesec}
\titleformat{\section}{\bfseries\LARGE}{\hspace{1ex}\Huge\thesection}{2ex}{} %<--- changes font size of sections

\usepackage{fancyhdr}
\usepackage{color}
\usepackage{hyperref}
\usepackage{lastpage,refcount,atbegshi}
\usepackage{lipsum}

\title{Header}   % Title
\author {Ahmad Ahmadsen} % Author
\date{\today} % Date

\makeatletter
\newcommand*{\starsection}[1]{%
  \section*{#1}%
  \NR@gettitle{#1}%
}
\let\TheTitle\@title
\let\TheAuthor\@author
\let\TheDate\@date
\makeatother

\pagestyle{fancy} 
\fancyhf{} 
\lhead{\TheTitle} 

\rfoot{\thepage \space} 
\lfoot{University} 

\begin{document}

\pagenumbering{Roman} 

%\input{sections/0_Preface}
\starsection{Preface} 
\label{sec:preface}
\addcontentsline{toc}{section}{\hspace*{2.2em}\nameref{sec:preface}} % ---- ADDS PREFACE TO THE TOC

% \cfoot{\thepage \space of \pageref{LastPage}}
% \rfoot{} 
% \lfoot{} 

\renewcommand \thesection{\arabic{section}}

\pagenumbering{gobble}

\pagenumbering{arabic}

\vspace*{-20em}\tableofcontents\numberline{} 

%\tableofcontents
\thispagestyle{empty}

\clearpage
\setcounter{page}{1}
\setcounter{tocdepth}{3}
\newpage


% Add sections here!
\section{Introduction}
\subsection{Motivation}
\subsection{Research Question}

\newpage

\section{Analysis}
\subsection{analys 1}
\subsection{analys 2}
\subsection{analys 3}

\end{document}

\contentsline添加了宏的版本\starsection

\documentclass[11pt, report]{report}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\graphicspath{ {./figures/} }
\usepackage{lastpage}
\usepackage{array}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{float}

\usepackage{titlesec}
\titleformat{\section}{\bfseries\LARGE}{\hspace{1ex}\Huge\thesection}{2ex}{} %<--- changes font size of sections

\usepackage{fancyhdr}
\usepackage{color}
\usepackage{hyperref}
\usepackage{lastpage,refcount,atbegshi}
\usepackage{lipsum}

\title{Header}   % Title
\author {Ahmad Ahmadsen} % Author
\date{\today} % Date

\makeatletter
\newcommand*{\starsection}[1]{%
  \section*{#1}%
  \NR@gettitle{#1}%
  \addcontentsline{toc}{section}{\hspace*{2.2em}#1}%
}
\let\TheTitle\@title
\let\TheAuthor\@author
\let\TheDate\@date
\makeatother

\pagestyle{fancy} 
\fancyhf{} 
\lhead{\TheTitle} 

\rfoot{\thepage \space} 
\lfoot{University} 

\begin{document}

\pagenumbering{Roman} 

%\input{sections/0_Preface}
\starsection{Preface} 
\label{sec:preface}

% \cfoot{\thepage \space of \pageref{LastPage}}
% \rfoot{} 
% \lfoot{} 

\renewcommand \thesection{\arabic{section}}

\pagenumbering{gobble}

\pagenumbering{arabic}

\vspace*{-20em}\tableofcontents\numberline{} 

%\tableofcontents
\thispagestyle{empty}

\clearpage
\setcounter{page}{1}
\setcounter{tocdepth}{3}
\newpage


% Add sections here!
\section{Introduction}
\subsection{Motivation}
\subsection{Research Question}

\newpage

\section{Analysis}
\subsection{analys 1}
\subsection{analys 2}
\subsection{analys 3}

\end{document}

在此处输入图片描述

相关内容