如何将我正在使用的报告中的章节命名法更改为节命名法
\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}
答案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}
答案3
我自己也想回答这个问题,而且 Gonzalo 和 Karlkoeller 提出的答案确实都有效。但是,我不喜欢两者都会修改命名法的外观。所以我想出了以下解决方案:将命名法“手动”添加到目录中,而不是使用选项而不是使用 [intoc]。
\usepackage{nomencl}
\makenomenclature
\renewcommand{\nomname}{List of Symbols}
\begin{document}
\printnomenclature
\addcontentsline{toc}{section}{\nomname}
\end{document}
这将使命名法保持如下外观:
我更喜欢这个选项,以使格式与我拥有的其他列表(例如图形/表格等)保持一致。这也适用于词汇表:不要使用 [section] 选项,而是“手动”执行,例如:
\printglossary[title=List of Acronyms,type=\acronymtype]
\addcontentsline{toc}{section}{List of Acronyms}