我有一个文档,其中有多种语言的引文,包括法语,因此我们通过 加载多种语言babel
。但是,即使法语不是活动语言,如果caption
加载了包,它仍然会影响标题设置。
梅威瑟:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[french,english]{babel}
\usepackage{caption}
\begin{document}
\begin{figure}
\centering
fsdf
\caption{d}
\end{figure}
\end{document}
输出,注意--
而不是预期的colon
分隔符。
这该怪谁?babel
或caption
?(这样我就可以发送错误报告)
(顺便说一句:TeXLIve 2017 Freeze 和 TeXLive 2018 的结果相同)
答案1
罪魁祸首是caption
;caption3.sty
我们发现
\caption@ifundefined\FB@makecaption{}{%
\caption@CheckCommand\@makecaption{%
% frenchb.ldf [2005/02/06 v1.6g French support from the babel system]
% frenchb.ldf [2007/10/05 v2.0e French support from the babel system]
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1\CaptionSeparator #2}%
\ifdim \wd\@tempboxa >\hsize
#1\CaptionSeparator #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}}
\ifx\@makecaption\STD@makecaption
\DeclareCaptionLabelSeparator{default}{\CaptionSeparator}
\def\caption@frenchb{% supress frenchb warning
\let\STD@makecaption\@makecaption
\let\FB@makecaption\@makecaption}
\else
\ifx\@makecaption\@undefined\else
\caption@InfoNoLine{%
The definition of \protect\@makecaption\space
has been changed,\MessageBreak
frenchb will NOT customize it}%
\fi
\fi
}
这实际上推翻了文献babel-french
(第 1.2.3 节)中的说法:
当法语不是主要语言时,冒号在包括法语在内的所有语言中都保留[...]。
确实,如果我尝试更改\CaptionSeparator
而不加载caption
,冒号仍然会使用。另一方面,即使不是主要语言,caption
加载时也会接受更改。french
临时解决方案:
\renewcommand{\CaptionSeparator}{: }