您在某些情况下拯救了我的生命,我正在撰写我的硕士论文,当我使用 MATLAB 时,我发现了一个非常有用的 MATLAB 函数,它可以将 MATLAB 图像“翻译”为 TeX tikzpicture。
我决定将图像放在一些文件夹中并使用“输入”命令调用它们,因此我把所有东西都做成这样:
\begin{figure}[H]
\centering
\input{./images/cap3/expmcwe/imax150t100.tex}
\caption{Results at time $t=100$ with $i_{max}=150$}
\label{fig:imax150t100exp}
\end{figure}
并且一切正常。
然后我尝试使用 \vref 命令调用图像,调用我写的标签(我复制粘贴以确保无误!),但它们什么也没调用。它们写了类似这样的内容:“如我们在第 79 页的图 ?? 中看到的”;页面是正确的,但没有图号!
需要明确的是:
- 我已经上传了所有必要的软件包(我还在 varioref 之前放了 hyperref)
- 我在 Mac 上使用 TeXShop
- 我读完了所有软件包的手册,但什么也没发现
- 我必须在周四将我的论文交给我的导师:)
我希望你们能给我一些建议!
谢谢大家的建议。
[编辑] 我添加更多信息:
我在 {book} 环境中写作,在这里写我的文件有点复杂,因为我有一个主文件,里面有我论文的标题,回顾了所有章节。不过,我会把文档的代码放在这里,这些代码留在 \usepackage 之后(大约有 40 个,所以我不知道把它们都放上去是否有用……
\begin{document}
\title{---}
\providecommand{\autore}{}
\providecommand{\coautore}{}
\providecommand{\cocoautore}{}
\providecommand{\principaladviser}{---}
\providecommand{\corelatore}{}
\providecommand{\secondadviser}{}
\providecommand{\annoacc}{}
\providecommand{\corso}{\uppercase{---}}
\providecommand{\nomecorso}{}
\titlep
\thispagestyle{empty}
\cleardoublepage
\thispagestyle{empty} % citazione
\begin{flushright}
\vspace*{4 cm}
\textit{---}\\
\end{flushright}
\newpage
\thispagestyle{empty}
\cleardoublepage
\thispagestyle{empty} % dedica
\begin{flushright}
% \vspace*{4 cm}
% \textit{ \\
% }\\
% []\\
% \vspace{2cm}
% \textit{}\\
% ()
\end{flushright}
\newpage
\thispagestyle{empty}
%\maketitle
\cleardoublepage
\input{abstract}
\newpage
\thispagestyle{empty}
\frontmatter
\newpage
\tableofcontents
\listoffigures
\listoftables
\lstlistoflistings
\newpage
\printnomenclature
\mainmatter
\pagestyle{fancy}
%\fancyhead[LO]{}
%\fancyhead[RE]{}
\fancyhead{}
\fancyhead[RO,LE]{\slshape \leftmark}
\fancyfoot{}
\fancyfoot[RO,LE]{\thepage}
\fancypagestyle{plain}{%
\fancyfoot{}
\fancyfoot[RO,LE]{\thepage}}
\input{introd}
\input{cap1}
\input{cap2}
\input{cap3}
% \input{cap4}
% \input{cap5}
% \input{cap6}
% \input{conclusion}
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{\bibname}
\bibliographystyle{plainnat}
\bibliography{bibliography}
\cleardoublepage
\input{acknowledgement}
\newpage
\thispagestyle{empty}
\end{document}
答案1
我认为,关键的信息是在包裹hyperref
之前加载包裹varioref
。
您所报告的问题的解决方案包括(a)加载varioref
前 hyperref
并且 (b)cleveref
在 之后也加载hyperref
。这样做的原因是,当cleveref
加载时,它会检查 是否varioref
已加载,如果答案是肯定的,则修改 的一些varioref
内部结构,以提高与 的互操作性cleveref
。(当然,要使它工作,cleveref
必须 已加载后 varioref
...)在这个过程中,varioref
也变得更加兼容——我不确定这样说是否合适充分兼容—— hyperref
。有关此事的更多信息,请参阅帖子使用 intertext 与 varioref 和 hyperref 丢失标签。
简而言之,如果您按此顺序加载varioref
、hyperref
和包cleveref
,您应该能够正常使用\vref
而不会出现其他问题。