1. 问题定位:IEEE模板里那条“多余”的下划线到底是什么
第一次碰到这个问题的场景我印象很深:赶一篇会议投稿,用IEEE官方给的LaTeX模板排版,正文、图表、公式全都正常,偏偏编译出来的PDF里,参考文献区域的每一条引用条目下方都拖着一条细细的下划线,有时候连正文里\cite{}生成的方括号编号下面也带一条。打印预览里看着像排版错误,投稿系统上传后审稿人一眼就能看到,观感非常差。
这个现象在IEEEtran模板用户里出现频率相当高,尤其是从别的模板(比如ACM、Springer或者学校自制的学位论文模板)迁移过来的作者。核心关键词就是IEEE格式 LaTeX模板、citation下划线、reference下划线、hyperref、ulem、soul。它不是一个“模板bug”,而是几个宏包叠加之后产生的副作用,绝大多数情况下跟hyperref宏包以及它加载的soul/ulem这类下划线支持包有关。
先把结论摆在前面:这条下划线通常不是IEEEtran模板本身画的,而是超链接宏包在“链接边框”和“下划线样式”之间切换时留下的痕迹,或者是某些模板为了做“可点击链接”而主动给引用加了装饰。你要做的是判断它来自哪一层,然后精准地把它关掉,而不是粗暴地删宏包——删错了会导致交叉引用全挂。
适合谁来读这篇:正在用IEEEtran(会议版conference或期刊版journal)写稿、被参考文献下划线困扰、又不想把整个排版搞崩的作者。哪怕你刚接触LaTeX不久,只要跟着下面的排查顺序走,基本都能定位到问题源头。
2. 先搞清楚IEEEtran的引用是怎么“长”出来的
2.1 从\cite到 PDF 里那条线的完整链路
要解决问题,得先知道一条引用在编译过程中经历了什么。你在正文写\cite{key},LaTeX 的处理链条大致是这样的:
- 第一次编译时,
\cite把key写进.aux辅助文件; - BibTeX(或 BibLaTeX)读取
.bib数据库,按样式文件(IEEEtran 对应IEEEtran.bst)生成.bbl; - 第二次编译时,
\cite从.aux里拿到编号,输出[1]这样的文本; - 如果加载了
hyperref,这个[1]会被包成一个超链接,指向文末的参考文献条目; - 超链接的“外观”由
hyperref的hidelinks、colorlinks、pdfborder等选项决定——下划线就是外观的一种。
所以那条线本质上是“超链接的视觉样式”。IEEEtran 官方模板在较新版本里默认推荐hidelinks(即链接不可见、无边框无颜色),但很多作者从旧模板、二手模板或者自己拼的导言区里继承了colorlinks=true加linkcolor的配置,甚至有人手动加载了soul或ulem来做“链接下划线”,线就这么出来了。
2.2 为什么偏偏是IEEE模板容易中招
这里有个容易被忽略的点:IEEEtran 的参考文献样式(IEEEtran.bst)会把每条文献的标题、作者、期刊名排得非常紧凑,条目之间没有额外留白。一旦某条引用被加上下划线,视觉上会紧贴文字基线,看起来就像“整段参考文献被划了线”,比在其他宽松模板里更刺眼。
另外,IEEE 会议和期刊模板对hyperref的加载顺序有隐含要求。hyperref是个“霸道”的宏包,它必须在绝大多数其他宏包之后加载,否则会劫持\cite、\ref等命令的定义。很多作者把hyperref放在导言区靠前的位置,或者和natbib、cite宏包的加载顺序搞反,就会触发一些奇怪的外观问题,下划线只是其中最常见的一种。
提示:判断下划线来源有个土办法——在导言区临时注释掉
\usepackage{hyperref}重新编译。如果线消失了,问题就在超链接层;如果线还在,那多半是模板或某个样式文件主动用ulem/soul画的,排查方向要换。
2.3 三种典型“下划线来源”的快速辨别
我把实际遇到的情况归成三类,你可以对照自己的导言区快速对号入座:
| 来源类型 | 典型特征 | 导言区线索 | 处理方向 |
|---|---|---|---|
| hyperref 链接边框 | 线是矩形框的一部分,四边都有,只是上下边明显 | \usepackage{hyperref}无hidelinks | 加hidelinks或pdfborder={0 0 0} |
| colorlinks + 下划线样式 | 线只在文字下方,颜色与链接色一致 | colorlinks=true且配了linkcolor | 改hidelinks或去掉下划线选项 |
| ulem/soul 主动装饰 | 线紧贴文字,随文字换行断开 | 导言区有\usepackage{ulem}或\usepackage{soul} | 找到调用\ul/\uline的位置移除 |
这张表建议你截图存着,下次再遇到类似“引用带线”“参考文献带框”的问题,先按表排查,比盲目搜帖子快得多。
3. 核心修复方案:按场景给出可直接抄的配置
3.1 方案一:hidelinks一劳永逸(推荐首选)
如果你的目标只是“让线消失、链接仍然可点”,最干净的做法是给hyperref加hidelinks选项。它等价于同时设置colorlinks=false和pdfborder={0 0 0},链接在 PDF 里完全不可见,但点击跳转功能保留。
\usepackage[hidelinks]{hyperref}如果你已经在用带选项的写法,改成这样:
\usepackage[colorlinks=false, pdfborder={0 0 0}, bookmarks=true]{hyperref}这里解释一下pdfborder={0 0 0}的三个数字:它们分别控制链接边框的水平、垂直、线宽(单位是 PDF 点,1pt ≈ 0.35mm)。三个都设 0,边框就彻底不画了。很多人只写pdfborder={0 0 0}却忘了colorlinks=false,结果链接文字还是带颜色,观感依旧不“IEEE”,所以两个要一起配。
注意:
hidelinks是hyperref较新版本才提供的便捷选项。如果你的 TeX 发行版比较老(比如五年前的版本),可能不认这个选项,那就退回用colorlinks=false, pdfborder={0 0 0}的完整写法,效果完全一致。
3.2 方案二:保留彩色链接但去掉下划线
有些作者希望正文里的引用编号是彩色的(方便自己校对时快速定位),只是不想要下划线。这时候关键是不要用linktoc相关的下划线选项,并且确认没有加载soul的\ul装饰。
\usepackage[colorlinks=true, linkcolor=black, citecolor=black, urlcolor=blue, pdfborder={0 0 0}]{hyperref}把linkcolor和citecolor都设成black,视觉上跟纯黑文字几乎无差别,但链接依然可点。urlcolor保留蓝色是为了让网址可辨识——这是 IEEE 模板里少数允许“有颜色”的地方,因为网址本身需要区分。
实测下来,这套配置在 IEEEtran 会议版和期刊版上都能稳定工作,编译日志里不会冒出hyperref的警告。唯一要留意的是:如果你同时用了xcolor宏包并自定义了颜色名,确保linkcolor引用的颜色名在hyperref加载前已经定义,否则会报 “Undefined color”。
3.3 方案三:模板里被硬编码了下划线,怎么拔掉
少数情况下,你拿到的模板(尤其是某些实验室传承下来的“祖传模板”)在.cls或.sty文件里直接写了类似\newcommand{\mycite}[1]{\ul{\cite{#1}}}的东西,或者重定义了\cite命令并套了下划线。这种线用hidelinks是去不掉的,因为它是文本装饰而非链接边框。
排查方法:在项目目录里全局搜索\ul、\uline、\underline、soul、ulem这几个关键词。找到调用点后,有两种处理:
- 如果是模板作者为了“强调引用”而加的,直接删掉那层包装,恢复成裸
\cite; - 如果不敢动模板文件(怕影响其他部分),就在导言区用
\renewcommand覆盖掉那个自定义命令,把它重定义成不带下划线的版本。
% 假设模板定义了 \mycite 带下划线,这里覆盖回普通引用 \renewcommand{\mycite}[1]{\cite{#1}}覆盖之前务必确认原命令的参数个数和用法,别把带可选参数的版本覆盖坏了。稳妥起见,先在副本上改、编译验证,再合并回主文件。
3.4 方案四:BibTeX 样式层面的“伪下划线”
还有一种极其隐蔽的情况:某些非官方的.bst样式文件会在格式化文献条目时,给标题或期刊名套上\underline,目的是模拟“期刊名斜体/下划线”的旧排版习惯。这种线出现在参考文献列表内部,跟正文引用无关,hidelinks自然管不着。
判断特征:线只出现在参考文献条目的某几个字段上(比如期刊名),而不是整条引用。处理方式是换回官方IEEEtran.bst,或者打开.bst搜索underline把它改成emph(斜体),后者更符合现代排版规范。
% 在导言区指定官方样式,避免使用来路不明的 .bst \bibliographystyle{IEEEtran}4. 实操全流程:从复现到验证的完整走一遍
4.1 最小复现环境搭建
排查这类问题,最忌讳在几万字的大稿子里瞎改。我的习惯是先搭一个最小复现工程,把问题“关”进一个小盒子里。新建一个目录,放三个文件:
% main.tex —— 最小复现文件 \documentclass[conference]{IEEEtran} \usepackage{cite} \usepackage{hyperref} % 故意不加 hidelinks,复现问题 \begin{document} \title{Minimal Reproduction} \maketitle \section{Intro} This is a citation test~\cite{ref1}. \bibliographystyle{IEEEtran} \bibliography{refs} \end{document}% refs.bib @article{ref1, author = {A. Author and B. Author}, title = {A Sample Reference for Testing}, journal = {Journal of Testing}, year = {2024}, volume = {1}, number = {1}, pages = {1--10} }编译顺序必须是pdflatex → bibtex → pdflatex → pdflatex,四步缺一不可。很多人只跑一遍pdflatex就断言“引用没出来”,其实是.bbl还没生成。用这个最小工程,你能在三十秒内稳定复现下划线,然后逐项改配置验证,效率比在大稿子里试错高一个数量级。
4.2 逐项验证与参数确认
在最小工程上,按下面的顺序做对照实验,每改一项就重新完整编译一次:
- 基线:保持
\usepackage{hyperref}不变,确认下划线存在,截图存档; - 加 hidelinks:改成
\usepackage[hidelinks]{hyperref},重新编译,确认线消失且\cite仍可点击(在 PDF 阅读器里点一下[1]看是否跳到文末); - 换完整写法:改成
colorlinks=false, pdfborder={0 0 0},确认效果与上一步一致; - 回归测试:把验证通过的配置搬回主稿,完整编译,检查正文引用、图表交叉引用、目录书签是否全部正常。
这一步的“回归测试”千万别省。我见过有人在小工程里改好了,搬回主稿却因为主稿还加载了natbib或cleveref而再次出问题——宏包之间的加载顺序和选项冲突,只有在大稿子里才会暴露。
4.3 编译日志里的关键信号
hyperref出问题时,.log文件里通常有迹可循。重点搜这几类信息:
Package hyperref Warning: Option 'pdfborder' has already been used—— 说明你在两个地方重复设置了边框选项,后加载的会覆盖前面的,得统一到一处;Token not allowed in a PDF string—— 书签里出现了不支持的字符,虽然不直接导致下划线,但常和引用配置一起出现,顺手修掉;Package soul Error或ulem相关警告 —— 说明下划线装饰包被意外加载,回到第 3.3 节排查。
养成“改完必看日志”的习惯,比出了问题再回头翻要省事得多。日志里没有 warning 和 error,基本可以认为配置是干净的。
5. 常见问题与排查速查表
5.1 高频问题逐条拆解
问题一:加了hidelinks线还在。八成是hyperref被加载了两次,或者模板在\begin{document}之后又偷偷加载了一次。检查导言区有没有重复的\usepackage{hyperref},以及.cls文件里是否已经加载过。重复加载时,后一次的选项不一定生效,反而可能保留前一次的边框设置。
问题二:线没了,但引用点不动了。说明你把链接功能也一起关掉了。确认用的是hidelinks而不是draft模式,也确认没有误加\hypersetup{pdfborder={0 0 0}, colorlinks=false}之外还写了\hypersetup{linkbordercolor=white}之类的怪配置。链接可点性可以用 PDF 阅读器的“链接高亮”功能验证。
问题三:只有部分引用带线。这种“选择性下划线”通常是.bib里某几条文献的字段含特殊字符(比如下划线_未转义),导致hyperref在生成链接时行为异常。检查对应条目的url、doi字段,把_写成\_,或者用\url{}包裹。
问题四:换电脑/换编译器后线又出现了。不同 TeX 发行版(TeX Live、MiKTeX、MacTeX)自带的hyperref版本不同,默认行为可能有细微差异。把验证过的配置写死在导言区,别依赖模板的默认值,跨环境就稳了。
问题五:参考文献条目之间的间距变了。这是改hyperref选项时常见的连带效应——某些选项会影响\bibitem的垂直间距。如果发现条目挤在一起,检查是否误开了pdfborder的非零值导致行高变化,恢复{0 0 0}即可。
5.2 排查速查表
| 现象 | 最可能原因 | 快速验证 | 修复动作 |
|---|---|---|---|
| 整条引用带矩形框 | pdfborder非零 | 注释 hyperref 看是否消失 | 设pdfborder={0 0 0} |
| 文字下方细线、颜色随链接色 | colorlinks+ 下划线样式 | 看导言区 linkcolor 配置 | 改hidelinks |
| 线随换行断开、紧贴文字 | ulem/soul装饰 | 全局搜\ul | 移除装饰或覆盖命令 |
| 仅期刊名字段带线 | .bst里写了\underline | 打开 bst 搜 underline | 换官方 bst 或改\emph |
| 线时有时无 | 宏包重复加载/顺序错乱 | 看 log 里 hyperref 警告 | 统一加载位置与选项 |
提示:这张表里的“快速验证”一列是精髓——先用最小成本确认原因,再动手改,能避免 80% 的无效折腾。我早期就是不看原因直接删宏包,结果交叉引用全变成问号,返工更久。
5.3 几个容易踩的坑
第一个坑是把hyperref放到\begin{document}之后加载。这在语法上就不对,会直接报错,但有些人为了“临时关掉链接”这么干,结果编译失败还以为是别的原因。
第二个坑是用\usepackage{nohyperref}之类的野路子。网上有些帖子教人加载一个“禁用超链接”的宏包,这类包往往和 IEEEtran 不兼容,会把\cite的行为改得面目全非。老老实实用hidelinks才是正路。
第三个坑是在 Overleaf 之类的在线环境里改了配置却没重新编译。在线编辑器有时缓存旧 PDF,改完导言区要手动点一次“Recompile”并确认日志时间戳更新,否则你会对着旧结果怀疑人生。
6. 一点延伸:为什么IEEE对链接外观这么“讲究”
IEEE 的排版规范里,正文和参考文献追求的是“印刷级”的干净观感,彩色链接和边框在纸质打印时会变成灰糊糊的一团,所以官方模板倾向于隐藏链接外观。理解这一点,你就明白为什么hidelinks是“符合规范”的做法,而不是“偷懒关功能”。
顺带说个实操心得:投稿前我会把 PDF 用“打印预览”模式过一遍,专门看参考文献区域有没有残留的线、框、色块。屏幕上看不出来的浅色边框,打印时经常现原形。这个习惯帮我拦下过好几次差点交出去的排版瑕疵。
另外,如果你后续要转投其他模板(比如从会议版换期刊版),记得把hyperref的配置一起带过去重新验证。不同模板对宏包加载顺序的容忍度不一样,同一套配置在 A 模板稳如老狗,到 B 模板可能就翻车。我个人的做法是把验证过的hyperref配置单独抽成一个.sty小文件,换模板时整块引入,省得每次重新调。
最后分享一个小技巧:在导言区末尾加一行\hypersetup{hidelinks},作为“兜底保险”。即使前面某处不小心开了彩色链接,这一行也能在最后把外观压回隐藏状态。它不改变链接功能,只改外观,属于低成本高收益的防御性写法。踩过几次“模板继承来的配置互相打架”的坑之后,我现在每个 IEEE 稿子都会加上这一行。