希伯来语文档中公式中的边注未排版

希伯来语文档中公式中的边注未排版

通过最小工作示例描述问题

我在文件中保存了以下 LaTeX 代码~/Test.tex

\documentclass{article}
\usepackage[hmarginratio=1:4]{geometry}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\usepackage{marginnote}
\makeatletter
\newif\if@RTL  \@RTLtrue
\makeatother
\begin{document}
\[
x + y = z\marginnote{Hello, world!}
\]
\end{document}

该代码创建一个类的文档article,并调整文章左右边距的相对宽度。然后,它通过包将希伯来语设置为文档的主要语言和唯一语言babel。然后,在加载marginnote包后,它实现哈维尔·贝佐斯建议的破解方法解决此marginnote包与 管理的希伯来语文档交互时出现的问题babel。然后,在文档正文中,以显示模式写入一个方程式,其中嵌入了边注。

然后我在终端中执行了以下命令。

> cd ~
> lualatex Test
> lualatex Test

编译成功完成,没有警告~/Test.log;特别是,没有警告建议重新运行lualatex。编译的结果~/Test.pdf是创建了文件。在 PDF 查看器中打开时,文件显示如下。(我仅截取了显示的相关部分。)

无保证金说明

可以看出,该页面上没有任何边注。

问题

  1. 为何没有打印出边注?
  2. 我该怎么做才能让边注出现,同时又不放弃构成序言的元素:geometry调整边注的软件包、babel以希伯来语为主要语言的软件包以及 Javier Bezos 的 hack。(实际上,hack 是可以取消的,只要用另一种解决方案代替即可这个问题,但我更希望能够保留贝佐斯的优雅风格。)

答案1

问题 1

边注实际上已被打印出来,但是,由于边注是在数学模式中排版的,字距调整的方向(该包marginnote严重依赖该方向)与数学模式外的方向相反,这使得边注与页面的右边距齐平(由于包的计算错误,预期的字距调整应该在右侧进行)。

你可以通过将边注向左移动来观察

\documentclass{article}
\usepackage[hmarginratio=1:4]{geometry}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\usepackage{marginnote}
\makeatletter
\newif\if@RTL  \@RTLtrue
\makeatother
\begin{document}
    \[
    x + y = z\marginnote{Hello, world!}\cos (2\theta) = \cos^2 \theta - \sin^2 \theta
    \]
\end{document}

在此处输入图片描述

问题2

您可以通过进入受限水平模式(通过)退出数学模式,并恢复和\hbox的方向(在数学模式内已更改)\pardir\textdir

\documentclass{article}
\usepackage[hmarginratio=1:4,showframe]{geometry}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\usepackage{marginnote}
\makeatletter
\newif\if@RTL  \@RTLtrue
\makeatother
\begin{document}
    \[
    x + y = z\hbox{\pardir TRT \textdir TRT\marginnote{Hello, world!}}
    \]
\end{document}

在此处输入图片描述

但最好使用\hboxRfrom luabidi,它的作用基本相同,但更强大

\documentclass{article}
\usepackage[hmarginratio=1:4,showframe]{geometry}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\usepackage{marginnote}
\usepackage{luabidi}
\makeatletter
\@RTLtrue % luabidi already defines this conditional
\makeatother
\begin{document}
    \[
    x + y = z\hboxR{\marginnote{Hello, world!}}
    \]
\end{document}

相关内容