babel、ragged2e 和 parbox 的问题

babel、ragged2e 和 parbox 的问题

我有以下代码:

\documentclass{minimal}
\usepackage[french]{babel}
\usepackage[newcommands]{ragged2e}

\begin{document}
  \begin{center}
    \parbox{9cm}{
      \textsc{
Jesus a dit~: \og Je suis le bon berger~;
 le bon berger donne sa vie pour les brebis \fg{}
      }
    }
  \end{center}
\end{document}

该段落通常会产生良好的结果,但是对于这个特定的句子,我得到了一些丑陋的结果:

ragged2e 与 babel

这种情况很少见(我还有几十个其他可以正常工作的盒子)所以我可以强制回车,但我想知道为什么会这样做......

答案1

当然,如果您激活法语的连字模式,效果会更好。这将“分割” berger。如果您删除 插入的间距命令中的可拉伸空间,也会有所帮助\og。但主要问题是 的居中命令会ragged2e更改空格跳过,但不会在 的开头重置它\parbox。这会迫使 LaTeX 尽可能拉伸唯一可用的可拉伸空间(\og 之后)。我想说这是一个错误。

\documentclass{article}

\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage[newcommands]{ragged2e}
\makeatletter
% \def\FBguill@spacing{\penalty\@M\hskip.8\fontdimen2\font}
\makeatother
\begin{document}
\parbox{9cm}{%
    \lipsum[1]\par
    \scshape
     Jesus a dit~: \og Je suis le bon berger~;
     le bon berger donne sa vie pour les brebis \fg{}
    }


\begin{center}
   \parbox{9cm}{%
   \lipsum[1]\par
    \scshape
   Jesus a dit~: \og Je suis le bon berger~;
   le bon berger donne sa vie pour les brebis \fg{}
    }
\end{center}

\makeatletter 
%correcting the spaceskips:

\begin{center}
  \parbox{9cm}{%
    \@raggedtwoe@spaceskipfalse
    \@raggedtwoe@everyselectfont
    \lipsum[1]\par
    \scshape
   Jesus a dit~: \og Je suis le bon berger~;
   le bon berger donne sa vie pour les brebis \fg{}
    }
\end{center}

\end{document}

相关内容