XeLaTeX French guillemets 不间断空格最佳实践

XeLaTeX French guillemets 不间断空格最佳实践

在结束法式金手指之前获得不间断空格的最佳方法是什么»

我希望能够以自然风格输入,即法语中,在之前和之后« bonjour »使用不间断空格。如果代码足够聪明,可以原谅我偶尔使用英语风格,并为我添加忘记的空格,那就太好了。现在我得到了这个:»««bonjour»

在此处输入图片描述

我正在使用babel带有选项的包[french]。我也在使用csquotes带有[babel]选项的包。我也包含了该xspace包,相信/希望它能帮助解决空格问题。我没有承诺使用这些包或选项,尽管我相信它们很常见。panglossia如果有帮助的话,我愿意使用这个包,它在排版外语方面也很流行。对于这个特定的项目,我承诺使用XeLaTeX,但当我用编译时也存在问题PDFLaTeX。我正在编译启用了编码的法语文本UTF-8。这里我忽略了什么吗?我需要重新定义吗guillemets命令吗?我已经看到了几种方法来做到这一点,但由于它们似乎不起作用,我将它们排除在我的之外平均能量损失以免出现误导性的、不推荐使用的代码。

% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass[12pt]{article}
\usepackage[paperwidth=14cm,paperheight=20.5cm]{geometry}
\usepackage{libertine}% use this font and geometry width to reproduce bad break
\usepackage{ifxetex}
\ifxetex
  \usepackage{fontspec}
  \defaultfontfeatures{Ligatures={TeX}}
\else
  \usepackage[utf8]{inputenc}
  \usepackage[T1]{fontenc}
  \usepackage{lmodern} 
\fi
\usepackage[french]{babel}
\usepackage{xspace}
\usepackage[babel,french=guillemets]{csquotes}

\begin{document}

Je n'ai rien à dire --- mais je le dis bien : je suis un « beau parleur ».

Je n'ai rien à dire -- mais je le dis bien: je suis un «beau parleur».

Je n'ai rien à dire :  je suis un «  beau parleur  » .

Je n'ai rien à dire:je suis un «beau parleur» .

\end{document}

编辑我已经明确说明要求我直接使用 guillemets 而不是像\fg或 这样的快捷方式\og。这是因为我与将在标准文本处理器中打字的人共同编写(并且我将来回复制粘贴他们的文本几次)。

答案1

对于babel,您必须使用\frenchbsetup{og=«, fg=»}。对于polyglossia,您无需执行任何操作,除非包插入一个可破坏的空间(错误?),因此如果空间确实被破坏,您必须手动插入一个不可破坏的细空间(\,)。

% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass[12pt]{article}
\usepackage[paperwidth=14cm,paperheight=20.5cm]{geometry}
\usepackage{libertine}% use this font and geometry width to reproduce bad break
\usepackage{ifxetex}
\ifxetex
  \usepackage{fontspec}
  \defaultfontfeatures{Ligatures={TeX}}
\usepackage{polyglossia}
\setmainlanguage{french}
\else
  \usepackage[utf8]{inputenc}
  \usepackage[T1]{fontenc}
  \usepackage{lmodern}
\usepackage[french]{babel}
\frenchbsetup{og=«, fg=»}
\fi
\usepackage[french=guillemets]{csquotes}
\usepackage{xspace}

\begin{document}

Je n'ai rien à dire -- mais je le dis bien : je suis un «\,beau parleur ».

Je n'ai rien à dire -- mais je le dis bien: je suis un «beau parleur».

Je n'ai rien à dire : je suis un « beau parleur » .

Je n'ai rien à dire: je suis un «beau parleur» .

\end{document}

在此处输入图片描述

答案2

如果您想使用 csquotes,您应该使引号处于活动状态,并输入它们(包括冒号)而不带空格,因为空格可能会插入不需要的断点:

\documentclass[12pt]{article}
\usepackage[paperwidth=14cm,paperheight=20.5cm]{geometry}
\usepackage{libertine}% use this font and geometry width to reproduce bad break
\usepackage{ifxetex}
\ifxetex
  \usepackage{fontspec}
  \defaultfontfeatures{Ligatures={TeX}}
\else
  \usepackage[utf8]{inputenc}
  \usepackage[T1]{fontenc}
  \usepackage{lmodern}
\fi
\usepackage[french]{babel}
\usepackage{xspace}
\usepackage[babel,french=guillemets]{csquotes}
\MakeAutoQuote {«}{»}
\begin{document}

Je n'ai rien à dire --- mais je le dis bien: je suis un «beau parleur».

\end{document}

在此处输入图片描述

相关内容