Мемуары, babel[french] и @makecaption

Мемуары, babel[french] и @makecaption

У меня возникла проблема с пакетами memoir, babelи caption: при компиляции документа журнал возвращает предупреждение:

Package frenchb.ldf Warning: The definition of \@makecaption has been changed,
(frenchb.ldf)                frenchb will NOT customise it;
(frenchb.ldf)                reported on input line 8.

Дело в том, что французский язык babelдолжен делать :активный символ, и в результате ставить пробел перед ним и после него. Но поскольку макрос @makecaptionкаким-то образом переопределяется, пробелы теряются. Как заставить поведение для типографики вокруг :быть правильным?

Вот MWE:

\documentclass[a4paper,12pt,twoside,openright,final]{memoir}
\usepackage[T1]{fontenc}
\usepackage[english,francais]{babel}
\begin{document}

Blah blah blah (\ref{fig:Figure})

\begin{figure}
\caption{Xxxxx}
\label{fig:Figure}
\end{figure}
\end{document}

решение1

Решение 1

Мы используем тот факт, что во французской типографике двоеточию должен предшествовать и следовать обычный межсловный пробел.

\documentclass[a4paper,12pt,twoside,openright,final]{memoir}
\usepackage[T1]{fontenc}
\usepackage[english,francais]{babel}

\captiondelim{ : }

\begin{document}

Blah blah blah (\ref{fig:Figure})

\begin{figure}
\caption{Xxxxx}
\label{fig:Figure}
\end{figure}
\end{document}

Решение 2

Мы учим memoirиспользовать двоеточие, как переопределено babel; это имеет то преимущество, что оно даст обычное двоеточие, если \selectlanguage{english}выдается или мы находимся в области действия \begin{otherlanguage}{english}.

\documentclass[a4paper,12pt,twoside,openright,final]{memoir}
\usepackage[T1]{fontenc}
\usepackage[english,francais]{babel}

\AtBeginDocument{%
  \begingroup\lccode`~=`:
  \lowercase{\endgroup\captiondelim{~ }}%
}

\begin{document}

Blah blah blah (\ref{fig:Figure})

\begin{figure}
\caption{Xxxxx}
\label{fig:Figure}
\end{figure}
\end{document}

введите описание изображения здесь

Что касается предупреждения о \@makecaption, боюсь, вам придется его сохранить или использовать silenceупаковку для его удаления.

Связанный контент