目录中的页码错误以及超链接问题

目录中的页码错误以及超链接问题

可能重复:
如何在 latex 或 xetex 中获取天城文数字

这是对以下讨论的后续XeLaTeX - \tableofcontents 中的天城文页码,由 David Carlisle 建议。我使用的是 XeLaTeX(XeTeX,TeX Live 2012/W32TeX 上的版本 3.1415926-2.4-0.9998)。这是我的最小工作示例,具有自定义的印度语页码样式。

\documentclass[14pt]{article}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont[Script=Devanagari]{Arial Unicode MS}
\usepackage{xstring}
\renewcommand\thepage{\Devnag{page}}
\DeclareRobustCommand\Devnag[1]{\expandafter\arabictodevnag\expandafter{\the\csname c@#1\endcsname}}
\newcommand{\arabictodevnag}[1]
{
  \StrSubstitute{#1}{0}{०}[\num]
  \StrSubstitute{\num}{1}{१}[\num]
  \StrSubstitute{\num}{2}{२}[\num]
  \StrSubstitute{\num}{3}{३}[\num]
  \StrSubstitute{\num}{4}{४}[\num]
  \StrSubstitute{\num}{5}{५}[\num]
  \StrSubstitute{\num}{6}{६}[\num]
  \StrSubstitute{\num}{7}{७}[\num]
  \StrSubstitute{\num}{8}{८}[\num]
  \StrSubstitute{\num}{9}{९}
}
% \usepackage[bookmarksnumbered,urlcolor=??cyan,linkcolor=blue]{hyperref}
\begin{document}
\tableofcontents
\pagebreak
\section{One}
\lipsum[1-8]
\pagebreak
\section{Two}
\lipsum[1-8]
\pagebreak
\end{document}

上述情况有两个问题

  1. 页面上的页码正确,但目录中的页码错误。目录中的所有页码均为“1”,而章节从页码“2”和“4”开始。
  2. 如果我取消注释带有 hyperref 的注释行,xelatex 将无法编译并显示消息“!未定义的控制序列 \arabictodevnag”

答案1

您必须选择一种语言,而不仅仅是加载polyglossia。这是一个工作示例:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[numerals=Devanagari]{hindi}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont[Script=Devanagari]{FreeSerif} % I don't have Arial Unicode MS

\usepackage{hyperref,bookmark}


\newcommand{\devanagarinumeral}[1]{%
  \devanagaridigits{\number\csname c@#1\endcsname}}

% renew all representation of counters
\renewcommand{\thesection}{\devanagarinumeral{section}}
\renewcommand{\thepage}{\devanagarinumeral{page}}
\renewcommand{\theenumi}{\devanagarinumeral{enumi}}

\begin{document}
\tableofcontents
\pagebreak
\section{One}
\lipsum[1-8]
\pagebreak
\section{Two}
\lipsum[1-8]
\pagebreak
\end{document}

也可以看看https://tex.stackexchange.com/a/70903/4427

在此处输入图片描述

相关内容