将嵌套有序列表中的编号样式更改为孟加拉语

将嵌套有序列表中的编号样式更改为孟加拉语

我正在写一份主要使用孟加拉语但也包含英语的文档。我可以使用所述方法将章节和小节编号更改为孟加拉语这里Davislor 著。但是,这不会将嵌套列表的编号样式更改为孟加拉语。

从图中可以看出,对于嵌套列表的内部列表,使用英文字母作为编号样式。我想用孟加拉字母(ক、খ、গ 等)替换它们。如何做到这一点?

这是一个最小的工作示例。

% !TeX program = xelatex
\documentclass[12pt]{article}

\usepackage{babel}

\babelprovide[maparabic]{bengali}
\babelfont{rm}{Shonar Bangla}
\babelfont[english]{rm}{Times New Roman}

\begin{document}
    \section{প্রথম অধ্যায়}
    Foo bar
    \begin{enumerate}
        \item ফু
        \begin{enumerate}
            \item বার
            \item ফু
        \end{enumerate}
        \item বার
    \end{enumerate}
\end{document}

我正在使用 MiKTeX 和 XeLaTeX。

答案1

很高兴您觉得这有帮助。简短回答:将选项添加alph=alphabeticbabelprovide。较长的回答(可与 LuaLaTeX 兼容并添加一些花哨功能):

% Recommended with LuaLaTeX in TeX Live 2020 or later,
% but also works with XeLaTeX.
\documentclass[12pt]{article}
\tracinglostchars=2 % Warn if the current font lacks a character.
\usepackage{iftex}

\ifluahbtex % Includes LuaLaTeX in TeX Live 2020.
  \usepackage[bidi=basic, layout=sectioning.counters]{babel}
  \usepackage{fontspec}
  %% Will auto-detect the language on LuaLaTeX:
  \defaultfontfeatures{ Renderer=HarfBuzz, Ligatures=TeX, Scale=MatchLowercase }
  \babelprovide[onchar=ids fonts]{english}
\else % Another Unicode engine, such as XeLaTeX.
  \usepackage[bidi=default, layout=sectioning.counters, english]{babel}
  \usepackage{fontspec}
  \defaultfontfeatures{ Ligatures=TeX, Scale=MatchLowercase }
\fi

\babelprovide[import,
              main,
              maparabic,
              alph=alphabetic
             ]{bengali}

\babelfont{rm}
          [Scale=1.0, Language=Default]{Shonar Bangla}
\babelfont[english]{rm}
          [Ligatures=Common]{Times New Roman}

\begin{document}
    \section{প্রথম অধ্যায়}
    Foo bar
    \begin{enumerate}
        \item ফু
        \begin{enumerate}
            \item বার
            \item ফু
        \end{enumerate}
        \item বার
    \end{enumerate}
\end{document}

Shonar Bangla 字体样本

在 LuaLaTeX 上,该文档会自动检测您何时输入英文并更改语言,因此您将看到 Times New Roman 字体的英文文本并获得连字模式、连字等。

XeTeX 会将所有文本视为默认语言,除非您明确更改它,您可以通过添加命令\babeltags{english=english}并写入来更改它\textenglish{Foo bar}。否则,您的英文文本将显示为 Shonar Bengla。如果您的孟加拉语字体不支持拉丁字母,或者您在 LTR 和 RTL 之间切换,这种情况会更加明显。

相关内容