使用“词汇表”包为书中的每一章提供单独的缩写/首字母缩略词列表

使用“词汇表”包为书中的每一章提供单独的缩写/首字母缩略词列表

glossaries我正在尝试使用包和为书中的每一章分别生成缩写/首字母缩略词列表xindy。任何缩写都可以出现在任何章节中。

使用 Nicola Talbot 的建议章节部分作为起点,我无法使这项工作持续超过两章

以下 MWE 没有给出正确的输出:在第 2 章中,大量的虽然在公式中使用了,但词汇表中没有列出\gls{m}。预期的行为是大量的将其纳入词汇表中。

\documentclass{report}
\usepackage{datatool-base}
\usepackage[counter=chapter,xindy,section=section]{glossaries}
\GlsSetXdyMinRangeLength{0}
\makeglossaries
\newglossaryentry{E}{name={\ensuremath{E}},description={energy}}
\newglossaryentry{m}{name={\ensuremath{m}},description={mass}}
\newglossaryentry{c}{name={\ensuremath{c}},description={speed of light}}
\newglossaryentry{v}{name={\ensuremath{v}},description=velocity}
\newglossarystyle{mystyle}%
{%
  \setglossarystyle{list}%
  \renewcommand*{\glossaryentrynumbers}[1]{\striprelax##1\endstriprelax}%
  \renewcommand*{\glsXchapterXglsnumberformat}[2]{##2}%
  \renewcommand*{\delimR}{,}%
  \renewcommand*{\glossentry}[2]{%
    \edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##2}}%
    \doifinlocation
    {%
      \item \glossentryname{##1} \glossentrydesc{##1}%
    }%
  }%
}
\newcommand{\ifinlocation}[3]{%
 \DTLifinlist{#1}{#2}{#3}{}%
}
\def\striprelax\relax#1\endstriprelax{#1}
\setglossarystyle{mystyle}

\begin{document}

\chapter{Sample Chapter}
\printglossary
\begin{equation}
\gls{E} = \gls{m}\cdot \gls{c}^2
\end{equation}
\glsresetall
\chapter{Another Chapter (2)}
\printglossary
\begin{equation}
\gls{E} = \frac{\gls{m}\gls{v}^2}{2}
\end{equation}

\glsresetall
\chapter{Yet another Chapter (3)}
\printglossary
\begin{equation}
\gls{m}\gls{v}
\end{equation}

\end{document}

第 1 章的正确缩写列表 第 2 章的缩写列表不正确 第 3 章的正确缩写列表

如果\gls{m}从第 3 章中删除,第 2 章的缩写列表正确显示。

\begin{equation}
\gls{v}
\end{equation}

输出之间的差异似乎源于文件.gls。在 MWE 的.gls文件中,相关行如下:

\glossentry{m}{\glossaryentrynumbers{\relax 
\glsXchapterXglsnumberformat{}{1}\delimR 
\glsXchapterXglsnumberformat{}{3}}}\glsgroupskip

手动更改此内容以包含第 2 章并在 MWE 上重新运行 LaTeX 即可产生正确的结果。

\glossentry{m}{\glossaryentrynumbers{\relax 
\glsXchapterXglsnumberformat{}{1}\delimR 
\glsXchapterXglsnumberformat{}{2}\delimR 
\glsXchapterXglsnumberformat{}{3}}}\glsgroupskip

如何才能自动生成正确的输出而不是弄乱文件.gls

相关内容