请节省您的时间和精力来完成此任务。它已部分解决。
我正在一步步尝试解决这个问题xindy 为古埃及语音译。有一些有趣的附带问题,这是第一个。如何将 Xindy 仅用作排序引擎?所以我的任务是获得与 Linux 程序类似的结果种类。
我们运行任何 LaTeX 引擎,例如
lualatex 毒素迪问题.tex
xindy -M texindy -L czech -C utf8 毒素迪问题.idx
lualatex 毒素迪问题.tex
让其成为 MWE:
% run: *latex toxindy-question.tex
\documentclass[a4paper]{article}
\usepackage{makeidx}
\makeindex
\usepackage{filecontents}
\begin{document}
Text before.
\index{first}\index{první}
\index{bread}\index{chléb}
\index{beer}\index{pivo}
\index{cibule}\index{mrkev}\index{řeřicha}\index{čmuchal}
\index{lenost}
\index{lenost}
\index{6@six}
\index{testv}
\index{testD!testE}
\index{testA!testB!testC}
\index{levelw}
\newpage
\index{lenostem}
\index{mark|textit}
\printindex
\end{document}
请求的输出toxindy-question.ind
应该是:
six
beer
bread
cibule
čmuchal
first
chléb
lenost
lenostem
levelw
mark
mrkev
pivo
první
řeřicha
testA testB testC
testD testE
testv
实际输出是这样的(toxindy-question.ind
):
\begin{theindex}
\providecommand*\lettergroupDefault[1]{}
\providecommand*\lettergroup[1]{%
\par\textbf{#1}\par
\nopagebreak
}
\lettergroupDefault{default}
\item six, 1
\indexspace
\lettergroup{B}
\item beer, 1
\item bread, 1
\indexspace
\lettergroup{C}
\item cibule, 1
\indexspace
\lettergroup{Č}
\item čmuchal, 1
\indexspace
\lettergroup{F}
\item first, 1
\indexspace
\lettergroup{Ch}
\item chléb, 1
\indexspace
\lettergroup{L}
\item lenost, 1
\item levelw, 1
\indexspace
\lettergroup{M}
\item mrkev, 1
\indexspace
\lettergroup{P}
\item pivo, 1
\item první, 1
\indexspace
\lettergroup{Ř}
\item řeřicha, 1
\indexspace
\lettergroup{T}
\item testA
\subitem testB
\subsubitem testC, 1
\item testD
\subitem testE, 1
\item testv, 1
\end{theindex}
答案1
其中一个问题是,据我所知,捷克语的排序并非 100% 有效sort
(不考虑字母/二合字母ch
)。我们不能使用合并规则,而且在那里设置新语言也不是一项典型的任务。因此 Xindy 仍然是第一选择。
我的主要任务是排版捷克语、古埃及象形文字和英国语音词典/索引,我需要对索引条目进行排序和分组,但不提供任何标签,以便以后在 Lua 中使用。我附上了我的尝试,我离完全解决这个任务已经很近了,但是我仍然无法摆脱索引页码的困扰。这可以在 TeX 级别轻松完成(使用 TeX 命令包装索引页码并使用类似\def\getmelost#1{}
),或者,我们可以删除 Lua 中百分号后面包括 和 的部分,例如通过string.gsub
。我想知道我们是否可以在 Xindy 级别做到这一点。
我准备了一个附加文件,clearme.xdy
以便我们可以轻松地从捷克语切换到另一种语言。在此示例中,我们运行任何 LaTeX 引擎,例如:
lualatex toxindy.tex
xindy -M texindy -L czech -C utf8 -M clearme toxindy.idx
lualatex toxindy.tex
我附上了一个最小的工作示例:
% run: *latex toxindy.tex
\documentclass[a4paper]{article}
\usepackage{makeidx}
\makeindex
%\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents*}{clearme.xdy}
(define-letter-groups (""))
(markup-index :open "" :close "" :tree)
(markup-letter-group-list :sep "")
(markup-letter-group :open-head "" :close-head "")
(markup-letter-group :open-head "" :close-head "" :group "default")
(markup-indexentry :open "" :close "~n" :depth 0)
(markup-indexentry :open " " :close "" :depth 1)
(markup-indexentry :open " " :close "" :depth 2)
(markup-locclass-list :open "" :sep "")
(markup-locref-list :sep "")
(markup-range :sep "")
(markup-crossref-list :open "" :close "" :class "see")
;(markup-locref :class "page-numbers" :open "pivo" :close "nepivo")
(markup-locref :open "% " :close "" :attr "default")
(markup-locref :open "% " :close "" :attr "textbf")
(markup-locref :open "% " :close "" :attr "textit")
(markup-locref :open "% " :close "" :attr "hyperpage")
;(define-location-class "page-numbers" ("arabic-numbers"))
; :minimum-range-length 3
; (markup-attribute-group :open "<group0>" :close "</group0>" :group 0)
; (markup-trace :open "%%" :close "~n")
;(define-location-class-order (""))
;(define-attributes ("see"))
\end{filecontents*}
\begin{document}
Text before.
\index{first}\index{první}
\index{bread}\index{chléb}
\index{beer}\index{pivo}
\index{cibule}\index{mrkev}\index{řeřicha}\index{čmuchal}
\index{lenost}
\index{lenost}
\index{6@six}
\index{testv}
\index{testD!testE}
\index{testA!testB!testC}
\index{levelw}
\newpage
\index{lenostem}
\index{mark|textit}
\printindex
\end{document}
这是我努力的结果(toxindy.ind
)。这个结果可以用,但并不完美。
six% 1
beer% 1
bread% 1
cibule% 1
čmuchal% 1
first% 1
chléb% 1
lenost% 1
lenostem% 2
levelw% 1
mark% 2
mrkev% 1
pivo% 1
první% 1
řeřicha% 1
testA testB testC% 1
testD testE% 1
testv% 1