![按章(而非按节)列出的词汇表](https://linux22.com/image/339407/%E6%8C%89%E7%AB%A0%EF%BC%88%E8%80%8C%E9%9D%9E%E6%8C%89%E8%8A%82%EF%BC%89%E5%88%97%E5%87%BA%E7%9A%84%E8%AF%8D%E6%B1%87%E8%A1%A8.png)
就像每章或每节的词汇表,我试图使用该glossaries
包创建首字母缩略词列表,但只能按章节创建,而不是按部分创建。
我试图调整答案,但没有成功。
这是一个最小的例子:
\documentclass{报告} \usepackage{datatool-base} \usepackage[counter=chapter,xindy,section=section]{词汇表} \GlsSetXdyMinRangeLength{0} \制作词汇表 \newglossaryentry{E}{name={\ensuremath{E}},description={energy}} \newglossaryentry{m}{name={\ensuremath{m}},description={质量}} \newglossaryentry{c}{name={\ensuremath{c}},description={光速}} \newglossaryentry{v}{name={\ensuremath{v}},description=速度} \newglossarystyle{我的风格}% {% \setglossarystyle{列表}% \renewcommand*{\glossaryentrynumbers}[1]{\striprelax##1\endstriprelax}% \renewcommand*{\glsXchapterXglsnumberformat}[2]{##2}% \renewcommand*{\delimR}{,}% \renewcommand*{\glossaryentryfield}[5]{% \edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##5}}% \doifinlocation {% \项目 ##2 ##3% }% }% } \newcommand{\ifinlocation}[3]{% \DTLifinlist{#1}{#2}{#3}{}% } \def\striprelax\relax#1\endstriprelax{#1} \setglossarystyle{我的风格} \开始{文档} \chapter{示例章节} \打印词汇表 \开始{方程} \gls{E} = \gls{m}\cdot \gls{c}^2 \end{方程} \gls重置 \chapter{另一章} \打印词汇表 \开始{方程} \gls{E} = \frac{\gls{m}\gls{v}^2}{2} \end{方程} \结束{文档}
答案1
这里的问题是,你把新旧命令混在一起了。我的原始答案您链接到的命令已有数年历史,并且使用了现已弃用的命令,例如\glossarystyle
和\glossaryentryfield
。您的 MWE 已将弃用的 更改\glossarystyle
为\setglossarystyle
,但尚未更改弃用的\glossaryentryfield
。通过使用新的\setglossarystyle
,向后兼容性将被删除并且\glossaryentryfield
不会被使用。
要修复此问题,只需替换\glossaryentryfield
为较新的版本\glossentry
:
\renewcommand*{\glossentry}[2]{%
\edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##2}}%
\doifinlocation
{%
\item \glossentryname{##1} \glossentrydesc{##1}%
}%
}%
完成 MWE:
\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}
\printglossary
\begin{equation}
\gls{E} = \frac{\gls{m}\gls{v}^2}{2}
\end{equation}
\end{document}
第一章:
第二章: