LaTeX Hyperref包失效:引用出现大量(?,?)问题求助
解决Hyperref包导致引用显示(?,?)及编译错误的问题
核心问题分析
- 重复加载包引发冲突:代码中多次重复加载同一包(如
graphicx、longtable、footmisc),不同选项会干扰包的正常工作逻辑,破坏Hyperref的引用机制。 - Hyperref加载位置错误:Hyperref需放在所有其他包之后加载(少数例外如
cleveref需在其后),过早加载会与其他包的命令冲突,导致引用失效。 - 编译流程不完整:LaTeX引用依赖标签文件生成,仅单次编译无法读取标签,必然显示(?,?)。
具体修复步骤
1. 清理重复加载的包
删除重复声明,合并冲突选项:
- 移除重复的
\usepackage{graphicx}(保留首次加载即可,无需指定pdftex驱动,LaTeX会自动适配) - 移除重复的
\usepackage{longtable} - 合并
footmisc选项为\usepackage[splitrule, bottom]{footmisc},避免两次加载
2. 调整Hyperref加载顺序
将Hyperref相关代码移至所有包的最后,修复后的包加载部分如下:
\documentclass[12pt]{article} \usepackage[a4paper, top=30mm, bottom=30mm, left=27.5mm, right=27.5mm]{geometry} \linespread{1.25} \usepackage[splitrule, bottom]{footmisc} \interfootnotelinepenalty=10000 %% Completely prevent breaking of footnotes \usepackage{graphicx} \usepackage{float} \usepackage{multirow} \usepackage{booktabs} \usepackage{derivative} \usepackage{amsmath} \usepackage{array} \DeclareMathOperator*{\argmin}{arg\,min} \usepackage{breqn} \usepackage{apacite} \usepackage{rotating} \usepackage{longtable} \usepackage{subfig} \usepackage{euscript} \usepackage{bm} \usepackage{amssymb} \usepackage{relsize} \usepackage{lscape} \usepackage{threeparttable} \usepackage{caption} \usepackage{fancyhdr} % Hyperref放在最后加载 \usepackage[unicode, colorlinks, linkcolor=black]{hyperref} \definecolor{linkcolor}{HTML}{000000} \definecolor{urlcolor}{HTML}{000000} \hypersetup{pdfstartview=FitH, linkcolor=linkcolor, urlcolor=urlcolor, colorlinks=true} \pagenumbering{roman} \begin{document}
3. 执行完整编译流程
- 普通引用:按
LaTeX → LaTeX顺序编译,第一次生成标签文件,第二次替换为正确引用编号 - 文献引用(配合apacite):按
LaTeX → BibTeX → LaTeX → LaTeX顺序编译,确保文献引用正常解析
4. 额外细节修正
- 将
linkcolor=Black改为小写black,LaTeX颜色名称通常使用小写格式 - 检查所有
\label与\ref命令的匹配性,确保标签名称无拼写错误
内容的提问来源于stack exchange,提问作者Rasmus Brandt Sørensen
相关产品推荐
相关产品推荐

