Memórias, babel[francês] e @makecaption

Memórias, babel[francês] e @makecaption

Estou tendo um problema com os memoirpacotes babel, e caption: ao compilar um documento, o log retorna o aviso:

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.

Acontece que o francês babeldeve fazer :um personagem ativo e, como resultado, colocar um espaço antes e depois dele. Mas como a @makecaptionmacro é de alguma forma redefinida, os espaços são perdidos. Como forçar o comportamento para que a tipografia ao redor :seja correta?

Aqui está um 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}

Responder1

Solução 1

Usamos o fato de que dois pontos na tipografia francesa devem ser precedidos e seguidos por um espaço normal entre palavras.

\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}

Solução 2

Ensinamos memoira usar os dois pontos conforme redefinido por babel; isso tem a vantagem de fornecer dois pontos normais se \selectlanguage{english}for emitido ou estivermos no escopo de \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}

insira a descrição da imagem aqui

Quanto ao aviso sobre \@makecaption, infelizmente você terá que mantê-lo ou usar o silencepacote para removê-lo.

informação relacionada