我如何重新定义词汇表记录,我正在编写自定义类,并想将一些“默认”词汇表术语定义为类的一部分,但是,可能希望根据具体情况在文档级别重新定义它们。
目前,如果我尝试定义一个已经存在的词汇表记录,它会抛出一个已定义的错误,这与包有关Glossaries
。
以下是一个示例,其中,在简单类定义中创建了一个词汇表记录,作为默认实例。目前,这可以很好地编译,但是,如果实际文档中尝试重新定义未注释,则会产生错误,报告词汇表记录已存在。
%===================================================
%A Trivial Class
%===================================================
\begin{filecontents*}{democlass_v3.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{democlass_v3}[6/6/2013 democlass]
\LoadClassWithOptions{article}
\RequirePackage{glossaries}
%<<<<<< FIRST DEFINITION >>>>>>%
\newglossaryentry{pg}{
name={pg.},
description={Short Page Abbreviation},
first={pg.},
firstplural={pp.},
plural={pp.}
}
\end{filecontents*}
\documentclass{democlass_v3}
%===================================================
%BELOW REDEFINITION THROWS ERROR IF UNCOMMENTED...
%===================================================
%<<<<<< ATTEMPTED REDEFINITION >>>>>>%
%\newglossaryentry{pg}{
% name={page},
% description={Short Page Abbreviation - Redefined},
% first={page},
% firstplural={pages},
% plural={pages}
%}
%===================================================
\begin{document}
The page glossary record is: \gls{pg}
\end{document}
抛出的具体错误是:
Package glossaries Error: Glossary entry 'pg' has already been defined
答案1
我不确定你是否真的想这么做。不过,这里有一种方法:
\documentclass{article}
%%% This will go in the class file
\usepackage{glossaries}
\newcommand{\renewglossaryentry}[1]{%
\ifglsentryexists{#1}
{\global\csundef{glo@#1@name}}
{}
\newglossaryentry{#1}
}
\newglossaryentry{pg}{
name={pg.},
description={Short Page Abbreviation},
first={pg.},
firstplural={pp.},
plural={pp.}
}
%%% End of code in the class file
\makeglossaries
\renewglossaryentry{pg}{
name={page},
description={Short Page Abbreviation - Redefined},
first={page},
firstplural={pages},
plural={pages}
}
\begin{document}
The page glossary record is: \gls{pg}
\printglossaries
\end{document}
只要在重新定义之前没有使用词汇表条目,一切就都会顺利。