考慮輸入
\documentclass{article}
\usepackage{fontspec}
\usepackage[french,main=american]{babel}
% \usepackage{fontspec}%%% Doesn't matter where you use fontspec
\begin{document}
Nothing.
\end{document}
無論啟用包含 fontspec 套件的兩行中的哪一行,都會出現警告
Package frenchb.ldf Warning: Add \usepackage{fontspec} to the
(frenchb.ldf) preamble of your document, on input line 5.
使用 xelatex 或 lualatex 編譯時會列印到日誌中。
輸出文件看起來沒問題。警告是假的嗎?
版本:
- XeTeX 3.14159265-2.6-0.99996(TeX Live 2016)
- LuaTeX 版本 0.95.0 (TeX Live 2016)
- LaTeX2e <2017/01/01> 補丁等級 1
- 通天塔 2016/04/23 3.9r
- 字體規格 2017/01/24 v2.5d
答案1
這是最近預設fontspec
停止載入的變更的結果。xunicode
中的相關代碼frenchb.ldf
是
\ifFBunicode
\ifdefined\DeclareUTFcharacter
\else
\@ifpackageloaded{luainputenc}{}%
{\PackageWarning{frenchb.ldf}%
{Add \protect\usepackage{fontspec} to the\MessageBreak
preamble of your document,}%
}%
\fi
\else
[...irrelevant part...]
\fi
\ifBunicode
當使用的引擎是 XeTeX 或 LuaTeX 時,條件為 true ;在這種情況下,如果\DeclareUTFcharacter
已定義,則不執行任何操作,假設方法fontspec
已載入。這是錯誤的測試,因為它只是檢查是否xunicode
已加載,而不是fontspec
。由於該套件不再加載它,因此測試返回 false,因此會發出警告,因為您luainputenc
當然沒有加載。
您可以使用該silence
套件來消除此虛假警告,直到babel-french
更新為查找,例如,\setmainfont
.
更新
babel-french
在2017年1月30日發布的3.2g版本中,該問題應該得到解決。在文件的註解中.dtx
我們看到
\changes{v3.2g}{2017/01/24}{fontspec defines TU encoding now and
no longer loads xunicode.sty. Test changed.}
這表明維護者已經意識到這個問題。現在測試是
\ifFBunicode
\@ifpackageloaded{fontspec}{}%
{\@ifpackageloaded{luainputenc}{}%
{\PackageWarning{frenchb.ldf}%
{Add \protect\usepackage{fontspec} to the\MessageBreak
preamble of your document, reported}%
}%
}
\else
[...irrelevant part...]
\fi
fontspec
所以專門檢查了載入。
但是,這不允許(像以前一樣)fontspec
在之後加載babel
。