我正在使用 xelatex-devanagari 建立一個大型文件。儘管如此,frontmatter 中的頁碼預設為羅馬編號。我怎樣才能將它們更改為梵文自訂字母編號,例如अ,आ...或者क、ख、ग...?
枚舉清單需要類似的編號。目前,第一級枚舉顯示梵文數字。在其他層級實現梵文字母編號的最佳方法是什麼?
範例程式碼 -
\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)
where\theenumii
又被定義為\@alph\c@enumii
,這就是為什麼在清單中嵌套的第二層,您會看到類似 的標籤(a)
。如果您(例如)想要在不同位置使用括號或句點,您也可以重新定義它們。
把它放在一起
\makeatletter
這是問題中的範例 LaTeX 原始程式碼,經過適當修改( 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}