\vref 和输入命令

\vref 和输入命令

您在某些情况下拯救了我的生命,我正在撰写我的硕士论文,当我使用 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 丢失标签

简而言之,如果您按此顺序加载variorefhyperref和包cleveref,您应该能够正常使用\vref而不会出现其他问题。

相关内容