我观察到了一些奇怪的行为,我想知道这是否是一个错误,如果是,那么是谁的错误。
polyglossia
使用XeLaTeX时,我有时会得到与使用 PDFLaTeX 或 XeLaTeX 时不同的分页符;此外,这似乎与使用 KOMA-Script 和with选项babel
有关。使用生成的 PDF 文件有更多页面。mathtools
fleqn
polyglossia
但是,至少在下面的例子中,换行符是相同的。
下面是一个编译示例
xelatex -jobname='with-babel' text.tex
xelatex -jobname='with-polyglossia' text.tex
分别生产with-polyglossia.pdf
和with-babel.pdf
使用,polyglossia
以及babel
:
% test.tex
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{etoolbox}
%% **fontspec** (LuaLaTeX, XeLaTeX)
%% -- Advanced font selection in X∃LATEX and LuaLATEX
%%
%% This package is needed for **babel**.
%%
%% NOTE: the `no-math` option is needed to avoid a strange conflicts with
%% AMS packages.
\usepackage[no-math]{fontspec}
%% NOTE: i do not know how this works, but it works
\expandafter\ifstrequal\expandafter{\jobname}{with-polyglossia}{
\usepackage{polyglossia}
\setdefaultlanguage{french}
}{
\usepackage[french]{babel}
}
%% **mathtools** (is supposed to require internally **amsmath**)
%% -- Mathematical tools to use with amsmath
\usepackage[fleqn]{mathtools}
\begin{document}
\subsection*{Propriétés algébriques}
Les opérations algébriques dans $\mathbf{K}(X)$ satisfont les propriétés
suivantes :
\begin{enumerate}
\item
pour tous $F, G, H\in \mathbf{K}(X)$,
\[
(F + G) + H = F + (G + H),
\]
\item
pour tous $F, G\in \mathbf{K}(X)$,
\[
F + G = G + F,
\]
\item
pour tout $F\in \mathbf{K}(X)$,
\[
F + 0 = 0 + F = F,
\]
\item
pour tout $F\in \mathbf{K}(X)$,
\[
F + (-F) = (-F) + F = 0,
\]
\item
pour tous $F, G, H\in \mathbf{K}(X)$,
\[
(FG)H = F(GH),
\]
\item
pour tous $F, G\in \mathbf{K}(X)$,
\[
FG = GF,
\]
\item
pour tout $F\in \mathbf{K}(X)$,
\[
F\cdot 1 = 1\cdot F = F,
\]
\item
pour tout $F\in \mathbf{K}(X)$, si $F \ne 0$, alors
\[
FF^{-1} = F^{-1}F = 1,
\]
\item
pour tous $F, G, H\in \mathbf{K}(X)$,
\[
(F + G)H = FH + GH,\qquad
F(G + H) = FG + FH.
\]
\end{enumerate}
Autrement dit, $\mathbf{K}(X)$ est un « corps commutatif ».
\subsection*{Degré d'une fraction rationnelle}
Pour toute fraction rationnelle $F = \frac{A}{B} \in \mathbf{K}(X)$, on
définit le \emph{degré\/} de $F$ par la formule :
\[
\deg F \stackrel{\text{déf}}{=} \deg A - \deg B.
\]
Comme $B \ne 0$ (donc $\deg B \in \mathbf{N}$), cette soustraction a un sens
même si $A = 0$, dans quel cas l'on trouve $\deg 0 = - \infty$.
Cependant, pour être certain que la définition a bien un sens,
il faut vérifier qu'elle ne dépend pas de l'écriture particulière
choisie pour $F$.
Supposons donc que $F = \frac{A_{1}}{B_{1}} = \frac{A_{2}}{B_{2}}$.
On a :
\begin{align*}
A_{1} B_{2} = A_{2} B_{1}
&\Rightarrow
\deg A_{1} + \deg B_{2} = \deg A_{2} + \deg B_{1} \\
&\Rightarrow
\deg A_{1} - \deg B_{1} = \deg A_{2} - \deg B_{2},
\end{align*}
car on peut soustraire $\deg B_{1} + \deg B_{2} \ne -\infty$.
Pour calculer $\deg F$, on peut donc indifféremment utiliser l'écriture
$F = \frac{A_1}{B_1}$ ou l'écriture
$F = \frac{A_2}{B_2}$.
\end{document}
这是一个可以立即获取的Makefile with-polyglossia.pdf
:with-babel.pdf
# Makefile
.DELETE_ON_ERROR:
.PHONY: all
all: babel polyglossia
.PHONY: babel
babel: with-babel.pdf
.PHONY: polyglossia
polyglossia: with-polyglossia.pdf
with-babel.pdf: test.tex
latexmk -xelatex -jobname='with-babel' '$<'
with-polyglossia.pdf: test.tex
latexmk -xelatex -jobname='with-polyglossia' '$<'
.PHONY: mostlyclean
mostlyclean:
rm -f *.log *.synctex.gz
.PHONY: clean
clean: mostlyclean
rm -f *.aux *.out *.toc *.fdb_latexmk *.fls
.PHONY: distclean
distclean: clean
rm -f with-babel.pdf with-polyglossia.pdf
答案1
我不会说法语,但是我发现::
即使您在源文件中输入之前没有空格,排版时也会带有空格:
。所以我的建议是不要在源文件中插入空格,然后检查周围的所有空格是否都在渲染的 PDF 中,它们似乎在那里。
另外,也许impnattypo
你可能会感兴趣
更新
如果您放弃polyglossia
并使用babel
XeLaTeX,并使用如下所示的前言相关部分,并使用没有前面空格的引号和冒号,您将获得几乎相同的结果:
\ifxetex
\usepackage{fontspec}
\usepackage{lmodern}
\else
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\fi
\ifxetex
%\usepackage{polyglossia}
%\setdefaultlanguage{french}
\usepackage[frenchb]{babel}
\frenchbsetup{og=\«, fg=\»}
\else
\usepackage[frenchb]{babel}
\frenchbsetup{og=\«, fg=\»}
\fi
我不确定这是否有帮助,对我来说,polyglossia
没有帮助babel
,因此结果是不同的,并且除了为其中一个填写错误报告之外,没有其他合理的方法可以解决此问题。
更新2
因此,我尝试了您的第二个 XeLaTeX 专用 MWE。我认为分页的罪魁祸首是法语babel
包裹。来自frenchb.pdf
,第 2 页,第 3 项:
一般 LATEX 列表中的垂直间距会缩短
确实,如果我更改设置,我得到的布局几乎相同。在 MWE 中,它会导致相同的分页符。
\usepackage[french]{babel}
\frenchbsetup{og=\«, fg=\», ReduceListSpacing=false}
因此,我认为polyglossia
法语列表中的垂直间距并没有减小,因此分页符是不同的。
答案2
不同之处在于你的路线
Pour toute fraction rationnelle $F = \frac{A}{B} \in \mathbf{K}(X)$, on
définit le \emph{degré\/} de $F$ par la formule :
我记得 babel 法语版~:
在结尾处进行了修改,但显然没有使用 polyglossia,因此它在:
这会使最后一部分变长,从而无法在页面上显示。
事实上,这并不是全部,更改:
为~:
会使换行符相同,但分页符仍然不同(当然,它使用不同的字体和不同的 tex 引擎,所以没有什么能保证它相同,但仍然......)
我会将此保留,以便让某人开始进行更完整的分析,但我现在已经没有时间了。