用于制作双语词典/词汇表的包和/或宏?

用于制作双语词典/词汇表的包和/或宏?

用例很简单,假设你为海盗编写了一本计算机科学教科书。那么,每次提到一个术语时,你可能需要提到它的英文对应词。因此,不要写,

 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(在上下文中使用单词)应该执行以下操作:

  1. 添加英文对应内容的脚注。
  2. 将自身添加到海盗-英语词典中
  3. 将自身添加到英语至海盗词典中。

现在,这个包似乎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}

输出

我仍然不知道如何自动创建逆词典。

相关内容