问题简要描述
如何在希伯来语段落中嵌入逐字的英语文本?
通过最小工作示例演示问题
考虑以下保存在文件中的 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}
之后使用也是一种替代方法。