为日语的 Lualatex 词汇表定义特殊排序?

为日语的 Lualatex 词汇表定义特殊排序?

我目前正在努力创建按日语字母顺序排列的日语词汇表。我已检查并尝试过以下方法:含中日韩字符的词汇表 然而它似乎不适用于 Lualatex(我在整篇论文中都使用它),而且——附注——当我尝试测试时,它给了我一个错误

(! Package inputenc Error: Unicode character 繝 (U+7E5D)
(inputenc)                not set up for use with LaTeX.)

因此,我尝试使用 Lualatex 并创建了一个相当简单的词汇表。但是,排序既不遵循英语或日语的字母顺序,也不遵循“首次出现”的顺序或创建列表的顺序。因此,我不知道如何将它们按顺序排列。最理想的是日语字母表,它与英语字母表不同 - 仅举第一个字母表的简单示例:(a、i、u、e、o、ka、ki、ku、ke、ko、sa、shi、su、se、so...)

这是我的代码示例:

    \documentclass[12pt,a4paper,headings=standardclasses,numbers=noenddot]{scrreprt}
\usepackage[left=2.50cm, right=2.50cm, top=2.50cm, bottom=2.00cm]{geometry}

\usepackage[main=ngerman, english]{babel}
\usepackage[babel, german=quotes]{csquotes}

\usepackage[no-math]{fontspec}
\newfontface\cjkfont{MogaHMinEx90}
\usepackage[no-math,match]{luatexja-preset}
\setmainjfont{MogaHMinEx90}

\usepackage{luatexja-ruby}
\ltjsetparameter{jacharrange={-3}}

\usepackage[record]{glossaries-extra}

\newrobustcmd{\cjkname}[1]{\begin{CJK}{UTF8}{min}#1\end{CJK}}
\glsnoexpandfields
\GlsXtrLoadResources[
  src={entries},% data in entries.bib
  sort=ja,% sort according to Japanese alphabet
  category=japanese
]

\glssetcategoryattribute{japanese}{glossnamefont}{textcjk}
\glssetcategoryattribute{japanese}{glossdescfont}{textcjk}
\glssetcategoryattribute{japanese}{textformat}{textcjk}

\begin{document}
オイルショック
\gls{oilshock} abc 
\printunsrtglossary
\end{document}

这是我的词汇表条目

    \newglossaryentry{oilshock}{name={\cjkname{オイルショック}},
  description={\cjkname{《和 oil+shock》アラブ産油国の原油生産削減と価格の大幅引き上げが、石油を主なエネルギー資源とする先進工業諸国に与えた深刻な経済的混乱のこと。第一次は昭和48年(1973)、第二次は昭和54年(1979)。石油危機。}}}

\newglossaryentry{fms}{name={cjkname{\ltjruby[]{多|品|種少|生産}{た|ひんしゅ|しょう|せいさん}}},
  description={\cjkname{工場における生産様式の一つで,同一の工場において類似性の低い製品を多品種にしかも1品目あたりは少量生産するもの。}}}  

有没有一个巧妙的解决方案,或者这完全是一篇只有 15 页长的论文的过度设计?(我其实非常喜欢上面链接的例子,你还可以添加具有不同顺序的双语)

抱歉,如果还有任何未解决的问题,因为我对 LaTeX 还不太熟悉。请随时提问 :) 提前谢谢您!

答案1

由于您使用的是 LuaLaTeX 而不是 PDFLaTeX(我认为链接的问题正在使用),所以我认为您不需要CJKutf8(加载inputenc)。正如我在评论中提到的,makeindex它不适合 UTF-8 并且xindy不提供日语支持,但bib2gls确实如此。

现在,您需要一个包含词汇表数据的文件,而不是glossaries.tex包含的文件。例如,该文件包含:\newglossaryentry.bibentries.bib

% Encoding: UTF-8

@preamble{"\providecommand{\ltjruby}[3][]{#2#3}"}

@entry{oilshock,
 name={オイルショック},
 description={《和 oil+shock》アラブ産油国の原油生産削減と価格の大幅引き上げが、石油を主なエネルギー資源とする先進工業諸国に与えた深刻な経済的混乱のこと。第一次は昭和48年(1973)、第二次は昭和54年(1979)。石油危機。}
}

@entry{fms,
 name={\ltjruby[]{多|品|種少|生産}{た|ひんしゅ|しょう|せいさん}},
 description={工場における生産様式の一つで,同一の工場において類似性の低い製品を多品種にしかも1品目あたりは少量生産するもの。}
}  

@entry{afghanistanintervention,
 name={アフガン\ltjruby{侵|攻}{しん|こう}},
 description={1979年12月の、ソ連軍によるアフガニスタンへの侵攻。ソ連は1978年調印の友好協力善隣条約に基づく、アフガニスタン政府の要請によるとしたが、反政府派の激しい抵抗と、強い国際的非難にあい、1988年に全面撤退した。}
}  

@entry{communism,
 name={ソ\ltjruby{連|共産|党}{れん| きょうさん|とう}},
 description={1991年8月24日、ゴルバチョフ・ソ連大統領は、ソ連共産党の解散を勧告する声明を出し、自らも共産党書記長の辞任を表明した。事実上の共産党解体宣言であった。}
}

@entry{keizai,
 name={\ltjruby{社会|主義|経済}{しゃかい|しゅぎ|けいざい}},
 description={マルクス主義の未来社会観(共産主義思想)に導かれて樹立されたもので、生産手段の社会的所有に基づいて、社会全体の生産と消費が計画によって調整され、各人の労働に応じて所得分配が行われる経済をいう。}
}

我已经修剪了您的 MWE 并用来fontspec设置字体(而不是使用CJKutf8)。我没有luatexja-ruby安装,也不知道 的正确语法。我在文件中使用\ltjruby提供了 的定义。如果它已经在文档中定义过(当您取消注释相关行时),它将被忽略,但 中提供的定义提供了排序指南。您可以根据想要如何对该命令进行排序来修改此定义。例如:\ltjruby.bib\providecommandluatexja-ruby@preamblebib2glsbib2gls

@preamble{"\providecommand{\ltjruby}[3][]{#2}"}

将指示bib2gls忽略第一个(可选)和第三个参数,而:

@preamble{"\providecommand{\ltjruby}[3][]{#3}"}

将指示bib2gls忽略第一个和第二个参数。

这是修改后的 MWE(您可能需要根据需要更改字体名称):

\documentclass[12pt,a4paper,headings=standardclasses,numbers=noenddot]{scrreprt}
\usepackage[left=2.50cm, right=2.50cm, top=2.50cm, bottom=2.00cm]{geometry}

\usepackage[main=ngerman, english]{babel}
\usepackage[babel, german=quotes]{csquotes}

%\usepackage{luatexja-ruby}
%\ltjsetparameter{jacharrange={-3}} 

\usepackage{fontspec}
\setmainfont{FreeSerif}
\newfontface\cjkfont{Source Han Sans CN}

\usepackage[record]{glossaries-extra}

\newrobustcmd{\textcjk}[1]{{\cjkfont #1}}

\GlsXtrLoadResources[
  src={entries},% data in entries.bib
  sort=ja,% sort according to Japanese alphabet
  category=japanese
]

\glssetcategoryattribute{japanese}{glossnamefont}{textcjk}
\glssetcategoryattribute{japanese}{glossdescfont}{textcjk}
\glssetcategoryattribute{japanese}{textformat}{textcjk}

\begin{document}
\gls{oilshock} abc \gls{fms} def \gls{afghanistanintervention} ghi \gls{communism} jkl \gls{keizai}
\printunsrtglossary
\end{document}

我不懂日语,但是这应该会根据语言环境提供程序的日语排序规则对条目进行排序。(bib2gls有关语言环境提供程序的更多详细信息,请参阅手册。)取消注释这些luatexja-ruby行时,您可能会得到不同的词汇表。

相关内容