![使用 XeLaTeX 在 \begin{french} 环境中 Polyglossia 的 \textlatin 之前出现不需要的空格](https://linux22.com/image/443129/%E4%BD%BF%E7%94%A8%20XeLaTeX%20%E5%9C%A8%20%5Cbegin%7Bfrench%7D%20%E7%8E%AF%E5%A2%83%E4%B8%AD%20Polyglossia%20%E7%9A%84%20%5Ctextlatin%20%E4%B9%8B%E5%89%8D%E5%87%BA%E7%8E%B0%E4%B8%8D%E9%9C%80%E8%A6%81%E7%9A%84%E7%A9%BA%E6%A0%BC.png)
使用 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
}{}%