我正在排版一本印地语书籍,其中包含多个索引和梵文章节/节/页码。我想使用 HarfBuzz 渲染和 LuaLaTeX,这样就可以无错误地从 PDF 复制粘贴梵文文本,正如讨论的那样这里。不幸的是,使用 XeLaTeX 进行 HarfBuzz 渲染无法获得预期的结果。所以我不得不使用 LuaLaTeX。我尝试了一个使用 TexLive 2020(在 Overleaf 上)的 LuaLaTeX 编译器的示例。
这是我的latexmkrc
文件。
add_cus_dep( 'adx', 'and', 0, 'ndx2nnd' );
sub ndx2nnd {return system( "makeindex -o \"$_[0].and\" \"$_[0].adx\"" );}
push @generated_exts, 'adx', 'and';
尝试 1:多语
以下文件使用 LuaLaTeX 编译良好,并给出两个索引,但带有西阿拉伯语章节/节/页码。这似乎是一个已知问题这里。
\documentclass[twoside]{book}
\usepackage{polyglossia}
\setmainlanguage{hindi}
\newfontfamily\devanagarifont[Renderer=HarfBuzz,Script=Devanagari,Mapping=devanagarinumerals]{Noto Serif Devanagari}
\newfontfamily\englishfont{Noto Serif}
\usepackage{index}
\makeindex
\newindex{top}{adx}{and}{विषयसूची}
\newindex{aut}{adx}{and}{लेखकसूची}
\begin{document}
\chapter{प्रस्तावना}
\section{परिचय}
हम किंकर्तव्यविमूढ हैं।
\index[top]{विषय १}
\index[aut]{लेखक १}
\printindex[top]
\printindex[aut]
\end{document}
尝试 2:使用 babel
以下文件可以使用 LuaLaTeX 成功编译,并提供天城文章节/部分/页码,但没有索引。
\documentclass[twoside]{book}
\usepackage{babel}
\usepackage{fontspec}
\babelprovide[mapdigits,maparabic,main]{hindi}
\defaultfontfeatures{Renderer=Harfbuzz,Script=Devanagari}
\babelfont{rm}{Noto Serif Devanagari}
\usepackage{index}
\makeindex
\newindex{top}{adx}{and}{विषयसूची}
\newindex{aut}{adx}{and}{लेखकसूची}
\renewcommand\hindichaptername{अध्याय}
\begin{document}
\chapter{प्रस्तावना}
\section{परिचय}
हम किंकर्तव्यविमूढ हैं।
\index[top]{विषय १}
\index[aut]{लेखक १}
\printindex[top]
\printindex[aut]
\end{document}
我可以使用 或polyglossia
,babel
但更喜欢polyglossia
。因此,非常感谢任何帮助使上述两个示例中的任何一个发挥作用。 带有 的那个polyglossia
缺少梵文数字,而 的那个babel
缺少两个索引。
答案1
感谢以下人员的回答哈维尔·贝佐斯和蝉,我能够找出代码中的问题。以下是需要进行的修复。
在这个latexmkrc
文件中,我们需要两个索引的配置。所以现在文件latexmkrc
应该是这样的。
add_cus_dep( 'adx', 'and', 0, 'ndx2nnd' );
add_cus_dep( 'ndx', 'nnd', 0, 'ndx2nnd' );
sub ndx2nnd {return return Run_subst( "makeindex -o %D %S" );}
push @generated_exts, 'ndx', 'nnd', 'adx', 'and';
在main.tex
文件中,我们需要进行两处修复:(1)更改\babelprovide[mapdigits,maparabic,main]{hindi}
为\babelprovide[mapdigits,main]{hindi}
(2)更改\newindex{aut}{adx}{and}{लेखकसूची}
为\newindex{aut}{ndx}{nnd}{लेखकसूची}
。最终main.tex
文件将与上述indexmkrc
文件一起使用
\documentclass[twoside]{book}
\usepackage{babel}
\usepackage{fontspec}
\babelprovide[mapdigits,main]{hindi}
\defaultfontfeatures{Renderer=Harfbuzz,Script=Devanagari}
\babelfont{rm}{Noto Serif Devanagari}
\usepackage{index}
\makeindex
\newindex{top}{adx}{and}{विषयसूची}
\newindex{aut}{ndx}{nnd}{लेखकसूची}
\renewcommand\hindichaptername{अध्याय}
\begin{document}
\chapter{प्रस्तावना}
\section{परिचय}
हम किंकर्तव्यविमूढ हैं।
\index[top]{विषय १}
\index[aut]{लेखक १}
\printindex[top]
\printindex[aut]
\end{document}
再次感谢 Javier 和 Cicada 的帮助。