更新

更新

\对于所示内容,MWE 我遇到一个问题,即索引包(任何索引包:makeidx、imakeidx、xindy、xindex)在编译时不会生成索引。但是,在 babel 包中删除选项(layout=counters.lists.tabular)后。文件索引会正常生成。有没有人知道解决方法,因为我需要这样的选项才能使文档中的编号与主文档语言一起显示。


\documentclass[a4paper,12pt,twoside]{book}
%General Settings
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry} % Set paper layout

%==================================================================================================
%CROSS-Referencing
%==================================================================================================

\usepackage{makeidx}
    \makeindex

%======================================================================================================
%Babel Package Settings%
%======================================================================================================

\usepackage[nil,bidi=basic-r,layout=counters.lists.tabular]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}
\babelfont{rm}{Latin Modern Roman}
\babelfont[arabic]{rm}{amiri}
%==================================================
%Start actual document %
%===================================================


\title{jhhjjhhj}
\author{}
\date{}


\begin{document}
 يسبسيسيب
 سيبيسيبيسب
 سيبيسبسيبس
 سيبسيبسيب
\index{dfdfdf}
\end{document}
``````````````````````````````````````````````````````````````````````````````

答案1

更新

使用bidi=basic允许我们省去layout=counters。这意味着我们可以xindy在不使用以下任何perl技巧的情况下运行。

这也显示了如何为两种语言建立两个索引。

跑步

$ lualatex filename.tex
$ texindy -L persian-variant1 -C utf8 filename.idx
$ texindy -C utf8 filename-en.idx
$ lualatex filename.tex

如果您使用调用,这些texindy命令应该会自动运行,但由于某种原因,它们并没有自动运行 :/。lualatex--shell-escape

平均能量损失

\documentclass{article}

\usepackage[bidi=basic,layout=lists.tabular]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}
\babelfont[arabic]{rm}{Amiri}
\babelfont[english]{rm}{Latin Modern Roman}

\usepackage[xindy,nonewpage]{imakeidx}
\makeindex[options=-L persian-variant1 -C utf8]
\makeindex[name=\jobname-en, options=-C utf8]


\begin{document}
يسبسيسيب
\index{أَلِف}

يسبسيسيب
\index{بَاء}

يسبسيسيب
\index[\jobname-en]{Alpha@\foreignlanguage{english}{Alpha}}

يسبسيسيب
\index[\jobname-en]{Beta@\foreignlanguage{english}{Beta}}

\printindex
\selectlanguage{english}
\printindex[\jobname-en]
\end{document}

MWE 输出


原始答案

很难。我真的不明白这是怎么回事。

会发生这种情况。使用babel选项,会将一个额外的宏与页码一起layout=counters.lists.tabular插入到文件中idx。这会导致索引程序死机。也许不应该这样做。babelbabel

因此\index{أَلِف}文件idx中有一行如下内容:

\indexentry{أَلِف}{\babelsublr  {1}}

但我们希望它看起来像这样:

\indexentry{أَلِف}{1}

那么该怎么办呢?我们可以使用perl一行代码来编辑文件:

perl -pi -e 's/\\babelsublr\s*?{(.*?)}/$1/'

对于实际的索引设置,我认为您需要使用xindy。遗憾的是,我发现xindy很难理解和使用。它没有很好的文档记录,而且示例很少。没有阿拉伯规则,但有些有建议有可能xindy 波斯语

我似乎确实能够获得半合理的结果。

平均能量损失

我使用以下命令手动构建它:

$ lualatex filename.tex
$ perl -pi -e 's/\\babelsublr\s*?{(.*?)}/$1/' filename.idx
$ xindy -L persian-variant1 -C utf8 -M numeric-sort -M latex -M latex-loc-fmts -M texindy filename.idx
$ lualatex filename.tex

xindy从以下位置获取命令行这里

\documentclass{article}

\usepackage[bidi=basic-r,layout=counters.lists.tabular]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}
\babelfont[arabic]{rm}{Amiri}
\babelfont[english]{rm}{Latin Modern Roman}

\usepackage[xindy,nonewpage]{imakeidx}
\makeindex[noautomatic]

\begin{document}
 يسبسيسيب
\index{أَلِف}

يسبسيسيب
\index{بَاء}

يسبسيسيب
\index{Alpha@\foreignlanguage{english}{Alpha}}

يسبسيسيب
\index{Beta@\foreignlanguage{english}{Beta}}

\printindex
\end{document}

MWE 输出

相关内容