我正在写一篇包含许多类似符号的博士论文。因此,我想在命名法中列出每个符号最初使用的章节编号(因此在文本中定义)。我知道您可以列出页码,但我更喜欢章节编号。有办法吗?
这是我目前定义章节编号的最小示例,尽管这需要我手动检查每个引用是否正确:
\documentclass{report}
\usepackage{nomencl}
\makenomenclature
\begin{document}
\printnomenclature
\chapter{Structural Analysis} \label{sec:Structural Analysis}
\section{Sectional Properties} \label{sec:Sectional Properties}
The cross-sectional area is defined as
\begin{equation} \label{eqn:Cross-sectional area}
A = \int_{S} \: dS
\end{equation}
\nomenclature{$A$}{cross-sectional area, m$^{2}$ (\ref{sec:Sectional Properties})}
\nomenclature{$S$}{arbitrary surface (\ref{sec:Sectional Properties})}
\end{document}
我尝试使用它\thesection
作为参考,但正如预期的那样,这个值是在创建命名法时计算的,而不是在的位置\nomenclature
。
我想应该有一种方法可以通过编程来做到这一点,但还没有找到解决方案。
答案1
您可以利用在发出命令时已知部分编号这一事实\nomenclature
。
以下是使用新命令执行此操作的方法:
% arara: pdflatex
% arara: nomencl
% arara: pdflatex
% arara: pdflatex
\documentclass{report}
\usepackage{nomencl}
\makenomenclature
\newcommand{\mynomencl}[3][section]{%
\begingroup\edef\x{\endgroup
\unexpanded{\nomenclature{#2}}%
{\unexpanded{#3} (\csname the#1\endcsname)}}\x}
\begin{document}
\printnomenclature
\chapter{Structural Analysis} \label{sec:Structural Analysis}
\section{Sectional Properties} \label{sec:Sectional Properties}
The cross-sectional area is defined as
\begin{equation} \label{eqn:Cross-sectional area}
A = \int_{S} \, dS
\end{equation}
\mynomencl{$A$}{cross-sectional area, m$^{2}$}
\mynomencl{$S$}{arbitrary surface}
\chapter{Structural Analysis} \label{sec:Structural Analysis2}
\section{Sectional Properties} \label{sec:Sectional Properties2}
The cross-sectional area is defined as
\begin{equation} \label{eqn:Cross-sectional area2}
A = \int_{S} \, dS
\end{equation}
\mynomencl[chapter]{$A2$}{cross-sectional area, m$^{2}$}
\mynomencl{$S2$}{arbitrary surface}
\end{document}
该\mynomencl
命令有一个可选参数,用于指定条目应引用的部分单位(默认section
)。
它是如何工作的?命令\mynomencl
存储在\x
命令中\nomenclature{...}{... (<number>)}
,除了最后一部分(数字)之外不扩展任何内容。然后它执行 \x
(使其也从记忆中消失)。
初始注释用于arara
加速编译,无需记住生成命名法的命令行。它们当然是可选的。