我正在用 LaTeX 编写一份长文档,并用它imakeidx
来索引内容。所有工作都找到了。我正在 xelatex 中进行编译,当我使用以下命令时:
\renewcommand{\thepage}{{\arabic{page}}\hfill{\roman{page}}}
像这样:
\chapter{{First chapter}}
\renewcommand{\thepage}{{\arabic{page}}\hfill{\roman{page}}}
\setcounter{page}{1}
然后索引就停止工作。
我花了很长时间才弄清楚这是问题所在......这很好,因为我设法清理了我实际上没有使用的包的序言。
有人能告诉我为什么会出现不兼容的情况吗?提前谢谢
帮助理解的版本下一个代码生成索引
% !TEX encoding = UTF-8 Unicode
%!TEX program = xelatex
\documentclass{book} % \documentclass es lo primero que se pone en un documento de latex. Este comando me sirve para decirle a latex si lo que estoy haciendo es un libro, un reporte, un artículo, etc.
\usepackage[utf8]{inputenc}
\usepackage{imakeidx}
\usepackage[colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue,hyperindex]{hyperref}
\usepackage{blindtext}
\author{Autor 1\\[1cm]{\small Boos: Boos2}}
\title{My document}
\date{\today}
\makeindex
\begin{document}
\maketitle
\chapter{Teoric}
\index{scientific} \index{dynamic!system} \index{economic!system} \index{music}.
\blindtext
\begin{equation}
3+2=5
\end{equation}
\printindex
\end{document}
下一个代码不会产生索引
% !TEX encoding = UTF-8 Unicode
%!TEX program = xelatex
\documentclass{book} % \documentclass es lo primero que se pone en un documento de latex. Este comando me sirve para decirle a latex si lo que estoy haciendo es un libro, un reporte, un artículo, etc.
\usepackage[utf8]{inputenc}
\usepackage{imakeidx}
\usepackage[colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue,hyperindex]{hyperref}
\usepackage{blindtext}
\author{Autor 1\\[1cm]{\small Boos: Boos2}}
\title{My document}
\date{\today}
\makeindex
\begin{document}
\maketitle
\chapter{Teoric}
\renewcommand{\thepage}{{\arabic{page}}\hfill{\roman{page}}}
\index{scientific} \index{dynamic!system} \index{economic!system} \index{music}.
\blindtext
\begin{equation}
3+2=5
\end{equation}
\printindex
\end{document}
唯一的区别是
\renewcommand{\thepage}{{\arabic{page}}\hfill{\roman{page}}}
第一个代码在页面中不包含印度阿拉伯数字和罗马数字,但它可以制作带有 的索引\printindex
。第二个代码不打印带有 的索引\printindex
,但它包含印度阿拉伯数字和罗马数字。
这就是我为什么要停止工作。
答案1
两次打印\thepage
页码将导致\pageref
(以及类似的构造,如目录和表格列表)变得不可用。
大概的意图是让页面头部有阿拉伯语和拉丁语形式(虽然这也相当不寻常),可以直接指定而不需要重新定义\thepage
\documentclass{book} % \documentclass es lo primero que se pone en un documento de latex. Este comando me sirve para decirle a latex si lo que estoy haciendo es un libro, un reporte, un artículo, etc.
\usepackage[utf8]{inputenc}
\usepackage{imakeidx}
\usepackage[colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue,hyperindex]{hyperref}
\usepackage{blindtext}
\author{Autor 1\\[1cm]{\small Boos: Boos2}}
\title{My document}
\date{\today}
\makeindex
\renewcommand{\thepage}{\arabic{page}}
\newcommand{\thepagetwice}{\arabic{page}\hfill\roman{page}}
\makeatletter
\def\@evenhead{\thepagetwice\hfil\slshape\leftmark}%
\def\@oddhead{{\slshape\rightmark}\hfil\thepagetwice}%
\makeatother
\begin{document}
\maketitle
\tableofcontents
\chapter{Teoric}
\index{scientific} \index{dynamic!system} \index{economic!system} \index{music}.
\blindtext
\begin{equation}
3+2=5
\end{equation}
\printindex
\end{document}
页面头部有重复的数字
以及可用的索引
答案2
它什么时候\index
做它的工作,它写出一行形式
\indexentry{scientific|hyperpage}{5}
最后一个支撑组必须包含一个数字(以任何支持的格式)。 在你的情况下,它将包含{5\hfill v}
非法的。
这似乎有效,但我认为你应该重新考虑这个问题并以不同的方式解决它:你会收到许多警告。
哦,链接根本就不起作用。不过那是另外一个故事了。
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage{imakeidx}
\usepackage{xpatch}
\usepackage[colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue,hyperindex]{hyperref}
\usepackage{blindtext}
\author{Autor 1\\[1cm]{\small Boos: Boos2}}
\title{My document}
\date{\today}
\renewcommand{\thepage}{\arabic{page}\hfill\roman{page}}
\makeatletter
\xpatchcmd\HyInd@org@wrindex{\thepage}{\arabic{page}}{}{}
\makeatother
\NewCommandCopy{\hyperpageoriginal}{\hyperpage}
\renewcommand{\hyperpage}[1]{%
\hyperpageoriginal{#1\ \romannumeral#1}%
}
\makeindex
\begin{document}
\maketitle
\tableofcontents
\chapter{Teoric}
\section{whatever}
\index{scientific} \index{dynamic!system} \index{economic!system} \index{music}.
\blindtext
\begin{equation}
3+2=5
\end{equation}
\printindex
\end{document}