使用天城文字母对枚举环境和页面进行编号

使用天城文字母对枚举环境和页面进行编号

我正在用 xelatex-devanagari 构建一个大型文档。但前言中的页码默认为罗马数字。我如何将它们更改为梵文自定义字母数字,例如再,再...或者क,ख,ग...

枚举列表需要类似的编号。目前,第一级枚举显示天城文数字。在其他级别实现天城文字母编号的最佳方法是什么?

示例代码 -

\documentclass[oneside]{book}
\usepackage{fontspec}
\setmainfont[Script=Devanagari,Mapping=devanagarinumerals]{Sanskrit 2003}

\renewcommand{\chaptername}{अध्यायः}
\renewcommand{\contentsname}{विषयसूची}

\begin{document}

\frontmatter
\tableofcontents
\chapter{भूमिका}

\mainmatter
\chapter{सङ्ग्रहः}
\begin{enumerate}
  \item प्रथमम्
  \begin{enumerate}
    \item द्वितीयम्
    \begin{enumerate}
      \item तृतीयम्
      \begin{enumerate}
        \item चतुर्थम्
      \end{enumerate}
    \end{enumerate}
  \end{enumerate}
\end{enumerate}

\end{document}

枚举演示

答案1

计数器的显示方式

在 LaTeX 中,计数器以几种“样式”之一显示,包括\arabic\roman\Roman\alph\Alph\fnsymbol。(请参阅第十三章计数器texdoc latex2e或文件 mltcounts.dtxtexdoc source2e, 或者这里/这里/这里/这里.) 其中,\fnsymbol只是用于脚注的符号(*, ‡, ‡, §, ¶, ∥, **, ††, ‡‡),因此,其他的只需重新定义即可。

例如,默认情况下\Alph通过定义\@Alph

\def\@Alph#1{%
 \ifcase#1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
  K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or
   Y\or Z\else\@ctrerr\fi}

我们可以修改它,让其始终在任何地方使用天城文辅音क, ख, ग, …,代替罗马数字或拉丁字母。(您可能还希望使用天城文元音अ, आ, इ, ई, …;这取决于您的偏好。)

枚举中的标签如何显示

每个级别的标签由、、和enumerate给出。(见\labelenumi\labelenumii\labelenumiii\labelenumiv第8.7节枚举英寸texdoc latex2e,即 54.6列举和枚举texdoc source2e

例如,默认情况下\labelenumii定义为,(\theenumii)而又\theenumii定义为\@alph\c@enumii,这就是为什么在列表嵌套的第二层,您会看到像这样的标签(a)。如果您(比如说)想要在不同的位置使用括号或句号,您也可以重新定义它们。

把它放在一起

这是问题中的示例 LaTeX 源,经过了适当的修改(其中的部分\makeatletter\makeatother唯一的变化):

\documentclass[oneside]{book}
\usepackage{fontspec}
\setmainfont[Script=Devanagari,Mapping=devanagarinumerals]{Sanskrit 2003}

\makeatletter
% Always use Devanagari consonants for alph/Alph/roman/Roman styles.
\def\devanagari@alph#1{%
 \ifcase#1\or क\or ख\or ग\or घ\or ङ\or च\or छ\or ज\or झ\or ञ\or
  ट\or ठ\or ड\or ढ\or ण\or त\or थ\or द\or ध\or न\or प\or फ\or ब\or भ\or म\or
   य\or र\or ल\or व\or श\or ष\or स\or ह\else\@ctrerr\fi}
% Imitating xgreek.sty and xepersian.sty
\let\@alph\devanagari@alph
\let\@Alph\devanagari@alph
\let\@roman\devanagari@alph
\let\@Roman\devanagari@alph

% Change appearance of enumerate at levels 2, 3, 4.
\renewcommand{\labelenumii}{\theenumii.} % Instead of: (\theenumii)
\renewcommand{\labelenumiii}{(\theenumiii)} % Instead of: \theenumiii.
\renewcommand{\theenumiii}{\@arabic\c@enumiii} % Instead of: \@roman\c@enumiii
\renewcommand{\labelenumiv}{(\theenumiv)} % Instead of: \theenumiv.
\makeatother

\renewcommand{\chaptername}{अध्यायः}
\renewcommand{\contentsname}{विषयसूची}

\begin{document}

\frontmatter
\tableofcontents
\chapter{भूमिका}

\mainmatter
\chapter{सङ्ग्रहः}
\begin{enumerate}
  \item प्रथमम्
  \begin{enumerate}
    \item द्वितीयम्
    \begin{enumerate}
      \item तृतीयम्
      \begin{enumerate}
        \item चतुर्थम्
      \end{enumerate}
    \end{enumerate}
  \end{enumerate}
\end{enumerate}

\end{document}

运行此程序xelatex将给出梵文辅音页码而不是罗马数字(用于前言),并且对于枚举,给出以下内容: 使用梵文标签枚举环境

相关内容