如何将 Xindy 与 MiKTeX 一起使用?

如何将 Xindy 与 MiKTeX 一起使用?

自 2015 年 6 月底起已过时。

众所周知,索引工具 Xindy 不包含在 TeX 发行版 MiKTeX 中。由于 MakeIndex 不能很好地与 Unicode 配合使用,但 Xindy 可以,因此我有一个问题:

Xindy 可以手动安装吗?如果可以,如何安装?

答案1

我的以下答案自 2015 年 6 月底起就已过时。我获得了自 2015 年 6 月 25 日起更新的内部 MiKTeX 版本,但显然其他人早在一周前就已经获得了它。

请注意,目前存在一个问题,如果你将 MiKTeX 安装到包含空格的路径中(这是使用C:\\Program Files\C:\\Program Files (x86)\系统文件夹时的默认设置)。请参阅沃尔菲的回答针对相应问题MiKTeX 和 Xindy 问题


对的,这是可能的。

评论:LaTeX-Community.org 上已经发布了几篇文章 – 请参阅在 MikteX 中安装 Xindy最后Xindy 用于 MiKTeX,但你会发现一些问题。首先,用户“lartkma”提供了一些文件,这些文件已上传到 Megaupload.com,但该服务因已知原因已关闭(请参阅Megaupload 法律案件维基百科)。其次,我强烈反对他关于如何将 Xindy 安装到主 MiKTeX 安装路径的建议。我在回答本地 texmf 树的用途。但最终所有后续指令仍然源自 lartkma 的工作。

最近已提出将 xindy 纳入 MikTeX 的功能请求,其中还包括详细的、最新的安装建议。

先决条件:你需要一个 Perl 解释器——无论如何你都需要它来处理 MiKTeX 中的 Perl 脚本,参见我的回答MiKTeX 和 Perl 脚本寻求建议。

如果 Perl 安装正确,请按照说明进行操作!

  1. 如果你还没有创建本地 texmf 路径,请立即创建。请参阅在 MiKTeX 中创建本地 texmf 树

    对于 Xindy 你将需要此结构:

    <localtexmf>
         |
         |--doc
         |   |
         |   +--xindy
         |
         |--miktex
         |   |
         |   +--bin
         |
         |--scripts
         |     |
         |     +--xindy
         |
         +--xindy
             |
             +--modules
    

    不要忘记将该文件夹添加<localtexmf>\miktex\bin到 Windows 的系统变量Path中。

    注意:在此答案的早期版本中,推荐的二进制路径是<localtexmf>\bin,我个人仍然更喜欢此路径。我实际上做的(也是我想给你的建议)是,我创建了一个从 <localtexmf>\miktex\bin到 的符号链接<localtexmf>\bin,然后我做了不是将新链接添加到系统路径变量。另请参见维基百科:Microsoft Windows 中的符号链接。只要您位于同一驱动器上,使用软链接或连接点都没有关系(另请参阅 Superuser.com:目录连接与目录符号链接?)。顺便说一句,我更喜欢微软自己的命令行工具链接外壳扩展

  2. 获取 W32TeX 提供的 Xindy 包:http://mirror.ctan.org/systems/win32/w32tex/xindy-w32.tar.xz– 此文件包含您所需的一切。

    备注:确保文件的日期为 2014.4.16 或更晚。文件夹tex2xindy.exe中的文件bin的日期应为 2014.4.14 或更晚。如果不确定,请直接从W32TeX 网站

  3. 将所有文件解压到临时文件夹中。您需要一个可以解压 XZ 文件(以及 TAR 文件,但后者很常见)的程序。我的建议是7-Zip或者豌豆压缩

    文件夹中的文件tex2xindy.exexindy.mem和进入(两个.dll 文件和另外两个.exe 文件和不再需要),所有内容进入,其他的依此类推。xindy-list.exebin<localtexmf>\miktex\binshare\texmf-dist\doc<localtexmf>\doc

  4. 如果您已将文件xindy.exe和复制texindy.exe到中<localtexmf>\miktex\bin,请将其删除。

    <localtexmf>\miktex\bin文件夹中创建两个空文本文件,名称分别为xindy.battexindy.bat。如果您更喜欢这样,您也可以选择.cmd文件扩展名,但是文件名一定不被改变

    将以下行复制到xindy.bat脚本路径中并调整为您的设置:

    @echo off
    set ScriptPath=<localtexmf>\scripts\xindy
    perl %ScriptPath%\xindy.pl %*
    

    texindy.bat当然,内容肯定略有不同:

    @echo off
    set ScriptPath=<localtexmf>\scripts\xindy
    perl %ScriptPath%\texindy.pl %*
    

    备注:两种情况下第二行和第三行可以合并,但我认为上述版本更具可读性。

    如果您使用默认文本编辑器记事本,请在保存对话框中确保不要保存到扩展名为 .txt 的文件:使用双引号保存"xindy.bat"

  5. 刷新文件名数据库 (FNDB)。具体操作方法参见在 MiKTeX 中创建本地 texmf 树

  6. 在你最喜欢的 TeX 编辑器中,你可能需要添加对 Xindy 的调用。因为每个编辑器都不一样,所以我不能在这里写任何关于这方面的内容。

快乐索引!

这里有两个测试用例,在你最喜欢的任务管理器中,你将看到perl.exe和的执行xindy-lisp.exe

  • 创建索引:

    为了方便起见,我使用了 包imakeidx,因为使用 选项,xindy您可以自动调用 Xindy(实际上是texindy!)而无需任何配置,但为此您必须先将开关添加--enable-write18到 的调用pdflatex(或别名--shell-escape)。
    请注意,texify有点不同:--tex-option="--enable-write18"

    \documentclass{article}
    \usepackage[latin,english]{babel} % needed for "blindtext",
                                      % "english" is the active language
    \usepackage{blindtext,lipsum,kantlipsum}
    
    \usepackage[xindy]{imakeidx}
    \makeindex[columns=1]
    
    \begin{document}
    
    \section*{Package \texttt{blindtext}}
    
    \subsection*{English blindtext}\index{blindtext (package)!english}
    %%% see below before section "kantlipsum" for
    %%% \index{blindtext (package)!english|seealso{kantlipsum}}
    \blindtext[1]
    
    \subsection*{Latin blindtext}\index{blindtext (package)!latin}
    %%% see below before section "kantlipsum" for
    %%% \index{blindtext (package)!latin|seealso{lipsum}}
    {\selectlanguage{latin}% note the grouping
    \blindtext[1]}
    
    \newpage
    
    \index{blindtext (package)!english|seealso{kantlipsum}}
    \index{blindtext (package)!latin|seealso{lipsum}}
    
    \section*{Package \texttt{kantlipsum}}\index{kantlipsum}
    %%% see below before "\printindex" for
    %%% \index{kantlipsum|seealso{blindtext (package) with english option}}
    \kant[123]
    
    \section*{Package \texttt{lipsum}}\index{lipsum}
    %%% see below before "\printindex" for
    %%% \index{lipsum|seealso{blindtext (package) with latin option}}
    {\selectlanguage{latin}% actually not needed here
    \lipsum[123]}% note the grouping again
    
    \newpage
    
    \index{kantlipsum|seealso{blindtext (package) with english option}}
    \index{lipsum|seealso{blindtext (package) with latin option}}
    
    \printindex
    
    \end{document}
    
  • 使用包创建词汇表glossaries

    testfile.tex

    \documentclass{article}
    
    \usepackage[xindy]{glossaries}
    \makeglossaries
    
    \newglossaryentry{gloss}{
    name=glossaries,
    description=A package for generating glossaries in many styles
    }
    
    \begin{document}
    
    \texttt{\gls{gloss}} is a great package!
    
    \printglossaries
    \end{document}
    

    编译一次后latexmakeglossaries testfile在命令行上运行。使用上面的选项和文件名,这将在后台调用

    xindy -L english -I xindy -M "testfile" -t "testfile.glg" -o "testfile.gls" "testfile.glo"

    第二次latex运行后,您应该会看到结果。对于其他设置,您必须阅读 的文档glossaries

答案2

自 2015 年 6 月起,xindy可在 miktex 包管理器中安装。请参阅包存储库的 5653 版本。

不要忘记更新数据库。

答案3

已经为 Windows 制作了一个非常简单的 xindy 安装程序。

查看 LaTeX Wikibook 中的条目:使用 xindy 编译词汇表 - 在 Windows 中使用 Texmaker

备注斯佩拉韦,原为已删除的评论:
我不推荐这种安装方式:它会安装已弃用的xindyPerl 版本。当您想要执行xindy更新时,您很可能必须安装完整的 Perl 发行版。

相关内容