用例很简单,假设你为海盗编写了一本计算机科学教科书。那么,每次提到一个术语时,你可能需要提到它的英文对应词。因此,不要写,
Ye first proggie today will be ``Ahoy, World!''
你想写:
Ye first \term{proggie} today will be ``\term{Ahoy}, World}!''
其中,在单独的文件中,列出所有术语及其英文等价词,例如\termdef{ahoy}{hello}
和\termdef{proggie}{program}
。
宏\term
(在上下文中使用单词)应该执行以下操作:
- 添加英文对应内容的脚注。
- 将自身添加到海盗-英语词典中
- 将自身添加到英语至海盗词典中。
现在,这个包似乎glossaries
几乎可以做到这一点。主要的困难在于处理词形。glossaries
可以做复数,但海盗语言有更多的词形,例如,你可以在术语定义文件中写入,
`\termdef{progie}{program}`
`\termdef{progee}{program}`
或者更好的是,不要定义所有可能的词形,而是让文本提及主要形式,即文本中引用单词的主要形式。
After writing the \term[progie]{progee}, you have to compile it.
我希望第一个脚注包含主要词形,而不是当前变体。
另外,我不确定如何使用该包来生成两个词汇表而不是一个词汇表,每个词汇表都有自己的排序。
(A上一个问题处理了类似的主题(冰岛语与海盗),但困难仍然存在:第一个脚注应该提到这个词的主要形式,以及制作两个词汇表而不是一个词汇表的问题。
答案1
这是部分答案,重新定义glossaries
内部(?)控制序列\glsdisplayfirst
以(a)显示当前单词形式,以及(b)用词根形式放置脚注。方法如下:
\renewcommand\glsdisplayfirst[4]{#1\footnote{\glslabel=#2}}
请注意,\glslabel
控制序列提供了单词的词根形式。以下定义将使您可以轻松地在文本中使用任何单词形式:
\newcommand\newterm[2]{\newglossaryentry{#1}{name=#1,description=#2}}
\newcommand\term[2][\relax]{\ifx#1\relax\gls{#2}\else\glsdisp{#1}{#2}\fi}
以下是完整示例:
\documentclass{article}
\usepackage{glossaries}
\renewcommand\glsdisplayfirst[4]{#1\footnote{\glslabel=#2}}
\newcommand\newterm[2]{\newglossaryentry{#1}{name=#1,description=#2}}
\newcommand\term[2][\relax]{%
\ifx#1\relax
\gls{#2}%
\else
\glsdisp{#1}{#2}%
\fi
}
\makeglossaries
\newterm{ahoy}{hello}
\newterm{progee}{program}
\newterm{picaroon}{pirate}
\begin{document}
\section{Programming for \term[picaroon]{Picaroons}}
Ye first \term[progee]{proggie} today will be ``\term[ahoy]{Ahoy}, World!''.
Nice \term{progee}, ain't it?
\printglossaries
\end{document}
我仍然不知道如何自动创建逆词典。