我正在写一篇包含多个章节的论文,有些符号在多个章节中使用,但它们的定义在各个章节中有所不同。我希望在文档开头有一个符号列表,但每个章节的符号将由章节名称分隔。如下所示:
符号列表
chapter 1
S size
chapter 2
S area
Chapter 1
S is the radius of the cell.
Chapter 2
S is the area.
答案1
正如 Marco 在他的评论中所说,这不是好的风格。你的读者到达你的符号列表希望在字母列表中查找特定符号。如果他们不知道该符号首次在哪一章中定义,那么将该列表拆分成几个按章节列出的列表会使他们的工作更加困难。
此外,如果你将列表分成几个按章节列出的列表,你的读者可能不会想到“S”在不同章节中有不同的含义。他们可能会看到“S”在第 1 章的列表中表示“细胞半径”,而不会费心继续阅读以发现它在他们正在阅读的章节中实际上意味着“面积”。
如果您确实必须在不同的章节中为“S”赋予不同的含义,那么我认为最简单的做法就是有一个符号列表,并让“S”条目明确承认这两个含义,如下所示:
List of symbols
---------------
R: random reachability relation
S: cell radius (in Chapter 1) / area (in Chapter 2)
T: terrifyingly transitory transaction
答案2
免责声明我完全同意评论的观点,即为每一章设置一个词汇表并不是一个好主意,而在不同的章节中使用相同的符号来表示不同的定义就更糟糕了!
但是,这里有一个基于glossaries
包。我将首先提供代码,然后逐一解释它的作用。
\documentclass{report}
\usepackage{hyperref}
\usepackage[nonumberlist,nomain]{glossaries}
\renewcommand*{\glspostdescription}{}
\newglossary{chap1}{chap1}{sbl1}{Chapter 1: Symbols}
\newglossary{chap2}{chap2}{sbl2}{Chapter 2: Symbols}
\newcommand{\addgloss}[2]{\newglossaryentry{#1}{type=chap\thechapter,name=#1,description={#2}}}
\newcommand{\addglossmath}[3]{\newglossaryentry{#3}{type=chap\thechapter,name=\ensuremath{#1},description={#2}}}
\newcommand{\printchapglossary}{\glsaddall%
\printglossary[type=chap\thechapter]}
\makeglossaries
\begin{document}
\chapter{First chapter}
\begin{equation}
E=mc^2
\end{equation}
\addglossmath{E}{Total energy}{E}
\addglossmath{m}{Mass}{m}
\addglossmath{c}{Celerity}{c}
\printchapglossary
\chapter{Second chapter}
\addgloss{test}{This is a test entry}
\addglossmath{\pi}{Famous symbol...}{pi}
Here is a \gls{test} to see the value of \gls{pi}.
\printchapglossary
\printglossaries
\end{document}
首先,您不需要该hyperref
包,但如果您想要将其用于其他目的,则必须在glossaries
包之前加载它。此处与此包一起使用的选项是 ( nonumberlist
) 删除词汇表每个条目后的页码,以及 ( nomain
) 删除主词汇表文件(如果您不想拥有包含所有条目的主术语表,则不使用该文件)。
用于\renewcommand*{\glspostdescription}{}
在打印时删除词汇表每个条目末尾的句号。接下来是“烦人”的部分,为了给每个章节创建一个小词汇表,您需要用命令逐个定义这些词汇表\newglossary
。第一个参数是子词汇表的标签,接下来的两个参数是将创建用于存储条目的文件的扩展名,最后一个参数是将作为标题打印的子词汇表的名称(请随意重命名以符合您的喜好!)。
然后我定义了两个命令来将条目添加到词汇表中,因为处理数学名称的条目的处理有点特殊。
第一个命令\addgloss
用于常规的条目。第一个参数是键标签,第二个参数是您想要在词汇表中看到的定义。
另一个命令\addglossmath
用于数学符号。第一个参数是符号(例如\pi
),第二个参数是定义,第三个参数是标签,其中不应使用任何特殊字符(例如pi
)。
最后,我定义了第三个命令,\printglossary
用于获取当前章节的词汇表。\glsaddall
此处使用的命令允许您获取词汇表中使用前一个命令定义的条目,即使它们未与\gsl
、\Gsl
、 ... 命令中的任何一个一起使用。
如果您希望所有条目按章节排序,您只需要\printglossaries
在文档中调用您想要的位置即可。
笔记假设您的文档名为 mydoc.tex,您需要在终端中运行以下命令:
latex mydoc
makeglossaries mydoc
latex mydoc
这是为了创建所需的所有链接。
编辑根据 Nicola Talbot 的建议,加载morewrites
封装之前,glossaries
以确保不会用尽寄存器。
此外,这只是对可能情况的一个粗略想法,其输出并不令人满意(条目缺乏同质性,......),但如果您想朝那个方向努力,就可以修复。