Cleveref 熟悉命名法吗?

Cleveref 熟悉命名法吗?

我正在编写一个booknomencl在末尾使用来打印符号列表。我该如何引用这个列表?在本书的介绍中,我想写一些类似“我们使用的所有符号都可以在中找到”的内容,其中 LaTeX 应该用命名列表的名称\cref{...}替换,即用。\cref{...}\nomrefname

使用intoc选项或\addcontentsline命令,我设法在目录中获取符号列表的条目,但是当我在\label{SectionNomenclature}我的之前或之后放置类似的内容\printnomenclature并尝试时\cref{SectionNomenclature},我会引用符号列表之前的最后一章。:(

梅威瑟:

\documentclass[a4paper,oneside]{book}

\usepackage[refpage,intoc]{nomencl}     %nomenclature
\usepackage[pdftex]{hyperref}       %hyperlink references
\usepackage[capitalize]{cleveref}   %automatic clever references


\makenomenclature

\nomenclature[N]{$\mathbb{N}$}{the natural numbers $\N=\{0,1,2, \ldots \}$}

\begin{document}


\tableofcontents

\part{Introduction}

\chapter{Overview}

\section{Blabla}

All the symbols used can be found in \cref{SectNomenclature}.

\printnomenclature

\label{SectNomenclature}


\end{document}

答案1

由于您已经在加载hyperref,您可以修补\thenomenclature使用\phantomsection(生成锚点)并添加\label;由于您有兴趣获取部分单元的标题,请使用\nameref

\documentclass[a4paper,oneside]{book}
\usepackage[refpage,intoc]{nomencl}
\usepackage{etoolbox}
\usepackage{hyperref}
\usepackage[capitalize]{cleveref}

\patchcmd{\thenomenclature}
  {\chapter*{\nomname}}
  {\phantomsection\chapter*{\nomname}\label{SectNomenclature}}
  {}
  {}

\makenomenclature

\nomenclature[N]{$\mathbb{N}$}{the natural numbers $\N=\{0,1,2, \ldots \}$}

\begin{document}

\tableofcontents

\part{Introduction}
\chapter{Overview}
\section{Test section}

All the symbols used can be found in~\nameref{SectNomenclature}.

\printnomenclature

\end{document}

在此处输入图片描述

无需将pdftex选项传递给hyperref;正确的驱动程序将被自动检测。

答案2

基于 Gonzalo Medina 的回答,您可以\cref通过引入一个新的计数器并在命名法部分的开头重新步进它来使命令起作用。

\documentclass[a4paper,oneside]{book}
\usepackage[refpage,intoc,notocbasic]{nomencl}
\usepackage{amssymb}
\usepackage{etoolbox}
\usepackage{hyperref}
\usepackage[capitalize]{cleveref}

\newcounter{nomencl}
\crefformat{nomencl}{#2Nomenclature#3}

\patchcmd{\thenomenclature}
  {\chapter*{\nomname}}
  {\clearpage\refstepcounter{nomencl}\chapter*{\nomname}\label{SectNomenclature}}
  {}
  {}

\makenomenclature

\newcommand{\N}{\mathbb N}

\nomenclature[N]{$\mathbb{N}$}{the natural numbers $\N=\{0,1,2, \ldots \}$}

\begin{document}

\tableofcontents

\part{Introduction}
\chapter{Overview}
\section{Test section}

All the symbols used can be found in~\cref{SectNomenclature}.

\printnomenclature

\end{document}

notocbasic在最近的版本中需要该选项才能实现此功能。

相关内容