如何将 `glossaries` 与 `ProvidesPackage` 结合使用

如何将 `glossaries` 与 `ProvidesPackage` 结合使用

我可以使用glossaries,我的意思是编译并生成第一个示例的 PDFhttp://mirrors.cqu.edu.cn/CTAN/macros/latex/contrib/glossaries/glossariesbegin.pdf

\documentclass{article}
\usepackage{glossaries}
\newglossaryentry{ex}{name={sample},description={an example}}
\begin{document}
Here's my \gls{ex} term.
\end{document}

但我想使用glossaries我提供的包。我的意思是我想拥有doc.tex

\documentclass{article}
\usepackage{doc}
\newglossaryentry{ex}{name={sample},description={an example}}
\begin{document}
Here's my \gls{ex} term.
\end{document}

doc.sty

\ProvidesPackage{doc}
\usepackage{glossaries}

这就是我得到的:

$ pdflatex doc.tex 
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./doc.tex
LaTeX2e <2018-04-01> patch level 2
Babel <3.18> and hyphenation patterns for 84 language(s) loaded.
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/size10.clo)) (./doc.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries/base/glossaries.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/ifthen.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/usr/local/texlive/2018/texmf-dist/tex/generic/xkeyval/xkeyval.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/xkeyval/xkvutils.tex
(/usr/local/texlive/2018/texmf-dist/tex/generic/xkeyval/keyval.tex))))
(/usr/local/texlive/2018/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/etoolbox/etoolbox.sty))
(/usr/local/texlive/2018/texmf-dist/tex/latex/textcase/textcase.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/xfor/xfor.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/datatool/datatool-base.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsopn.sty))
(/usr/local/texlive/2018/texmf-dist/tex/latex/substr/substr.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/datatool/datatool-fp.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp.sty
`Fixed Point Package', Version 0.8, April 2, 1995 (C) Michael Mehlich
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/defpattern.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-basic.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-addons.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-snap.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-exp.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-trigo.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-pas.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-random.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-eqn.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-upn.sty)
(/usr/local/texlive/2018/texmf-dist/tex/latex/fp/fp-eval.sty))))

! LaTeX Error: \PrintChanges undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.64   \renewcommand{\PrintChanges}
                                   {%
? 

我确实PrintChangeshttp://mirrors-wan.geekpie.club/CTAN/macros/latex/contrib/glossaries/glossaries-code.pdf第 5 页 但即便如此我也不知道。我该怎么办?

答案1

不要将你的包命名为“doc”。doc.sty 已经存在(在 latex/base 中),并且当检测到它已被使用时,词汇表会包含特殊代码:

\@ifpackageloaded{doc}%
{%
  \@gls@docloadedtrue
}%
{%
  \@ifclassloaded{nlctdoc}{\@gls@docloadedtrue}{\@gls@docloadedfalse}%
}
\if@gls@docloaded
  \let\glsorg@theglossary\theglossary
  \let\glsorg@endtheglossary\endtheglossary
  \let\glsorg@PrintChanges\PrintChanges
  \renewcommand{\PrintChanges}{%
    \begingroup
      \let\theglossary\glsorg@theglossary
      \let\endtheglossary\glsorg@endtheglossary
      \glsorg@PrintChanges
    \endgroup
  }
\fi

相关内容