
Я пишу документ, который в основном на бенгали, но также содержит английский. Мне удалось изменить номера разделов и подразделов на бенгали, используя описанный методздесьот 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=alphabetic
в babelprovide
. Более длинный ответ (который обеспечивает совместимость с 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}
В LuaLaTeX этот документ автоматически определит, когда вы печатаете на английском языке, и изменит язык, поэтому вы увидите английский текст шрифтом Times New Roman и получите шаблоны переносов, лигатуры и т. д.
XeTeX будет обрабатывать весь текст как язык по умолчанию, если вы явно не измените его, что можно сделать, добавив команду \babeltags{english=english}
и написав \textenglish{Foo bar}
. В противном случае ваш английский текст будет отображаться как Shonar Bengla. Это будет более заметно, если ваш бенгальский шрифт не поддерживает латинский алфавит или если вы переключаетесь между LTR и RTL.