重置目录后的页码

重置目录后的页码

我使用罗马数字对索引页进行编号,但我使用解析为 LaTeX 的 restructuredText 编写文档。

我有一个包含所有必要设置的序言,但在目录之后,它将页码重置为 1,因此 \listoftables 和 \listoffigures 分别显示在 (i) 和 (ii) 页,而不是 (iii) 和 (iv) 页(它们应该如此)。由于我的目录可能会更改,所以我不想使用固定页码。

有一个问题建议重写 \tableofcontents 来存储页码,但我试过了,没有用。因为我是新手,所以我无法对此发表评论。

只要我可以禁用目录的页码编号,我就愿意接受我无法修复此问题。

以下是生成的输出中使用的类和包:

% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt, openany, oneside, english]{sphinxmanual}
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{times}
\usepackage[Sonny]{fncychap}
\usepackage{longtable}
\usepackage{sphinx}
\usepackage{multirow}
% Include packages
\usepackage{lastpage}
\usepackage[table]{xcolor}
\usepackage{csvsimple}
\usepackage[hypcap]{caption}
\usepackage{booktabs}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage[nottoc]{tocbibind}
\hypersetup{colorlinks,%
    citecolor=black,%
    filecolor=black,%
    linkcolor=black,%
    urlcolor=blue,%
pdftex}
\definecolor{lightgray}{gray}{0.9}
\let\oldtabular\tabular
\let\endoldtabular\endtabular

由于我无法控制何时调用目录,因此我还重新定义了目录,如下所示:

% Redefine table of contents to include the tables and figures
\newcounter{mypageno}
\let\oldtableofcontents\tableofcontents
\renewcommand{\tableofcontents}{%
  \oldtableofcontents%
  \cleardoublepage%
  \setcounter{mypageno}{\value{page}}%
  \pagenumbering{roman}%
  \setcounter{page}{\value{mypageno}}%
  \listoftables%
  \listoffigures%
  \cleardoublepage%
  \pagenumbering{arabic}%
}

答案1

首先,\pagenumbering将页数计数器重置为 1,所以如果你不想重置它,就不要使用它。相反,只需使用类似

\renewcommand{\thepage}{\roman{page}}

现在,我注意到你正在使用sphinxmanual文档类。查看代码,我们可以看到\tableofcontents对 的重新定义,其中包括\pagenumbering

% This wraps the \tableofcontents macro with all the magic to get the spacing
% right and have the right number of pages if the 'openright' option has been
% used.  This eliminates a fair amount of crud in the individual document files.
%
\let\py@OldTableofcontents=\tableofcontents
\renewcommand{\tableofcontents}{%
  \setcounter{page}{1}%
  \pagebreak%
  \pagestyle{plain}%
  {%
    \parskip = 0mm%
    \py@OldTableofcontents%
    \if@openright%
      \ifodd\value{page}%
        \typeout{Adding blank page after the table of contents.}%
        \pagebreak\hspace{0pt}%
      \fi%
    \fi%
    \cleardoublepage%
  }%
  \pagenumbering{arabic}% <--------------- This resets the page to 1
  \@ifundefined{fancyhf}{}{\pagestyle{normal}}%
}

您可以通过在序言中添加以下内容来删除页码重置你重新定义\tableofcontents

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\tableofcontents}{\pagenumbering{arabic}}{}{}{}

请注意,页面样式也可通过sphinxmanual的定义进行调整\tableofcontents。但目前这应该可以满足您的要求。

相关内容