1. 为什么不能将 hebrew 作为选项传递给 babel? 2. \babelprovide 的 import 选项是必需的吗? 3. 为什么 \babelprovide 的 main 选项是必需的?

1. 为什么不能将 hebrew 作为选项传递给 babel? 2. \babelprovide 的 import 选项是必需的吗? 3. 为什么 \babelprovide 的 main 选项是必需的?

以下问题仅是出于好奇,而非任何实际问题。


第1部分

以下 LaTeX 代码可以使用 成功编译lualatex

\documentclass{article}
\usepackage[french]{babel}
\begin{document}
Hello, world!
\end{document}

同样,以下 LaTeX 代码也可以成功编译lualatex

\documentclass{article}
\usepackage[bidi=basic]{babel}
\babelprovide[main,import]{hebrew}
\begin{document}
Hello, world!
\end{document}

french但是,如果在第一个示例中用hebrew或替换bidi=basic,hebrew,编译将失败,并显示以下错误消息:

To avoid this error message,
run TeX--XeT or e-TeX engine instead of regular TeX.

! Right-to-Left Support Error: use TeX--XeT or e-TeX engine.
l.63      engine}
               %
? 
! Emergency stop.
l.63 
   
End of file on the terminal!
  1. 为什么不能直接传递babel选项hebrew,或者同时传递bidi=basic

第2部分

babel我被建议遵循使用+设置希伯来语文档的示例在其序言中luatex包含以下行,例如:\babelprovide[main,import]{hebrew}

\documentclass{article}
\usepackage[bidi=basic]{babel}
\babelprovide[main,import]{hebrew}
\begin{document}
Hello, world!
\end{document}
  1. 这个import选项是必须的吗?如果删除了,会有什么不同吗?

  2. 我确实注意到该main选项是必需的:如果没有它,文档的默认方向性将从左到右。但是,如果仅hebrew指定为语言,为什么会出现这种情况,这意味着这是一份单语希伯来语文档,因此其方向性应该是从右到左?

答案1

正如 Javier Bezos 在他对我原帖的评论,可以将希伯来语指定为babel包的一个选项,而不是\babeprovide命令的一个参数,并且\babelprovide可以消除命令及其mainimport选项,代价是将一个选项传递给包babel,即provide=*。将所有这些放在一起,而不是

\usepackage[bidi=basic]{babel}
\babelprovide[main,import]{hebrew}

也可以等价地写成

\usepackage[bidi=basic,hebrew,provide=*]{babel}

注意:我认为如果有另一个选项会很好babel,比如说heb,或Hebrew(首字母大写),可以缩写上面显示的三个选项,这样就hebrew可以通过书写来加载必要/推荐的设置,比如说,\usepackage[heb]{babel}类似于加载法语等欧洲语言的方式。

相关内容