我正在尝试从 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 上也可以在本地找到,等号上方的等式引用并不在它的正上方:
奇怪的是,这似乎只发生在align
和gather
环境中。使用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 上都有效的更好的解决方案?