这是我的第一个问题,如果我做错了什么,请告诉我!
更新polyglossia
到版本后v1.46
(从 2019/11/15 开始)似乎与memoir
版本发生冲突2019/11/15 v3.7i
。我正在使用 LuaTeX 版本 1.10.0。
编辑:只是为了澄清,它曾经起作用(memoir: 2018/12/12 v3.7h
和polyglossia v1.45
)。
我正在使用memoir
内置系统来处理页眉和页脚中的内容。但是,更新后,对(或对)\sffamily
没有影响。但是其他字体命令(如或)可以工作。页码不受影响,并且可以按预期工作。\leftmark
\rightmark
\bfseries
\color{red}
在我逐一删除序言中的内容后,罪魁祸首竟然是polyglossia
。标记中的文本设置为标准字体,而不是 sans 字体(尽管如预期的那样为红色)。但是,如果我注释掉这两polyglossia
行,一切都会按预期运行。
梅威瑟:
\documentclass[12pt,twoside,a4paper]{memoir}
% THIS SEEMS TO BE THE ISSUE
\usepackage{polyglossia}
\setdefaultlanguage{english}
% Pagestyle
\usepackage{xcolor}
\newcommand{\headerfontX}{\color{red}\sffamily}
\makepagestyle{jtest}
\makeevenhead{jtest}{\headerfontX\leftmark}{}{}
\makeevenfoot{jtest}{}{\headerfontX\thepage{} of \thelastpage}{}
\makeatletter
\makepsmarks {jtest}{
\createmark{chapter}{both}{nonumber}{}{}
}
\makeatother
\nouppercaseheads
\pagestyle{jtest}
% Dummy text
\usepackage{lipsum}
\begin{document}
\chapter{The Title of the Chapter}
\lipsum
\end{document}
以下是编译的结果(左边是有polyglossia
,右边没有):
编辑:这是编译完全相同的 MWE 的结果(即和 polyglossia
) 旧版本 (左) 和新版本 (右):
因此更新之前它可以按预期工作。
为什么是多语影响字体完全没有标记?为什么可以\bfseries
工作,但不能\sffamily
?
memoir
这是and/or新版本中的错误吗polyglossia
?
谢谢!
(附注:可以采取一种变通方法。删除并改为通过修复字体\createmark{chapter}...
重新定义章节标记。如果标记已编号,则可以通过在中添加字体作为前缀来修复。)\renewcommand\chaptermarksn[1]{\headerfontX}
\leftmark
\createmark
更新:这与 无关。正如评论中memoir
指出的那样,如果使用该类,也会出现此错误。daleif
book
答案1
polyglossia
\foreignlanguage
使用时重置字体系列:
\documentclass[12pt,twoside,a4paper]{memoir}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\usepackage{xcolor}
\begin{document}
{\color{red}\sffamily Abc \foreignlanguage{english}{Abc}}
\end{document}
正如polyglossia
用这样的内容包围标题,\foreignlanguage
您就得到了输出。
有了babel
它,工作正常:
\documentclass[12pt,twoside,a4paper]{memoir}
\usepackage[english]{babel}
\usepackage{xcolor}
\begin{document}
{\color{red}\sffamily Abc \foreignlanguage{english}{Abc}}
\end{document}
答案2
已确认这是polyglossia v1.46
另一次修复的一个副作用,是一个错误。
看https://github.com/reutenauer/polyglossia/issues/355。
解决方法 1
如果只需要章节标题。则替换
\makeatletter
\makepsmarks {jtest}{
\createmark{chapter}{both}{nonumber}{}{}
}
\makeatother
经过
\renewcommand\chaptermarksn[1]{\headerfontX}
解决方法 2
如果章节号包含在页眉中。现在,只需使用标记memoir
并添加字体命令作为前缀即可完成:
\makeatletter
\makepsmarks {jtest}{
\createmark{chapter}{both}{shownumber}{\headerfontX}{:~}
}
\makeatother
这当然也适用于其他编号标记。
解决方法 3
正如@UlrikeFischer 所建议的,使用babel
而不是polyglossia
。