目录中的罗马数字页码不正确

目录中的罗马数字页码不正确

我正在写一份报告,其中有阿拉伯数字和罗马数字页码。阿拉伯数字可以正确显示,没有任何问题,但罗马数字只显示目录前最后一个页码。

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[nottoc]{tocbibind}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{float}
\usepackage{bm}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{gobble}

\title{
    {\includegraphics[scale=0.7]{Logo.png}}
    \\\vspace{\baselineskip}\textbf{Project name}
}
\author{Me\\\\by\\\\Me\\\\xxxx}
\date{\vspace{5cm}Word Count: xxxx}

\pagenumbering{roman}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[R]{\thepage}
\fancyhead[L]{Class}
\fancyfoot{}
\fancyfoot[L]{Me}

\begin{document}

\maketitle
\pagenumbering{}

\pagebreak


\pagenumbering{roman}

\fancyhead{}
\fancyhead[L]{Class}
\fancyhead[R]{\thepage}
\section*{Originality Statement}
Stuff

\section*{Acknowledgements}
More stuff

\newpage
\section*{Abstract}
Insert abstract here

\newpage
\fancyfoot{}
\tableofcontents
\addcontentsline{toc}{section}{\protect\numberline{}Originality Statement}
\addcontentsline{toc}{section}{\protect\numberline{}Acknowledgements}
\addcontentsline{toc}{section}{\protect\numberline{}Abstract}

\newpage
\listoffigures{}

\newpage

\pagenumbering{arabic}
\fancyhead{}
\fancyhead[L]{Introduction}
\fancyfoot{}
\fancyfoot[L]{Me}
\fancyfoot[R]{\thepage}
\section{Introduction}

更具体地说,第一页没有编号,因为它是标题页,然后从那里开始,它们都用罗马数字编号直到目录,其中目录只显示目录中所有页面的 iv,即使它们已经换页并且显示了不同的页码。

答案1

命令\addcontentsline应该放在章节开始的地方,这样 LaTeX 才能提供正确的页码。我会省略这个命令\protect\numberline{},这样标题就会移到右边。

另外,我会定义一些页面样式,而不是重新设置文档正文中的参数。这些样式适用frontmatter于摘要和其他未编号部分、toclof目录和图表列表以及mainmatter文档正文。

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage[nottoc]{tocbibind}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{float}
\usepackage{bm}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{titlesec}
\usepackage{fancyhdr}
%\usepackage{gobble} % do you really need it?

\usepackage{lipsum} % just for the example

%% define some page styles
\fancypagestyle{frontmatter}{%
  \fancyhf{}%
  \fancyhead[R]{\thepage}%
  \fancyhead[L]{Class}%
  \fancyfoot[L]{Me}%
}
\fancypagestyle{toclof}{%
  \fancyhf{}%
  \fancyhead[R]{\thepage}%
  \fancyhead[L]{Class}%
}
\fancypagestyle{mainmatter}{%
  \fancyhf{}%
  \fancyhead[R]{\thepage}%
  \fancyhead[L]{\leftmark}%
}

\title{%
  \includegraphics[width=4cm]{example-image}\\[\baselineskip]\textbf{Project name}%
}
\author{Me\\[\baselineskip] by\\[\baselineskip] Me\\[\baselineskip] xxxx}
%\date{\vspace{5cm}Word Count: xxxx}

\begin{document}

\maketitle
\thispagestyle{empty}
\clearpage

\pagenumbering{roman}
\pagestyle{frontmatter}

\section*{Originality Statement}
\addcontentsline{toc}{section}{Originality Statement}
Stuff

\section*{Acknowledgements}
\addcontentsline{toc}{section}{Acknowledgements}
More stuff

\clearpage

\section*{Abstract}
\addcontentsline{toc}{section}{Abstract}
Insert abstract here

\clearpage
\pagestyle{toclof}

\tableofcontents

\clearpage

\listoffigures

\clearpage

\pagenumbering{arabic}
\pagestyle{mainmatter}

\section{Introduction}

\lipsum[1-20]

\end{document}

在此处输入图片描述

答案2

一些评论和意见:

  • 您的文档在前言中有几个未编号的节级标题。但是,由于相应的\addcontentsline指令仅在后面插入,即在 之后\tableofcontents,因此目录中显示的三个未编号节标题的页码可能不正确。明显的解决方法是:将\addcontentsline{toc}{section}{...}语句插入指令之后\section*,而不是 之后\tableofcontents

  • 您的文档包含太多(而且位置不当)\pagenumbering说明。请修复此问题。并且,请注意的参数\pagenumbering不应为空。

  • \listoffigures不是提出论点。

  • 尽管标题页不应显示明确的页码,但仍应对其进行编号,以便第二页有页码ii而不是i\thispagestyle{empty}紧接着使用\maketitle以抑制页码的显示。

  • 可选:加载tocloft包以抑制大胆的目录中的页码。

在此处输入图片描述

\documentclass[a4paper,demo]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[nottoc]{tocbibind}
\usepackage{mathtools,amssymb,float,bm}
\usepackage{graphicx,enumitem,titlesec,fancyhdr}
%%%\usepackage{gobble}

\title{%
    \includegraphics[scale=0.7]{Logo.png}
    \\ \vspace{\baselineskip}
    \textbf{Project name}}
\author{Me\\\\by\\\\Me\\\\xxxx}
\date{\vspace{5cm}Word Count: xxxx}

\pagestyle{fancy}
\fancyhead{}
\fancyhead[R]{\thepage}
\fancyhead[L]{Class}
\fancyfoot{}
\fancyfoot[L]{Me}

%% Optional: use 'tocloft' package to un-bold page numbers
\usepackage[titles]{tocloft}
\renewcommand{\cftsecpagefont}{\mdseries} % default is '\bfseries'

\begin{document}
\pagenumbering{roman}

\maketitle
\thispagestyle{empty}  % optional

\newpage

\fancyhead{}
\fancyhead[L]{Class}
\fancyhead[R]{\thepage}

\section*{Originality Statement}
\addcontentsline{toc}{section}{Originality Statement}
Stuff

\section*{Acknowledgments}
\addcontentsline{toc}{section}{Acknowledgments}
More stuff

\newpage

\section*{Abstract}
\addcontentsline{toc}{section}{Abstract}
Insert abstract here

\newpage
\fancyfoot{}
\tableofcontents

\newpage
\listoffigures

\newpage

\pagenumbering{arabic} 

\fancyhead{}
\fancyhead[L]{Introduction}
\fancyfoot{}
\fancyfoot[L]{Me}
\fancyfoot[R]{\thepage}

\section{Introduction}
\end{document}

相关内容