如何在希伯来语段落中嵌入英语逐字文本?

如何在希伯来语段落中嵌入英语逐字文本?

问题简要描述

如何在希伯来语段落中嵌入逐字的英语文本?

通过最小工作示例演示问题

考虑以下保存在文件中的 LaTeX 代码~/Test.tex

\documentclass{article}
\usepackage[bidi=basic,provide=*,english,hebrew]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{enumitem}
\begin{document}
א
Hello, world!

א
\foreignlanguage{english}{Hello, world!}

א
\verb|Hello, world!|

א
%\foreignlanguage{english}{\verb|Hello, world!|}
\end{document}

代码用于babel将文档的主要语言配置为希伯来语,将文档的次要语言配置为英语。然后,在文档正文中,它会打印四个希伯来语句子,其中嵌入了一个英语短语。英语短语以感叹号结尾。感叹号应被视为英语短语的一部分,因此应排版在英语短语的右侧。

当在终端中执行以下命令时:

> cd ~
> lualatex Test

文件~/Test.pdf已创建。在 PDF 查看器中打开时,显示如下。(我仅截取了显示的相关部分。)

希伯来语和英语双语文件

可以看出,第一句中的感叹号位置错误。第二句通过将英文短语(包括感叹号)包裹在命令中来纠正此问题\foreignlanguage{english}{...}。不幸的是,当英文短语是命令的参数时,同样的技巧会失效\verb。我不得不注释掉文档正文中的最后一行代码,否则文档将无法编译,并~/Test.log会包含以下消息:

! Missing } inserted.
<inserted text> 
}
l.18 \foreignlanguage{english}{\verb|Hello, world!|}
                                                  
? 
! Emergency stop.
<inserted text> 
}
l.18 \foreignlanguage{english}{\verb|Hello, world!|}
                                                  
End of file on the terminal!

所需的输出应该与第二行排版类似,​​不同之处在于,英文短语(包括感叹号)应该使用与第三行排版相同的字体进行排版。

答案1

\verb在另一个命令的参数中这样做是有问题的。在示例中,你可以\foreignlanguage使用babel环境otherlanguage

\documentclass{article}
\usepackage[bidi=basic,provide=*,english,hebrew]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{enumitem}
\begin{document}
א
Hello, world!

א
\foreignlanguage{english}{Hello, world!}

א
\verb|Hello, world!|

א
\begin{otherlanguage}{english}\verb|Hello, world!|\end{otherlanguage}
\end{document}

你好世界!

在其他情况下,\selectlanguage{english}在文本之前和\selectlanguage{hebrew}之后使用也是一种替代方法。

相关内容