我正在使用该songs
软件包制作一本歌本。这本书是挪威语的,因此我们需要在 z 之后索引挪威语字母 æ、ø、å。据我所知,这只有使用 xindy 软件包才有可能。创建索引没有问题,但我想自定义它的外观。现在,它看起来像这样:
使用 makeindex,我可以让它看起来正确
这是 makeindex 的代码
\usepackage[makeindex]{imakeidx} % Normal LaTeX indexing
\makeindex[columns=1, title=Sangregister,program=makeindex,intoc=true,options=-s idxconf.ist] % Properties of index
这是给 xindy 的
\usepackage[texindy]{imakeidx}
\def\xindylangopt{-M lang/norwegian/latin1-test }
\makeindex[columns=1,name=master,title =Sangregister,intoc=true,options=\xindylangopt]
布局选项位于文件中idxconf.ist
,其工作makeindex
原理如下
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
delim_0 " \\dotfill "
delim_1 " \\dotfill "
delim_2 " \\dotfill "
是否可以将 idxconf.ist 文件与 xindy 一起使用?如果不行,我该如何自定义 xindy 使其看起来像最后一张图片。
这是一个最小工作示例:
xindy:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[norsk]{babel}
\usepackage[texindy]{imakeidx}
\def\xindylangopt{-M lang/norwegian/latin1-test}
\makeindex[columns=1,name=xindytest,title =Sangregister, options=\xindylangopt]
\begin{document}
start
\index{a}\index{æ}\index{ø}\index{å}
end
blabla
\printindex
\end{document}
makeindex,看起来正确,但是 æøå 被视为符号。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[norsk]{babel}
\usepackage[makeindex]{imakeidx}
\makeindex[columns=1, title=Sangregister,program=makeindex,intoc=true,options=-s idxconf.ist] % Egenskaper til indeks
\begin{document}
start
\index{a}\index{æ}\index{ø}\index{å}
end
blabla
\printindex
\end{document}
答案1
对于类似的作品,意大利语(歌曲集以重音字母开头的歌曲),我使用了这个样式文件(indicealfabetico.xdy
)
(markup-index :open "\begin{theindex}\sffamily~n
\providecommand*\lettergroupDefault[1]{}
\providecommand*\lettergroup[1]{%
\par\textbf{\large#1}\par
\nopagebreak
}"
:close "~n~n\end{theindex}~n"
:tree)
;; The indexentries (item_<..> specifiers)
(markup-indexentry :open "~n \item " :depth 0)
(markup-indexentry :open "~n \subitem " :depth 1)
(markup-indexentry :open "~n \subsubitem " :depth 2)
;; Location-references
;; delim_0 <string> ", "
;; delim_1 <string> ", "
;; delim_2 <string> ", "
(markup-locclass-list :open "\dotfill " :sep ", ")
;; delim_n <string> ", "
(markup-locref-list :sep ", ")
;; delim_r <string> "--"
(markup-range :sep "--")
以这样的方式使用 xindy:
% arara: xelatex: { shell : yes }
\documentclass[12pt]{book}
\usepackage{imakeidx}
\makeindex[name=alfabetico,title=Indice alfabetico,program=truexindy,options=-M texindy -C utf8 -L italian -M indicealfabetico]
一个可编译的示例,与 xelatex 一起使用:
% arara: xelatex: { shell : yes}
\begin{filecontents*}{style.xdy}
(markup-index :open "\begin{theindex}\sffamily~n
\providecommand*\lettergroupDefault[1]{}
\providecommand*\lettergroup[1]{%
\par\textbf{\large#1}\par
\nopagebreak
}"
:close "~n~n\end{theindex}~n"
:tree)
(markup-locclass-list :open "\dotfill " :sep ", ")
;; End
\end{filecontents*}
\documentclass{article}
\usepackage{fontspec}
\usepackage{imakeidx}
\makeindex[columns=1,title=Sangregister,program=truexindy,options=-M texindy -C utf8 -L norwegian -M style]
\begin{document}
start
\index{a}\index{æ}\index{ø}\index{å}\index{Song}
end
blabla
\printindex
\end{document}
答案2
不完全确定我是否充分回答了您的问题,但是使用提供的 MWE,我使用“词汇表”包创建了所需的结果,而不是尝试调整“imakeidx”。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[norsk]{babel}
\usepackage[xindy]{glossaries}
\renewcommand*\glspostdescription{\dotfill} % Dotted line to page numbers
\renewcommand*{\glsnamefont}[1]{\textnormal{#1}} % No bold font on index names
\makeglossaries
\begin{document}
\newglossaryentry{a}{name={a},description={}}
\newglossaryentry{ae}{name = {{æ}},description = {}} %Improtant to note the double curly
\newglossaryentry{oe}{name = {{ø}},description = {}} %brackets around the special caracters,
\newglossaryentry{aa}{name = {{å}},description = {}} %and only ASCII (afaik) in the handle.
start \gls{ae} \gls{aa} \gls{oe} \gls{a}
end
blabla
\printglossary[style=indexgroup, title=Sangregister]
\end{document}
得出:
我对我认为需要解释的地方进行了评论。我建议阅读此处的用户文档:CTAN 词汇表。
如果你正在使用 MiKTeX,并且尚未完全安装 xindy 和 pearl,我推荐用户 Speravir 的这三篇帖子:
如果您正在使用 TeXmaker (或其衍生产品之一):这里有一个很好的答案,关于在哪里添加“makeglossaries”命令:
希望这可以帮助!
答案3
我对 Francesco 的回答做了一些小修改。
我使用文件内容环境的覆盖选项,以便保存我的格式更改。
您不需要
(markup-index ...)
这里给出的形式,因为这是默认的。引用列表中的分隔符由
(markup-locref-list :sep "; ")
而不是:sep
的变量 设置(markup-locclass-list :open "\dotfill " :sep ", ")
。添加语言包,如 luatex 中的 polyglossia 或 pdftex 中的 babel,以获取“参见”的当地术语,例如挪威语中的“Sjå”。
所以我的修改版本如下。
% !TeX program = lualatex
% !TEX encoding = UTF-8 Unicode
% !TeX spellcheck = en_NO
\begin{filecontents*}[overwrite]{style.xdy}
(markup-locclass-list :open "\dotfill ")
(markup-locref-list :sep "; ")
\end{filecontents*}
\documentclass{article}
\usepackage{fontspec}
\usepackage[babelshorthands=true]{polyglossia}
\setdefaultlanguage{norwegian}
\usepackage[texindy]{imakeidx}
\makeindex[columns=1,title=Sangregister,options= -C utf8 -L norwegian -M style]
\begin{document}
a\index{a}, æ\index{æ}, ø\index{ø}, å\index{å}, Song\index{Song}\newpage
a\index{a}, æ\index{æ}, ø\index{ø}, å\index{å}, Lied\index{Lied|see{Song}}
\printindex
\end{document