Babel,标题 — 法国队对阵其他所有国家队

Babel,标题 — 法国队对阵其他所有国家队

我有一个文档,其中有多种语言的引文,包括法语,因此我们通过 加载多种语言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分隔符。

在此处输入图片描述

这该怪谁?babelcaption?(这样我就可以发送错误报告)

(顺便说一句:TeXLIve 2017 Freeze 和 TeXLive 2018 的结果相同)

答案1

罪魁祸首是captioncaption3.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}{: }

相关内容