我遇到的问题nomencl
是,每次使用新符号时,我都必须\nomenclature
手动调用该包。例如以下代码
\documentclass{article}
\usepackage{xspace,ifthen}
\usepackage[intoc]{nomencl}
\renewcommand{\nomname}{List of Notations}
\renewcommand*{\pagedeclaration}[1]{\dotfill\hyperpage{#1}}
\renewcommand{\nomgroup}[1]{%
\ifthenelse{\equal{#1}{R}}{\item[\textbf{Roman Symbols}]}{%
\ifthenelse{\equal{#1}{G}}{\item[\textbf{Greek Symbols}]}{%
\ifthenelse{\equal{#1}{P}}{\item[\textbf{Superscripts}]}{%
\ifthenelse{\equal{#1}{B}}{\item[\textbf{Subscripts}]}{%
\ifthenelse{\equal{#1}{S}}{\item[\textbf{Symbols}]}{%
}}}}}}
\makenomenclature
\newcommand{\symbI}{\ensuremath{F}\xspace}
\newcommand{\symbII}{\ensuremath{M}\xspace}
\newcommand{\symbIII}{\ensuremath{\alpha}\xspace}
\newcommand{\symbIV}{\ensuremath{U}\xspace}
\begin{document}
\printnomenclature[1.5cm]
\section*{Math section}
\begin{equation}
\symbI = \symbII \symbIII
\end{equation}
\nomenclature[rsymbI ]{\symbI}{some explanation for F}
\nomenclature[rsymbII ]{\symbII}{some explanation for M}
\nomenclature[gsymbIII ]{\symbIII}{some explanation for \alpha}
\end{document}
会产生
有没有办法,比如说,一次性定义所有符号,并且只有文本中使用的符号才会出现在命名列表中?也许类似于引用。
例如是否有以下方式来生成上述命名列表?
\documentclass{article}
\usepackage{xspace}
\anicecommand{\symbI}{Roman sympbol}{\ensuremath{F}\xspace}{some explanation for $F$}
\anicecommand{\symbII}{Roman sympbol}{\ensuremath{M}\xspace}{some explanation for $M$}
\anicecommand{\symbIII}{Greek sympbol}{\ensuremath{\alpha}\xspace}{some explanation for $\alpha$}
\anicecommand{\symbIV}{Roman sympbol}{\ensuremath{U}\xspace}{some explanation for $U$}
\begin{document}
\printnomenclature[1.5cm]
\section*{Math section}
\begin{equation}
\symbI = \symbII \symbIII
\end{equation}
\end{document}
答案1
我不知道如何使用该nomencl
包来实现这一点,但使用以下方法很容易实现glossaries
:
代码:
\documentclass{article}
\usepackage{xspace}
\usepackage[acronym,nonumberlist]{glossaries}
\renewcommand{\acronymname}{List of Notations}
\newglossarystyle{mystyle}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{0.1\hsize}p{0.8\hsize}}}%
{\end{longtable}}%
\renewcommand*{\glsgroupheading}[1]{%
\multicolumn{2}{@{}l}{\bfseries\glsgetgrouptitle{##1}}\\[5pt]}%
}
\newcommand*{\Rgroupname}{Roman Symbols}
\newcommand*{\Ggroupname}{Greek Symbols}
\newcommand*{\myacro}[4][sort=s]{%
\newacronym[#1]{#2}{#3}{#4}%
\global\expandafter\def\csname #2\endcsname{\acrshort{#2}}%
}
\myacro[sort=ra]{symbI}{\ensuremath{F}\xspace}{some explanation for $F$}
\myacro[sort=rb]{symbII}{\ensuremath{M}\xspace}{some explanation for $M$}
\myacro[sort=ga]{symbIII}{\ensuremath{\alpha}\xspace}{some explanation for $\alpha$}
\myacro[sort=rc]{symbIV}{\ensuremath{U}\xspace}{some explanation for $u$}
\makeglossaries
\begin{document}
\printglossary[style=mystyle,type=\acronymtype]
\section*{Math section}
\begin{equation}
\symbI = \symbII \symbIII
\end{equation}
\end{document}
我定义了一个新的词汇表样式mystyle
,它模拟了 的输出nomencl
并在 中使用它\printglossary
。
注意新命令
\newcommand*{\Rgroupname}{Roman Symbols}
\newcommand*{\Ggroupname}{Greek Symbols}
用于定义子标题。可能你必须定义
\newcommand*{\Pgroupname}{Superscripts}
\newcommand*{\Bgroupname}{Subscripts}
\newcommand*{\Sgroupname}{Symbols}
还要注意符号的定义,例如:
\myacro[sort=ra]{symbI}{\ensuremath{F}\xspace}{some explanation for $F$}
sort=ra
需要将符号插入“罗马符号”列表(r
)并将其排为列表中的第一个符号(a
)。
什么时候