acmart + [french]babel = 关于标题的令人困惑的警告

acmart + [french]babel = 关于标题的令人困惑的警告

加工时

\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

你可以避免警告,如果你使用scrlfilebabel在 之前加载的某个包之后加载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}

在我看来,班级可能会做一些更好的事情以避免烦人的警告,但这真的不是那么容易。

相关内容