交叉引用未按预期工作,引用和标签的完整名称都被打印出来了?

交叉引用未按预期工作,引用和标签的完整名称都被打印出来了?

因此,当我在新机器上安装 latex + textstudio 并尝试编译旧论文时,发生了一些奇怪的事情:

当我写类似的内容时In Sec. \ref{sec:Background},由于某种原因,整个部分的名称和文本“部分。”都会被编译,而不仅仅是部分编号。

编译时会发生以下情况: enter image description here

这些是我的代码:

\section{Introduction}
\label{sec:introduction}
\input{content/intro.tex}
\section{Background}
\label{sec:Background}
\input{content/background.tex}

使用方法如下:

In Sec. \ref{sec:Background}

我正在使用以下文档类:

\documentclass[twocolumn, switch]{article}

以及以下通用软件包:

\RequirePackage[2020-02-02]{latexrelease}

%% General packages
\usepackage[utf8]{inputenc} % allow utf-8 input
\usepackage[T1]{fontenc}    % use 8-bit T1 fonts
\usepackage{xcolor}     % colors for hyperlinks
\usepackage[colorlinks = true,
            linkcolor = purple,
            urlcolor  = blue,
            citecolor = cyan,
            anchorcolor = black]{hyperref}  % Color links to references, figures, etc.
\usepackage{booktabs}       % professional-quality tables
\usepackage{nicefrac}       % compact symbols for 1/2, etc.
\usepackage{microtype}      % microtypography
\usepackage{lineno}     % Line numbers
\usepackage{float}          % Allows for figures within multicol
%\usepackage{multicol}      % Multiple columns (Method B)
\usepackage{amsmath}
\usepackage{bm} 

我正在使用 textstudio,并尝试使用 pdflatex 和 xelatex 编译器,但没有成功。为什么会发生这种情况?当我在旧电脑上编译时,没有发生这种情况,只有数字被编译,如“Sec. 2”。

这发生在我所有的用途中\ref,例如表格、图形等的引用。

編輯1

我刚刚注意到发生这种情况的原因是:\RequirePackage[2020-02-02]{latexrelease},但如果我删除它,就会发生另一个问题:

! 额外的 \endgroup 错误

那么为什么会\RequirePackage[2020-02-02]{latexrelease}导致此问题以及如何在不删除此 requirepackage 的情况下修复它?

答案1

\RequirePackage[2020-02-02]{latexrelease}允许您将 LaTeX 回滚到 2020-02-02 的状态。但这并不意味着一切都会像 2020 年那样运行,也不意味着所有软件包都会遵循。

不同之处的一个例子是钩子:\AddToHook{begindocument}在 texlive 2019 中会出现错误,但在回滚时它会被默默忽略。

对于参考命令来说,这意味着,在这样的钩子中对它们的重新定义nameref(以及)会失败。hyperref

您可以像下面这样恢复定义,但请注意,这只是此类失败的一个例子。现在使用新钩子的软件包数量越来越多,所有这些软件包在回滚时都可能表现得相当奇怪。因此,最好找出与当前 LaTeX 不兼容的软件包并将其从文档中删除。

\RequirePackage[2020-02-02]{latexrelease}
\documentclass{article}
\usepackage{hyperref}

\makeatletter
 \DeclareRobustCommand\ref{%
    \@ifstar\@refstar\T@ref
  }%
  \DeclareRobustCommand\pageref{%
    \@ifstar\@pagerefstar\T@pageref
  }%
 \makeatother

\begin{document}

\section{Background}
\label{sec:Background}

In Sec. \ref{sec:Background}
\end{document}

答案2

尝试 :

\documentclass[twocolumn, switch]{article}
\usepackage[utf8]{inputenc} % allow utf-8 input
\usepackage[T1]{fontenc}    % use 8-bit T1 fonts
\usepackage{xcolor}     % colors for hyperlinks
\usepackage[colorlinks = true,
            linkcolor = purple,
            urlcolor  = blue,
            citecolor = cyan,
            anchorcolor = black]{hyperref}  % Color links to references, figures, etc.
\usepackage{booktabs}       % professional-quality tables
\usepackage{microtype}      % microtypography
\begin{document}
\section{Introduction}\label{sec:introduction}
In Section~\ref{sec:introduction}, everything is fine.
\end{document}

看看你是否还有问题。下面这个方法很有效:

enter image description here

相关内容