入力を考慮する
\documentclass{article}
\usepackage{fontspec}
\usepackage[french,main=american]{babel}
% \usepackage{fontspec}%%% Doesn't matter where you use fontspec
\begin{document}
Nothing.
\end{document}
fontspecパッケージを含む2行のどちらが有効になっているかに関係なく、警告
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
ため、間違ったテストです。このパッケージは をロードしなくなったため、テストは false を返します。したがって、もちろんをロードしていないため、警告が発行されます。xunicode
fontspec
luainputenc
が更新されて、たとえば を検索するsilence
まで、この誤った警告を取り除くために パッケージを使用できます。babel-french
\setmainfont
アップデート
2017/01/30にリリースされたバージョン3.2gでは、この問題は修正されているはずです。ファイルbabel-french
の注記には、.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
。