更新:我已经使用玻璃杯一段时间了,也习惯了。它并不像我最初想象的那么糟糕。
有没有比glossaries
package 更好的替代品?用起来很麻烦。文档缺少示例,有些命令不执行任何操作(例如\glssee
),很难自定义(为什么我不能将词汇表变成一个简单的部分?),它是有状态的 - 我必须makeglossaries
在某个地方调用,而且定义新条目的语法也很丑陋:
\newglossaryentry{blah}{name=blah, description={blabh lbah blah}}
它很像 xml。
无意冒犯创作者,但我只是好奇是否有其他人也有这种感觉,以及是否还有其他选择?
答案1
这是皮塔饼的替代品。
\documentclass[11pt]{book}
\usepackage{lstdoc,lipsum}
\begin{document}
\makeatletter
\def\alist{}
\let\sort\lst@BubbleSort
\def\addtolist#1#2{
\lst@lAddTo\alist{#2}
}
\long\gdef\addterm#1#2{\addtolist\alist{#1,}}
\def\gentry#1#2{%
\long\expandafter\gdef\csname#1\endcsname{\textbf{#1}: #2}
\addterm{#1}{#2}
\sort\alist
}
\def\PrintGlossary{%
\@for \i:=\alist\do{%
\csname\i\endcsname\par}
}
%example
\gentry{electrolyte}{Substance containing free ions that make t
he substance electrically conductive}
\gentry{battery}{\lipsum[3]}
\gentry{poles}{\lipsum[1]}
% print the glossary
\section{Glosary}
\PrintGlossary
\battery
\makeatother
\end{document}
添加适合的配料。
它提供了一个非 xml 命令:
\gentry{<term>}{<description>}
...并且它不需要 Perl。尽情享受吧!
答案2
我改变了上面的代码,以便您可以进行交叉引用:
\documentclass[11pt]{book}
\usepackage{lstdoc,lipsum}
\usepackage{hyperref}
\begin{document}
\makeatletter
\def\alist{}
\let\sort\lst@BubbleSort
\def\addtolist#1#2{
\lst@lAddTo\alist{#2}
}
\long\gdef\addterm#1#2{\addtolist\alist{#1,}}
\def\gentry#1#2{%
\long\expandafter\gdef\csname.#1\endcsname{\hypertarget{target#1}{\textbf{#1}: #2}}
\expandafter\gdef\csname#1\endcsname{\hyperlink{target#1}{#1}}
\addterm{#1}{#2}
\sort\alist
}
\def\gentryP#1#2#3{%
\expandafter\gdef\csname#3\endcsname{\hyperlink{target#1}{#3}}
\long\expandafter\gdef\csname.#1\endcsname{\hypertarget{target#1}{\textbf{#1}: #2}}
\expandafter\gdef\csname#1\endcsname{\hyperlink{target#1}{#1}}
\addterm{#1}{#2}
\sort\alist
}
\def\PrintGlossary{%
\section{Glosary}
\
\@for \i:=\alist\do{%
\csname.\i\endcsname\par}
\newpage
}
%example
\gentry{electrolyte}{Substance containing free ions that make t
he substance electrically conductive}
% use gentryP if the plural is irregular
\gentryP{battery}{\lipsum[3]}{batteries}
\gentry{poles}{\lipsum[1]}
% print the glossary
\PrintGlossary
\section{normal text}
\electrolyte s are used nearly everywhere.
\newpage
\battery is the singular. but sometimes you need the plural \batteries.
\makeatother
\end{document}