列出命名列表的最佳方法是什么?

列出命名列表的最佳方法是什么?

我遇到的问题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)。

什么时候

相关内容