虽然我在论坛上读到了一些关于索引的帖子,但我仍然无法用波兰语制作索引。我想在与单个字母相连的组之前使用粗体字母(如第一张图片所示,该图片取自另一篇帖子,以展示我的目标,其中还带有变音字母 - Ć、Ś)。条目也应按字母顺序排序(例如 Ć 在 C 之后)
我怎样才能实现这个目标?
LuaLaTeX
下面是使用和编译的代码makeindex
:https://www.overleaf.com/read/rnfrvvbxhfgr
我还添加了第二张图片,它显示了当前的结果。
索引的代码分为两个文件(只有一小部分,因为我不确定它是全部):
- 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]
- 共享文件/skorowidz.tex:
(...)
\printindex
(...)
- 名称.mst:
headings_flag 1
heading_prefix "\\textbf\{"
heading_suffix "}\\nopagebreak\n"
delim_0 ": "
delim_1 ": "
delim_2 ": "
delim_r "\\nohyperpage{-}"
- 包含短文本部分的示例索引:
(... - 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}