Babel - 法语 - 宏 \og 和 \fg 的精确定义

Babel - 法语 - 宏 \og 和 \fg 的精确定义

当法语是主要语言时,我想准确模仿 babel 所提出的引号行为\og\fg

下面的代码是错误的,我应该怎么办?

\documentclass[12pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[french]{babel, varioref} % Comment this line
                                     % test when babel
                                     % is not loaded.

\providecommand\og{{\leavevmode\raise0.25ex\hbox{$\scriptscriptstyle\ll$}}\,}

\providecommand\fg{\,{\raise0.25ex\hbox{$\scriptscriptstyle\gg$}}}


\begin{document}

\og ABCD \fg{} et \og EFGH \fg{}.

\end{document}

答案1

french.ldf软件包确实

    \def\guillemotleft{\leavevmode\raise0.25ex
                       \hbox{$\scriptscriptstyle\ll$}}
    \def\guillemotright{\raise0.25ex
                        \hbox{$\scriptscriptstyle\gg$}}

在某些时候。但这只是为了提供一些可能类似于吉耶梅当真实的东西不可用时。实际上,这甚至不会被使用,因为babel接管并

\ProvideTextCommand{\guillemotleft}{OT1}{%
  \ifmmode
    \ll
  \else
    \save@sf@q{\nobreak
      \raise.2ex\hbox{$\scriptscriptstyle\ll$}\bbl@allowhyphens}%
  \fi}
\ProvideTextCommand{\guillemotright}{OT1}{%
  \ifmmode
    \gg
  \else
    \save@sf@q{\nobreak
      \raise.2ex\hbox{$\scriptscriptstyle\gg$}\bbl@allowhyphens}%
  \fi}

这解释了为什么您的文档排版为

在此处输入图片描述

请注意,你的\providecommand指令什么也不做,因为命令定义何时babel-french使用。

在下图中,你可以比较该定义的结果和真实的 吉耶梅使用 Computer Modern 字体

在此处输入图片描述

任何文件都不应使用左侧的被盗字形来代替真正的吉耶梅. 为了排版法语你需要T1 编码字体。

无论如何,如果你想追求糟糕的排版,你应该考虑左边吉耶梅需要遵循不可或缺的空间(即不间断空格),而右吉耶梅必须先于一个。并且不可或缺的空间与 产生的细小空间不同\,。因此,如果您想在babel-french未加载且字体不是 T1 编码时提供可怕的效果,请执行以下操作。

\documentclass[12pt,a4paper]{article}

\providecommand\og{%
  \raisebox{0.25ex}{$\scriptscriptstyle\ll$}%
  ~% unbreakable space
  \ignorespaces % ignore following spaces
}
\makeatletter
\providecommand\fg{%
  \leavevmode@ifvmode
  \unskip % ignore a preceding space
  ~% non-breaking space
  \raisebox{0.25ex}{$\scriptscriptstyle\gg$}%
}
\makeatletter

\begin{document}

\og ABCD \fg{} et \og EFGH \fg{}.

\end{document}

但是,请不要这样做。

相关内容