多章节博士论文使用LaTeX nomencl包生成全局符号表问题
LaTeX nomencl包无法生成全局符号列表解决方案
问题核心原因排查
- 缺失
\printnomenclature命令
你提供的代码中没有在文档中插入符号列表的输出命令,自然不会生成对应内容。该命令需要放在你想展示符号列表的位置,通常放在致谢之后、正文之前的前置部分。 - 编译流程不完整
nomencl包依赖额外的索引生成步骤,普通的两次pdfLaTeX编译无法生成符号表,必须执行完整编译流程。
具体解决步骤
步骤1:补充代码配置
在你的文档中补充\printnomenclature命令,同时可根据需要调整符号列表的标题、缩进等参数,修改后的核心代码结构如下:
\documentclass[a4paper,12pt,twoside]{report} \usepackage[left=3cm,right=2.5cm,top=2cm,bottom=2.5cm]{geometry} \usepackage{multirow} \include{thesis.preamble} % 注意如果preamble里已经引入过nomencl就不要重复引入 \usepackage{nomencl} \makenomenclature % 可选配置:修改符号列表标题为中文 \renewcommand{\nomname}{符号说明} % 可选配置:调整符号列宽度,避免长符号超出边界 \setlength{\nomlabelwidth}{1.5cm} \begin{document} % ------------------------------------------- % [-] 标题页 % ------------------------------------------- \title{title of the study} \normallinespacing \maketitle \preface \input{prefaces/abstract} \input{prefaces/acknowledgements} % 在这里插入符号列表输出命令 \printnomenclature % ------------------------------------------- % [-] 正文 % ------------------------------------------- \body % [-] 引言 \input{body/chapter1} % 中间其他章节 % [-] 结论 \input{body/chapter8} \end{document}
步骤2:执行完整编译流程
假设你的主tex文件名为main.tex,按以下顺序执行命令:
- 第一次编译生成索引源文件:
pdflatex main.tex - 调用makeindex生成符号表目标文件:
makeindex main.nlo -s nomencl.ist -o main.nls - 第二次编译插入符号表:
pdflatex main.tex - (可选)如果存在交叉引用异常可再编译一次pdflatex
如果你用的是TeXstudio、TeX Live等可视化编辑器,可在编辑器设置里添加自定义编译命令,或者直接用终端/命令行执行上述指令。
备选方案:用glossaries包实现
如果你的preamble里已经引入了glossaries包,或者想要更灵活的符号分组、排序功能,可以直接用glossaries替代nomencl,配置更简单,无需额外记忆makeindex参数,示例配置如下:
% 导言区配置 \usepackage{glossaries} \makeglossaries % 定义符号 \newglossaryentry{m}{name=$m$, description={质量 (kg)}} % 正文里引用符号用\gls{m},在需要输出符号列表的位置添加以下命令 \printglossary[title=符号说明]
编译流程为pdflatex -> makeglossaries -> pdflatex,主流编辑器一般都内置了makeglossaries快捷命令。
内容的提问来源于stack exchange,提问作者gungordu
相关产品推荐
相关产品推荐

