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}
如果\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
?