我正在准备一个文档类,使用 glossaries 包来排版词典。由于我的许多条目需要图片、表格,甚至一些 C++ 代码,我想知道有没有办法将这些内容直接放入词汇表包的描述键中?
这是一个简单的 MWE:
\documentclass[twoside]{book}
\usepackage[]{graphicx}
\usepackage{lipsum}
\usepackage[xindy,nonumberlist]{glossaries}
\makeglossaries
\newcommand{\dict}[4][]{%
\newglossaryentry{#2}%
{%
name=#2,%
symbol=#3,%
description=#4,%
#1%
}%
\glsadd{#2}%
}
\begin{document}
\dict{zero}{n}{\lipsum[4]}
\dict{adhesive}{n}{\lipsum[5]}
\dict{main}{n}{\lipsum[3]}
\dict{material}{n}{\lipsum[1]}
\printglossary
\end{document}
我知道有一种解决方案是将这些东西存储在命令中,然后将其用作描述,但我不喜欢这种解决方案。我的描述结构如下:
\dict{lion}{n}{%
Lions live in ...
\begin{center}
\includegraphics[width=3cm]{lion}
\end{center}
They generally eat ...
}
顺便说一句,我必须仅使用它xindy
来对条目进行排序。
答案1
您需要使用命令添加带有长描述的新条目,这样段落中断才不会导致错误。为此,您需要将定义移到序言中或从序言中的外部文件加载它们。例如,以下修改为使用\dict
长条目命令,然后在序言中定义定义,然后再将它们添加到文档中。
我不确定它#1
的用途,所以我不确定它应该放在哪里,你可能需要适当地移动它。
\documentclass[twoside]{book}
\usepackage[]{graphicx}
\usepackage{lipsum}
\usepackage[xindy,nonumberlist]{glossaries}
\makeglossaries
\newcommand{\dict}[4][]{%
\longnewglossaryentry{#2}%
{%
name=#2,%
symbol=#3,%
#1%
}{%
#4
}%
% \glsadd{#2}%
}
\dict{zero}{n}{\lipsum[4]}
\dict{adhesive}{n}{\lipsum[5]}
\dict{main}{n}{\lipsum[3]}
\dict{material}{n}{\lipsum[1]}
\dict{lion}{n}{%
Lions live in\dots%
\begin{center}
\includegraphics[width=3cm]{example-image-a}
\end{center}
They generally eat\dots%
}
\dict{tiger}{n}{%
Tigers live in\dots%
\begin{center}
\includegraphics[width=3cm]{tiger}
\end{center}
They generally eat\dots%
}
\begin{document}
\glsaddall
\printglossary
\end{document}
[老虎的图像来自文档,pstricks
并带有工作目录中的符号链接。]