词汇表的替代品?

词汇表的替代品?

更新:我已经使用玻璃杯一段时间了,也习惯了。它并不像我最初想象的那么糟糕。

有没有比glossariespackage 更好的替代品?用起来很麻烦。文档缺少示例,有些命令不执行任何操作(例如\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}

答案3

datagidx中的datatool对您来说是一个很好的解决方案。

Datagidx 是本文

以下是一些包装文档和一个样本文件

我自己还没有尝试过,但这是我决定尝试的第一种方法,因为我不喜欢该glossaries包具有外部依赖性。

编辑:我现在已经在一个项目上尝试过这个方法。它工作得很好,但一开始可能会有点混乱,但我还没有尝试过其他解决方案,所以我无法真正比​​较它们。

相关内容