我正在使用 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}