我使用罗马数字对索引页进行编号,但我使用解析为 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
。但目前这应该可以满足您的要求。