XeLaTeX-\tableofcontents 中的天城文页码

XeLaTeX-\tableofcontents 中的天城文页码

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

我正在使用 XeLaTeX(XeTeX,TeX Live 2012/W32TeX 上的版本 3.1415926-2.4-0.9998)。我想使用自己的自定义字体显示梵文(印度文)页码。我可以使用 skt 或 devanagari 包中的 \pagenumbering{skt} 或 \pagenumbering{devanagari},但它们提供的是标准字体。

我使用 xstring 包中的 \StrSubtitute 编写了自己的命令,将阿拉伯数字转换为梵文,并使用 fancyhdr 页面样式在页脚中调用该命令。下面是一个最小的工作示例

\documentclass[14pt]{article}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont[Script=Devanagari]{Arial Unicode MS}
\usepackage{fancyhdr}
\usepackage{xstring}
\renewcommand\thepage{\arabic{page}}
\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}{९}
}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\cfoot{\fancyplain{}{\Large \arabictodevnag{\thepage}}}
\renewcommand{\headrulewidth}{0pt}
\tableofcontents
\pagebreak
\section{One}
\lipsum[1-8]
\pagebreak
\end{document}

这对于除目录中的页码之外的所有页面都适用。我也想要梵文页码目录,但我找不到解决这个问题的方法。我尝试重新定义 \thepage,如下所示,但它不起作用。

\renewcommand\thepage{\arabictodevnag{page}}   % Does not work

我认为我需要先将页面值转换为阿拉伯语,然后将其传递给我的 \arabictodevnag 命令。有什么提示吗?

答案1

您可以定义它\thepage,以便可以安全地直接在内容和标题中使用:

在此处输入图片描述

\documentclass[14pt]{article}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont[Script=Devanagari]{Arial Unicode MS}
\usepackage{fancyhdr}
\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}{९}
}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\cfoot{\fancyplain{}{\Large \thepage}}
\renewcommand{\headrulewidth}{0pt}
\tableofcontents
\pagebreak
\section{One}
\lipsum[1-8]
\pagebreak
\end{document}\documentclass[14pt]{article}
\usepackage{fontspec}
\usepackage{lipsum}
\setmainfont[Script=Devanagari]{Arial Unicode MS}
\usepackage{fancyhdr}
\usepackage{xstring}
\renewcommand\thepage{\arabic{page}}
\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}{९}
}
\begin{document}
\pagestyle{fancy}
\fancyhf{}
\cfoot{\fancyplain{}{\Large \arabictodevnag{\thepage}}}
\renewcommand{\headrulewidth}{0pt}
\tableofcontents
\pagebreak
\section{One}
\lipsum[1-8]
\pagebreak
\end{document}

相关内容