![更新](https://linux22.com/image/401238/%E6%9B%B4%E6%96%B0.png)
\对于所示内容,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}
原始答案
很难。我真的不明白这是怎么回事。
会发生这种情况。使用babel
选项,会将一个额外的宏与页码一起layout=counters.lists.tabular
插入到文件中idx
。这会导致索引程序死机。也许不应该这样做。babel
babel
因此\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}