我想将chaptername
from פרק
(polyglossia 的默认设置)更改为חלק
。
因为该.tex
文件是使用 LyX 创建的,并且 LyX 编辑器\usepackage{polyglossia} \setdefaultlanguage{}
在前言的末尾添加了命令,所以我需要使用钩子将此命令修补到前言的末尾。
我尝试了以下操作,但没有任何变化,我想知道原因。
\documentclass{book}
\usepackage{fontspec}
\newfontfamily\hebrewfont{Arial}[Script=Hebrew]
\AddToHook{package/polyglossia/after}{%
\gappto\captionshebrew{\renewcommand\chaptername{חלק}}
}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
%\gappto\captionshebrew{\renewcommand\chaptername{חלק}} %<- Actually works
\begin{document}
\chapter{הקדמה}
לורם איפסום דולור סיט אמט
\end{document}
答案1
添加钩子不会产生任何作用,因为在执行代码时,gloss-hebrew.ldf
尚未加载。
因此\gappto
只是定义了\captionshebrew
这样做\renewcommand
,但当gloss-hebrew.ldf
加载时,这将被取代
\def\captionshebrew{...}
正确的方法是\gappto
后加载语言。
如果你\show\captionshebrew
在 after\usepackage{polyglossia}
但 before中添加\setmainlanguage{hebrew}
,则会进入控制台
> \captionshebrew=macro:
->\renewcommand \chaptername {חלק}.
如果你还添加\show\captionshebrew
之后\setmainlanguage{hebrew}
,你会看到
> \captionshebrew=macro:
->\def \prefacename {מבוא}\def \refname {מקורות}\def \abstractname {תקציר}\def
\bibname {ביבליוגרפיה}\def \chaptername {פרק}\def \appendixname {נספח}\def \con
tentsname {תוכן העניינים}\def \listfigurename {רשימת האיורים}\def \listtablenam
e {רשימת הטבלאות}\def \indexname {מפתח}\def \figurename {איור}\def \tablename {
טבלה}\def \partname {חלק}\def \enclname {רצ"ב}\def \ccname {העתקים}\def \headto
name {אל}\def \pagename {עמוד}\def \psname {נ.ב.}\def \seename {ראה}\def \alson
ame {ראה גם}\def \proofname {הוכחה} \def \glossaryname {מילון מונחים}.
你可能会使用\AtBeginDocument
:
\documentclass{book}
\usepackage{fontspec}
\newfontfamily\hebrewfont{Arial}[Script=Hebrew]
\AtBeginDocument{\gappto\captionshebrew{\renewcommand\chaptername{חלק}}}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\begin{document}
\chapter{הקדמה}
לורם איפסום דולור סיט אמט
\end{document}