当法语是主要语言时,我想准确模仿 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}
但是,请不要这样做。