我最近遇到了这个问题,主要语言是希伯来语,第二种语言是英语,当我在 polyglossia 中使用 \textenglish{} 命令时,它不允许希伯来语部分正确呈现
例如这是乳胶
% Compile using XeLaTeX
\documentclass[a4paper]{article}
\usepackage{polyglossia}
\setmainlanguage[calendar=gregorian]{hebrew}
\setotherlanguage{english}
\newfontfamily{\hebrewfont}[Script=Hebrew]{David CLM}
\newfontfamily{\hebrewfontsf}[Script=Hebrew]{Miriam CLM}
\newfontfamily{\hebrewfonttt}[Script=Hebrew]{Miriam Mono CLM}
\newcommand{\HEBipsum}{לורם איפסום דולור סיט אמט, קונסקטורר אדיפיסינג אלית גולר מונפרר סוברט לורם שבצק יהול, לכנוץ בעריר גק ליץ, ושבעגט ליבם סולגק. בראיט ולחת צורק מונחף, בגורמי מגמש. תרבנך וסתעד לכנו סתשם השמה - לתכי מורגם בורק? לתיג ישבעס.}
\begin{document}
\section{אחד 1}
\HEBipsum
\section{שתיים 2}
\HEBipsum
\textenglish{english inline}
\HEBipsum
\section{שלוש 3}
\HEBipsum
\end{document}
这是生成的 pdf
您是否看到了希伯来语为什么无法翻译,甚至第三部分中的数字也变成了英语。
我使用 Xelatex 进行编译,但使用 Lualatex 出现同样的问题。
- 有什么解决办法吗?
答案1
该问题已报告至https://github.com/reutenauer/polyglossia/issues/603并在版本中得到修复1.65
。由于 overleaf 使用的是旧版本的polyglossia
,你可以自己“应用”补丁:
\documentclass[a4paper]{article}
\usepackage{polyglossia}
\setmainlanguage[calendar=gregorian]{hebrew}
\setotherlanguage{english}
\newfontfamily{\hebrewfont}[Script=Hebrew]{David CLM}
\newfontfamily{\hebrewfontsf}[Script=Hebrew]{Miriam CLM}
\newfontfamily{\hebrewfonttt}[Script=Hebrew]{Miriam Mono CLM}
\newcommand{\HEBipsum}{לורם איפסום דולור סיט אמט, קונסקטורר אדיפיסינג אלית גולר מונפרר סוברט לורם שבצק יהול, לכנוץ בעריר גק ליץ, ושבעגט ליבם סולגק. בראיט ולחת צורק מונחף, בגורמי מגמש. תרבנך וסתעד לכנו סתשם השמה - לתכי מורגם בורק? לתיג ישבעס.}
\ExplSyntaxOn
\makeatletter
\cs_set:Nn \__xpg_textlanguage:nnnn
{
\tl_if_blank:nTF {#3}
{
\msg_show:nnn { polyglossia } { languagenotloaded } {#2}
}{
% Store embedding language name
\global\let\xpg@save@languagename\languagename
\group_begin:
\bool_set_true:N \__xpg_inline_lang
\xpg@otherlanguage[#1]{#3}
\csuse{date#3}
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
\cs_if_exist_use:c{date@bbl@\babelname}
\polyglossia@lang@settextdirection:nn{#3}{#4}
\group_end:
% Reset the language's/script's font families if the embedding script is latin
\str_if_eq:eeT{\prop_item:Ne{\polyglossia@langsetup}{\xpg@save@languagename/lcscript}}{latin}
{\resetfontlatin}
% In case a \<lang>font is defined, re-activate that
\xpg@set@normalfont{\xpg@save@languagename}
}
}
\cs_generate_variant:Nn \__xpg_textlanguage:nnnn {nnen}
\makeatother
\ExplSyntaxOff
\begin{document}
\section{אחד 1}
\HEBipsum
\section{שתיים 2}
\HEBipsum
\textenglish{english inline}
\HEBipsum
\section{שלוש 3}
\HEBipsum
\end{document}