eqref 在本地编译时失败,但在 Overleaf 上可以运行

eqref 在本地编译时失败,但在 Overleaf 上可以运行

我正在尝试从 Overleaf 过渡到本地工作区,并使用 Latex Workshop 扩展将 VSCode 设置为我的 Latex IDE,但我遇到了一个奇怪的问题。我处理希伯来语文档,使用 babel 和 lualatex。这是我正在使用的示例:

\documentclass{article}

\PassOptionsToPackage{no-math}{fontspec}

\usepackage[bidi=basic, layout=tabular]{babel}

\babelprovide[main, import, alph=letters, Alph=letters]{hebrew}
\babelprovide[import]{english}

% Font setup
\babelfont[hebrew]{rm}[Renderer=HarfBuzz]{David CLM}
\babelfont[hebrew]{sf}[Renderer=HarfBuzz]{Miriam CLM}
\babelfont[hebrew]{tt}[Renderer=HarfBuzz]{Miriam Mono CLM}

\babelfont{david}[Renderer=HarfBuzz]{David CLM}

\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentCommand{\OverSet}{ O{0cm} m m }{
    \overset{\raise #1 \hbox{\(#2\)}}{#3}
}

\begin{document}
\begin{equation}\label{eq:pythagoras}
    a^2 + b^2 = c^2
\end{equation}
לפי משוואה
\eqref{eq:pythagoras}
נסיק כי
\begin{align*}
c^4 \OverSet[0.05cm]{\scriptstyle\eqref{eq:pythagoras}}{=} (a^2 + b^2)^2
\end{align*}
נמשיך
\end{document}

我既可以在 Overleaf 上也可以在本地找到,等号上方的等式引用并不在它的正上方:

奇怪的是,这似乎只发生在aligngather环境中。使用equation环境(或简单的\[ \])不会导致此问题。我发现将align环境包装在\babelsublr{}命令中可以解决此问题:

\babelsublr{
\begin{align*}
c^4 \OverSet[0.05cm]{\scriptstyle\eqref{eq:pythagoras}}{=} (a^2 + b^2)^2
\end{align*}}

所以看起来问题已经解决了,这是我到目前为止一直使用的解决方案。当我在本地机器上的 VSCode 中尝试相同的示例时,它没有编译,并声称找不到引用eq:pythagoras。删除babelsublr{}命令使其编译成功,但引用未居中的问题又出现了。我发现的另一个奇怪的结果是,如果我注释掉代码的其余部分(上例中的“נמשיך”行)并以这个align环境包裹在里面结束文档\babelsublr{},它会成功编译,结果是正确的。

我对此感到很困惑。我以为使用\babelsublr{}可以解决这个问题,而且它在 Overleaf 上对我来说总是有效的,但是当我在本地尝试时,除非它是文档的结尾,否则它不起作用。在我的计算机上,我使用 TexLive 2023,并使用 Latex Workshop 扩展的默认“latexmk (lualatex)”配方进行编译。

有人能解释一下为什么这在 Overleaf 上运行良好但在本地却不行,以及如何修复它吗?也许有一个比\babelsublr{}在本地和 Overleaf 上都有效的更好的解决方案?

相关内容