加工时
\documentclass{acmart}
\usepackage[french,american]{babel}
\begin{document}
Some text.
\end{document}
pdflatex
发出以下警告:
Package frenchb.ldf Warning: Please load the "caption" package
(frenchb.ldf) AFTER babel/frenchb; reported on input line 909.
首先,这不是警告。警告会指出可能出现的问题。这里没有看到任何此类信息。我们看到的是一个礼貌的命令。其次,这个命令不容易实现:caption 是在 acmart 中加载的,而\RequirePackage[french,american]{babel}
before\documentclass
不会编译。第三,上面的代码中没有package frenchb.ldf
;有包babel
。
当然,所有这些问题对于专家来说可能都太微不足道了,甚至懒得回答。但“愚蠢的用户”可能会感到很困惑。我想,这三个包(babel、caption、acmart)应该能更好地相互协调。由于这三个包的维护者都可能会读到这里,我恳请他们能否提供一个解决这个问题的好办法。参见acmart 的错误报告。
答案1
你可以避免警告,如果你使用scrlfile
babel
在 之前加载的某个包之后加载babel
,例如fontenc
:
\RequirePackage{scrlfile}
\AfterPackage!{fontenc}{\RequirePackage[french,american]{babel}}
\documentclass{acmart}
\begin{document}
Some text.
\end{document}
这里我使用,\AfterPackage!
因为它\RequirePackage
在完成的加载上下文之后执行参数中的fontenc
。
答案2
这个警告没什么恶意(尽管有点烦人)。为了安全起见,请添加适合法语的咒语,这样切换到法语就不会对布局产生任何影响。
\documentclass{acmart}
\usepackage[french,american]{babel}
\frenchsetup{StandardLayout,CustomiseFigTabCaptions=false}
\begin{document}
Some text.
\begin{figure}[htp]
Whatever
\caption{A caption}
\end{figure}
\selectlanguage{french}
\begin{figure}[htp]
Whatever
\caption{A caption}
\end{figure}
\end{document}
您还可以使警告静音:
\documentclass{acmart}
%% silence the annoying warning
\usepackage{silence}
\WarningFilter{frenchb.ldf}{Please Load}
%%
\usepackage[french,american]{babel}
\frenchsetup{StandardLayout,CustomiseFigTabCaptions=false}
\begin{document}
Some text.
\begin{figure}[htp]
Whatever
\caption{A caption}
\end{figure}
\selectlanguage{french}
\begin{figure}[htp]
Whatever
\caption{A caption}
\end{figure}
\end{document}
在我看来,班级可能会做一些更好的事情以避免烦人的警告,但这真的不是那么容易。