波兰语索引问题

波兰语索引问题

虽然我在论坛上读到了一些关于索引的帖子,但我仍然无法用波兰语制作索引。我想在与单个字母相连的组之前使用粗体字母(如第一张图片所示,该图片取自另一篇帖子,以展示我的目标,其中还带有变音字母 - Ć、Ś)。条目也应按字母顺序排序(例如 Ć 在 C 之后)

我怎样才能实现这个目标?

LuaLaTeX下面是使用和编译的代码makeindexhttps://www.overleaf.com/read/rnfrvvbxhfgr

我还添加了第二张图片,它显示了当前的结果。

索引的代码分为两个文件(只有一小部分,因为我不确定它是全部):

  1. Preambula/preambula.tex:
(...)

\usepackage{fontspec}
\usepackage{polski}

(...)

\usepackage[makeindex]{imakeidx} %obsługa indeksów 
\makeindex[columns=2, options=-s names.mst -C utf8 -L polish]
  1. 共享文件/skorowidz.tex:
(...)

\printindex

(...)
  1. 名称.mst:
headings_flag 1
heading_prefix "\\textbf\{"
heading_suffix "}\\nopagebreak\n"
delim_0 ": "
delim_1 ": "
delim_2 ": "
delim_r "\\nohyperpage{-}"
  1. 包含短文本部分的示例索引:
(... - from Rozdziały/planimetria.tex)

W dowolnym trójkącie dwusieczne\index{dwusieczna}, symetralne
\index{symetralna}, środkowe\index[names]{Srodkowa@Środkowa},
wysokości\index{wysokość} przecinają się w \myuline{jednym punkcie}.
(...)

索引

目前的样子

答案1

我个人的建议是切换到upmendex。创建一个names.ist名为

icu_locale "pl"
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
delim_0 " \\dotfill "
delim_1 " \\dotfill "
delim_2 " \\dotfill "

这里的关键点是那行代码icu_locale "pl"。只需运行

upmendex -s names <your file>.idx

这是之前答案中的例子,略作修改。我不使用imakeidx,所以我不知道如何处理upmendex。这就是我手动运行它的原因。

\documentclass{article}
\usepackage[polish]{babel}
\usepackage[noautomatic]{imakeidx}

\makeindex[columns=2]

\begin{document}

Some text

\index{a}
\index{ś}
\index{ć}
\index{s}
\index{al}
\index{c}
\index{sa}
\index{se}

\printindex

\end{document}

至于单字母换行,babel现在提供了此功能。请参阅行末的一个字母的单词

答案2

无法使用 ,makeindex因为它无法正确排序除英语之外的其他语言。请更改为xindy

polski与 LuaLaTeX 不兼容,请使用babel

-shell-escape如果您想要自动处理,请启用运行xindy

\documentclass{article}
\usepackage[polish]{babel}
\usepackage{fontspec}
\usepackage[xindy]{imakeidx}

\makeindex[columns=2, options=-C utf8 -L polish]

\begin{document}

Some text

\index{a}
\index{al}
\index{c}
\index{ć}
\index{s}
\index{sa}
\index{se}
\index{ś}

\printindex

\end{document}

在此处输入图片描述

答案3

如果可以使用,则一种解决方法xindy是使用类似以下方法对 C 和 S 下以 ć 或 ś 开头的单词进行排序。您可以使用xxx@xxx宏的参数\index,其中前面的所有内容@都是排序字符串,而前面的内容@是将要打印的字符串:

\documentclass[12pt, a4paper, openany]{book}
\usepackage[makeindex]{imakeidx}

\begin{filecontents}{names.ist}
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
delim_0 " \\dotfill "
delim_1 " \\dotfill "
delim_2 " \\dotfill "
\end{filecontents}

\makeindex[columns=2, options=-s names]

\begin{document}

Foo
\index{a}
\index{al}
\index{c}
\index{czz@ć}
\index{s}
\index{sa}
\index{se}
\index{szz@ś}

\printindex

\end{document}

在此处输入图片描述

相关内容