Я создаю большой документ с помощью xelatex-devanagari. Тем не менее, номера страниц в титульном листе по умолчанию имеют римскую нумерацию. Как мне изменить их на пользовательскую алфавитную нумерацию 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
. (См.Глава 13Счетчикивtexdoc latex2e
, или Файл mltcounts.dtxвtexdoc 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
to ):\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
вместо римских цифр (для вводной части) будут использоваться согласные на деванагари номера страниц, а для нумерации — следующее: