考虑下面的 MWE。在这里,我尝试使用孟加拉数字根据找到的解决方案进行枚举这里。
\documentclass{article}
% For bilingual document
\usepackage{fontspec}
\usepackage{polyglossia}
% Bangla
\setmainlanguage[numerals=Devanagari]{bengali}
\newfontfamily\bengalifont[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifontbf[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifonttt[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifontsf[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifontit[Script=Bengali]{SolaimanLipi}
% English
\setotherlanguage{english}
% Times New Roman used
\newfontfamily{\englishfont}[Mapping=tex-text, Ligatures=TeX]{Times New Roman}
% Bangla numerals
\makeatletter
\def\bengalidigits#1{\expandafter\@bengali@digits #1@}
\def\@bengali@digits#1{%
\ifx @#1
\else
\ifx0#1০\else\ifx1#1১\else\ifx2#1২\else\ifx3#1৩\else\ifx4#1৪\else\ifx5#1৫\else\ifx6#1৬\else\ifx7#1৭\else\ifx8#1৮\else\ifx9#1৯\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\expandafter\@bengali@digits
\fi
}
\def\bengalinumber#1{\bengalidigits{\number#1}}
\def\bengalinumeral#1{\bengalinumber{\csname c@#1\endcsname}}
\renewcommand\theenumi{\bengalinumeral{enumi}}
\makeatother
% \usepackage{enumitem}
\begin{document}
\begin{enumerate}
\item এক
\item দুই
\item তিন
\end{enumerate}
\end{document}
从此输出可以看出,上述代码运行良好。
然而,一旦该行\usepackage{enumitem}
开始执行,所有枚举都会被编号为零。
我需要使用enumitem
,因为如果没有它,我将丢失列表中的大量格式。
答案1
仅为第一个版本,仅适用于数字,不适用于数字 > 9。
简而言之:enumitem
此类设置需要特殊的计数器输出信息,即\AddEnumerateCounter
必须使用宏。遗憾的是,此处的特殊设置仅对数字有效。
\documentclass{article}
% For bilingual document
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{enumitem}
% Bangla
\setmainlanguage[numerals=Devanagari]{bengali}
\newfontfamily\bengalifont[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifontbf[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifonttt[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifontsf[Script=Bengali]{SolaimanLipi}
\newfontfamily\bengalifontit[Script=Bengali]{SolaimanLipi}
% English
\setotherlanguage{english}
% Times New Roman used
%\newfontfamily{\englishfont}[Mapping=tex-text, Ligatures=TeX]{Times New Roman}
% Bangla numerals
\makeatletter
\def\bengalidigits#1{\expandafter\@bengali@digits #1}
\def\@bengali@digits#1{%
\ifcase #1
০\or১\or২\or৩\or৪\or৫\or৬\or৭\or৮\or৯\fi
}
\def\bengalinumber#1{\bengalidigits{\number#1}}
\def\bengalinumeral#1{\bengalinumber{\csname c@#1\endcsname}}
\AddEnumerateCounter*{\bengalnumeral}{\bengalinumeral}{5}
\makeatother
\begin{document}
\begin{enumerate}[label={\bengalinumeral*}]
\item এক
\item দুই
\item তিন
\end{enumerate}
\end{document}
答案2
该babel
软件包提供了 和 的孟加拉语本地化版本\arabic
(作为未记录的附加功能)alph
。如果这令人满意,您可以表达以下内容而无需定义自己的计数器。这还将本地化页码、章节、部分、目录条目等。
\tracinglostchars=2 % Warn if a glyph is not in the current font
\documentclass[11pt]{article}
\usepackage{iftex}
\usepackage{enumitem}
\ifLuaTeX
\usepackage[english, bidi=basic, layout=sectioning.counters]{babel}
\usepackage{fontspec}
\defaultfontfeatures{Renderer=HarfBuzz, Scale=MatchLowercase, Ligatures = TeX}
\else % XeLaTeX?
\usepackage[english, bidi=default, layout=sectioning.counters]{babel}
\usepackage{fontspec}
\defaultfontfeatures{Scale=MatchLowercase, Ligatures = TeX}
\fi
\babelprovide[import, main, maparabic, alph=alphabetic]{bengali}
%% From: https://github.com/potasiyam/Kalpurush
%% A matching font family might be Gentium.
\babelfont{rm}
[Scale = 1.0,
BoldFont = *,
BoldFeatures = {FakeBold = 1.1}
]{Kalpurush}
\begin{document}
\section*{বাংলায় enumeration }
\begin{enumerate}[label=\arabic*।]
\item 1st item
\item 2nd item
\begin{enumerate}[label=(\alph*)]
\item 1st sub item
\item 2nd sub item
\end{enumerate}
\end{enumerate}
\end{document}
截至 2020 年 6 月,babel
和之间的不兼容性fontspec
导致 XeTeX 无法正确编译 MWE,但它可以在 LuaLaTeX 1.12.0 中运行。TeX Live 2019 中的 XeLaTeX 可能也可以运行。