
我正在寫一篇有好幾章的論文,有些符號在多個章節中使用,但它們的定義因章節而異。我想在文檔的開頭有一個符號列表,但每一章的符號將由章節名稱分隔。像這樣的東西:
符號列表
chapter 1
S size
chapter 2
S area
Chapter 1
S is the radius of the cell.
Chapter 2
S is the area.
答案1
正如馬可在評論中所說,這不是好風格。您的讀者到達您的符號列表期望在字母列表中尋找特定符號。如果他們不知道該符號是在哪一章中首次定義的,則將該清單拆分為幾個每章清單會使他們的工作變得更加困難。
另外,如果您將列表分成幾個每章列表,您的讀者可能不會想到“S”在不同的章節中有不同的含義。他們可能會在第一章的清單中看到“S”是“單元半徑”,而不會費心進一步閱讀以發現它實際上在他們正在閱讀的章節中表示“區域”。
如果您確實必須在不同的章節中為“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
,以確保不會用完寄存器。
此外,這只是一個粗略的想法,什麼是可能的,輸出並不令人滿意(條目缺乏同質性,...),但如果你想朝這個方向發展,可以修復。