使用 Polyglossia 时,外部法语环境中的拉丁语文本前会出现不需要的空格。当外部环境语言为英语时,不会发生这种情况。
在我的示例中,使用 进行编译时xelatex
,法语环境中的第一行看起来不错,因为没有使用任何语言命令。第二行和第三行在单词动词。
如何去掉不需要的空格?有规范的解决方案吗?还是我在这里错误地使用了 Polyglossia?
梅威瑟:
\documentclass[12pt]{article}
% Use polyglossia for many languages.
\usepackage{polyglossia}
\setdefaultlanguage{latin}
\setotherlanguage{french}
% Create a command to show Latin words in italics.
\newcommand{\lat}[1]{\textlatin{\textit{#1}}}
\begin{document}
Latine hic. Etiam pars Gallica sequitur:
\begin{french}
% This looks OK.
En français ici. Mais \textit{verbum} en latin!
% The word verbum has extra white space before it.
En français ici. Mais \textlatin{\textit{verbum}} en latin!
% The word verbum has extra white space before it.
En français ici. Mais \lat{verbum} en latin!
\end{french}
\end{document}
答案1
您正在运行过时的 TeX 发行版,其中文件gloss-french.ldf
在第 438 行末尾有一个虚假空格(没有%
可以屏蔽行尾的内容)。很可能是 TeX Live 2020 或更早版本。
此问题已在 2021 年 4 月 13 日左右发布的版本中得到修复(请参阅变化)。
您可以在等待更新 TeX 发行版时自行修复它。要么复制工作目录中的文件(您可以在日志文件中找到位置)并修复缺失部分,%
要么鼓起勇气编辑已分发的文件(没有真正的风险,如果您使用 TeX Live,该文件将不再更新)。
\def\nofrench@capsformat{%
% Reset chapter and part heading
\ifcsdef{titleformat}{%
% With titlesec
\ifcsdef{xpg@save@part@format}{%
\ifcsdef{H@old@part}{\let\@H@old@part\xpg@save@part@format}{\let\@part\xpg@save@part@format}
}{}%
应该成为
\def\nofrench@capsformat{%
% Reset chapter and part heading
\ifcsdef{titleformat}{%
% With titlesec
\ifcsdef{xpg@save@part@format}{%
\ifcsdef{H@old@part}{\let\@H@old@part\xpg@save@part@format}{\let\@part\xpg@save@part@format}% <---- WAS MISSING
}{}%