![目录中的页码采用罗马数字,但文档上的页码采用阿拉伯数字](https://linux22.com/image/317546/%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E9%A1%B5%E7%A0%81%E9%87%87%E7%94%A8%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97%EF%BC%8C%E4%BD%86%E6%96%87%E6%A1%A3%E4%B8%8A%E7%9A%84%E9%A1%B5%E7%A0%81%E9%87%87%E7%94%A8%E9%98%BF%E6%8B%89%E4%BC%AF%E6%95%B0%E5%AD%97.png)
这可能看起来有点尴尬,但显然我需要这样做。
我有一个文档(类book
),从简介页开始使用阿拉伯语页码。在此之前,我\tableofcontents
想将页码显示为罗马数字,即使实际页码是阿拉伯数字。
所需 ToC 的示例:
- 第一章---我
- 第二章----X
但是第一章的实际页码必须是 1,第二章必须是 10,等等。我只需要在目录中将数字转换为罗马数字。
我已尝试过这个:
% ...
\pagenumbering{Roman}
\tableofcontents
\pagenumbering{arabic}
\setcounter{page}{1}
\chapter{First chapter} % Page: 1
% ...
\chapter{Second chapter} % Page: 10
% ...
但这只会改变目录所在的页面,而不是目录本身,这不是我想要的。
答案1
通常,所有分段命令都\thepage
使用 写入 ToC \addcontentsline
。您可以更新\addcontentsline
为
\renewcommand{\addcontentsline}[3]{%
\addtocontents{#1}{\protect\contentsline{#2}{#3}{\Roman{page}}}}
这会写入\Roman{page}
目录,而不是默认格式\thepage
(可能与 不同\Roman{page}
)。更好的选择可能是\addcontentsline
使用etoolbox
:
\usepackage{etoolbox}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\addcontentsline}{\thepage}{\Roman{page}}{}{}
\documentclass[openany]{book}
\usepackage{etoolbox}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\addcontentsline}{\thepage}{\Roman{page}}{}{}
\begin{document}
\tableofcontents
\clearpage
\pagenumbering{arabic}
\chapter{A chapter} % Page: 1
\section{A section}
\subsection{A subsection}
\clearpage
\setcounter{page}{10}
\chapter{Another chapter} % Page: 10
\section{Another section}
\subsection{Another subsection}
\end{document}