
我最近遇到了這個問題,主要語言是希伯來語,第二種語言是英語,當我在多語種中使用 \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
。由於背面使用舊版本的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}