将命名法从“章”更改为“节”

将命名法从“章”更改为“节”

如何将我正在使用的报告中的章节命名法更改为节命名法

\section*{Nomenclature}
\addcontentsline{toc}{section}{Nomenclature}
\renewcommand{\nomname}{}
\printnomenclature

但是我的内容中有一个没有名字的章节。

答案1

在序言中添加以下几行:

\makeatletter
\def\thenomenclature{%
  \section*{\nomname}
  \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
\nompreamble
\list{}{%
\labelwidth\nom@tempdim
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\itemsep\nomitemsep
\let\makelabel\nomlabel}}
\makeatother

原始定义始于

\def\thenomenclature{%
\@ifundefined{chapter}%
{
  \section*{\nomname}
  \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
}%
{
  \chapter*{\nomname}
  \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
}%
}

\section*这会导致在未实现章节的类中将标题排版为,如果类实现了章节,则使用 \chapter*。我建议的重新定义会覆盖此操作,强制\section*在所有情况下使用 排版标题。

完整示例:

\documentclass{report}
\usepackage[intoc]{nomencl}
\makenomenclature

\makeatletter
\def\thenomenclature{%
  \section*{\nomname}
  \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
  \nompreamble
  \list{}{%
    \labelwidth\nom@tempdim
    \leftmargin\labelwidth
    \advance\leftmargin\labelsep
    \itemsep\nomitemsep
    \let\makelabel\nomlabel}}
\makeatother

\begin{document}
\tableofcontents

\nomenclature{$a$}{The number of angels per unit area}%
\nomenclature{$N$}{The number of angels per needle point}%
\nomenclature{$A$}{The area of the needle point}%

\section{A test section}
\printnomenclature
\end{document}

enter image description here

答案2

与 Gonzalo 的回答非常相似,但是在这里我们修补了命令\thenomenclature,因此在序言中添加的代码较少。

这是您需要在序言中添加的代码:

\usepackage{etoolbox}
\makeatletter
\patchcmd{\thenomenclature}
  {\@ifundefined{chapter}}
  {\@ifundefined{relax}}
  {}
  {}
\makeatother

测试\@ifundefined{relax}肯定返回 true 所以它有效(感谢 egreg 指出这一点)。

完整代码(部分借用 Gonzalo 的答案)

\documentclass{report}
\usepackage[intoc]{nomencl}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\thenomenclature}
  {\@ifundefined{chapter}}
  {\@ifundefined{relax}}
  {}
  {}
\makeatother

\makenomenclature

\begin{document}
\tableofcontents

\nomenclature{$a$}{The number of angels per unit area}%
\nomenclature{$N$}{The number of angels per needle point}%
\nomenclature{$A$}{The area of the needle point}%

\section{A test section}
\printnomenclature
\end{document} 

enter image description here

答案3

我自己也想回答这个问题,而且 Gonzalo 和 Karlkoeller 提出的答案确实都有效。但是,我不喜欢两者都会修改命名法的外观。所以我想出了以下解决方案:将命名法“手动”添加到目录中,而不是使用选项而不是使用 [intoc]。

\usepackage{nomencl}
  \makenomenclature
  \renewcommand{\nomname}{List of Symbols}

\begin{document}
\printnomenclature
\addcontentsline{toc}{section}{\nomname}
\end{document}

这将使命名法保持如下外观:

enter image description here

我更喜欢这个选项,以使格式与我拥有的其他列表(例如图形/表格等)保持一致。这也适用于词汇表:不要使用 [section] 选项,而是“手动”执行,例如:

\printglossary[title=List of Acronyms,type=\acronymtype]
\addcontentsline{toc}{section}{List of Acronyms}

相关内容