我有一个小文件:
\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 上,而不是箭头中间
...令人惊奇的是...
- 评论多语修复标签
- 评论 biblatex 也修复了标签
- 评论 mtpro2 也修复了标签
- 在其他所有内容之前加载 xy 也可以修复此问题
这些包之间的交互有什么不正确?
使用来自 TL 2017 的 xelatex 进行处理。
答案1
如果您加载mtpro2
或subscriptcorrection
使用\enablesubscriptcorrection
,则的类别代码_
将设置为 12(“通常”为 8)。
如果您加载biblatex
和polyglossia
,biblatex
则执行某些代码(在中\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