我正在使用 XeLaTex 撰写日本研究硕士论文,我想插入一个词汇表,每个项目显示 3 个元素:
- 日语原文(汉字/假名)
- 它的罗马字版本(romaji)
- 其译文
它甚至不需要显示每个术语出现的页面。
到目前为止,我还没有使用这样的词汇表,我只想要一个可以用来定义日语术语及其翻译如何出现在正文中的函数,所以我只是创建了一个\nihongo
这样的函数:
\documentclass[a4paper, 12pt]{article}
\usepackage{xunicode}
\usepackage{polyglossia}
\usepackage{xeCJK}
\setmainlanguage{french}
\setCJKmainfont{AozoraMinchoRegular.ttf}
\newcommand{\nihongo}[3]{\emph{#1} (#2, «~#3~»)}
\begin{document}
The \nihongo{bakumatsu}{幕末}{end of the shogunate} era
\end{document}
但是,我怀疑我是否可以使用它来构建我需要的词汇表。如果我重新定义我的\nihongo
函数,是否仍然可以?我应该改用glossaries
包吗?如果是这样,我应该如何自定义它以使所有 3 个元素都出现在词汇表中?
答案1
由于您是根据罗马拼音版本进行排序的,因此这更容易。(两者都不makeindex
支持xindy
日语,因此您只能使用bib2gls
按照汉字/假名进行排序。
我没有你的字体,所以我不得不替换它以使示例能够编译,所以只需将其改回来即可。
\documentclass[a4paper, 12pt]{article}
\usepackage{xunicode}
\usepackage{polyglossia}
\usepackage{xeCJK}
\usepackage[style=index]{glossaries}
\setmainlanguage{english}
\setCJKmainfont{Source Han Sans CN}
\newcommand{\nihongo}[3]{\emph{#1} (#2, «~#3~»)}
\makeglossaries
%syntax: \newterm[options]{romaji}{original}{translation}
\newcommand{\newterm}[4][]{%
\newglossaryentry{#2}{%
name={#2},% romanized version
symbol={#3},% original
first={\protect\nihongo{#2}{#3}{#4}},% first use
description={#4},% translation
#1% extra options
}%
}
\newterm{bakumatsu}{幕末}{end of the shogunate}
\begin{document}
The \gls{bakumatsu} era.
Next use: \gls{bakumatsu}.
\printglossaries
\end{document}
如果调用该文档myDoc.tex
则构建过程如下:
xelatex myDoc
makeglossaries myDoc
xelatex myDoc
这定义了一个名为的命令\newterm
,该命令定义了一个词汇表条目,其中name
字段设置为罗马化版本,symbol
字段设置为原始字段,字段description
设置为翻译。每个条目都有一个唯一的标识标签,不能包含任何特殊字符。由于您使用的是 XeLaTeX,因此标签中的任何扩展字符都不会有问题,因此在这种情况下,标签可以与字段相同name
。
可以使用包选项来抑制翻译后的点nopostdot
,并且可以使用包选项来隐藏页码nonumberlist
:
\usepackage[style=index,nopostdot,nonumberlist]{glossaries}
该index
样式插入symbol
括号中。并非所有样式都会检查此字段。(请参阅词汇表提供的所有样式以概览所有预定义样式。
如果您不知道如何运行,makeglossaries
请尝试添加automake
:
\usepackage[style=index,nopostdot,nonumberlist,automake]{glossaries}
如果您需要下一次使用,\gls{bakumatsu}
那么\emph
只需添加text
字段:
\newcommand{\newterm}[4][]{%
\newglossaryentry{#2}{%
name={#2},% romanized version
symbol={#3},% original
first={\protect\nihongo{#2}{#3}{#4}},% first use
text={\emph{#2}},% next use
description={#4},% translation
#1% extra options
}%
}
最好只在序言中定义术语,但如果您确实需要在环境中定义术语,请使用document
扩展包。这要求词汇表位于文档末尾。(参考书目是否出现在后面并不重要,只要后面没有参考文献即可。)glossaries-extra
docdef=restricted
\gls
\printglossaries
\documentclass[a4paper, 12pt]{article}
\usepackage{xunicode}
\usepackage{polyglossia}
\usepackage{xeCJK}
\usepackage[style=index,nonumberlist,docdef=restricted]{glossaries-extra}
\setmainlanguage{english}
\setCJKmainfont{Source Han Sans CN}
\newcommand{\nihongo}[3]{\emph{#1} (#2, «~#3~»)}
\makeglossaries
%syntax: \newterm[options]{romaji}{original}{translation}
\newcommand{\newterm}[4][]{%
\newglossaryentry{#2}{%
name={#2},% romanized version
symbol={#3},% original
first={\protect\nihongo{#2}{#3}{#4}},% first use
text={\emph{#2}},% next use
description={#4},% translation
#1% extra options
}%
}
\newcommand{\provideanduseterm}[4][]{%
\ifglsentryexists{#2}{}{\newterm[#1]{#2}{#3}{#4}}%
\gls{#2}%
}
\begin{document}
The \provideanduseterm{bakumatsu}{幕末}{end of the shogunate} era.
Next use: \gls{bakumatsu}.
\printglossaries
\end{document}
一般来说,最简单的方法是在序言中定义术语。
这是另一种方法,它假设罗马化版本始终需要\emph
在文档中进行格式化(但不要在词汇表中进行格式化):
\documentclass[a4paper, 12pt]{article}
\usepackage{xunicode}
\usepackage{polyglossia}
\usepackage{xeCJK}
\usepackage[style=index,nonumberlist]{glossaries-extra}
\setmainlanguage{english}
\setCJKmainfont{Source Han Sans CN}
\makeglossaries
%syntax: \newterm[options]{romaji}{original}{translation}
\newcommand{\newterm}[4][]{%
\newglossaryentry{#2}{%
name={#2},% romanized version
symbol={#3},% original
description={#4},% translation
#1% extra options
}%
}
\newcommand{\glsxtrpostlinkgeneral}{%
\ifdefempty\glscustomtext
{%
\glsxtrifwasfirstuse
{%
\ifglshassymbol{\glslabel}{\space(\glsaccesssymbol{\glslabel},
«~\glsaccessdesc{\glslabel}~»)}{}%
}%
{}%
}%
{}%
}
% use \emph in the document (but not in the glossary)
\renewcommand*{\glsxtrregularfont}[1]{\emph{#1}}
\newterm{bakumatsu}{幕末}{end of the shogunate}
\begin{document}
The \gls{bakumatsu} era.
Next use: \gls{bakumatsu}.
\printglossaries
\end{document}
这使得使用诸如\glspl
(使用复数形式)的命令变得更加容易。
如果需要在章节标题或说明中使用该术语,请\glsfmttext
使用glossaries-extra
:
\section{The \glsfmttext{bakumatsu} era.}
或者\glsentrytext
只使用基础glossaries
包:
\section{The \glsentrytext{bakumatsu} era.}