邻近包之间的不良交互 - xy、polyglossia、biblatex、mtpro2

邻近包之间的不良交互 - xy、polyglossia、biblatex、mtpro2

我有一个小文件:

\documentclass{report}

\usepackage[subscriptcorrection]{mtpro2}
\RequirePackage{polyglossia} \setmainlanguage{english}
\usepackage{biblatex}
\usepackage[all,2cell]{xy} \UseAllTwocells \SilentMatrices

\begin{document}

\[
\xymatrix@R=3.5pc @C=5.5pc{
A \ar[d]_{\beta_{i}} \ar[r] & B \ar[d]\\
C \ar[r]                    & D
}
\]

\end{document}

会产生错误的图表,beta_i 会卡在 A 上,而不是箭头中间

在此处输入图片描述

...令人惊奇的是...

  1. 评论多语修复标签
  2. 评论 biblatex 也修复了标签
  3. 评论 mtpro2 也修复了标签
  4. 在其他所有内容之前加载 xy 也可以修复此问题

这些包之间的交互有什么不正确?

使用来自 TL 2017 的 xelatex 进行处理。

答案1

如果您加载mtpro2subscriptcorrection使用\enablesubscriptcorrection,则的类别代码_将设置为 12(“通常”为 8)。

如果您加载biblatexpolyglossiabiblatex则执行某些代码(在中\AtEndPreamble)来找出已加载哪些语言。polyglossia将的类别代码设置为_11,因此暂时biblatex执行相同的操作,最后它会将代码更改回 8(正常默认值)。

\gdef\blx@mkautolangpoly{%
  ...
  \catcode`\_=11% polyglossia uses "_" as a letter
  ...
  \catcode`\_=8}

但在你的文档中,catcode 需要是 12。

\AtBeginDocument{\enablesubscriptcorrection}

一切应该能够恢复正常。

由于biblatex不应该对类别代码做出任何假设,_我已经提交了一份错误报告https://github.com/plk/biblatex/issues/629

相关内容