ExPex 与 unicode-math 冲突。如何避免冲突?

ExPex 与 unicode-math 冲突。如何避免冲突?

以下代码失败:

\documentclass{article}
\usepackage{expex}
\usepackage{unicode-math}% Works without this

\begin{document}
\pex<ex>
\a<foo>\begingl
\gla  foo//
\glb  foo//
\glft foo//
\endgl
\xe
\end{document}

删除后,unicode-math它就可以正常工作了。我unicode-math只需要在数学模式下使用 OpenType 字体。除了unicode-math对此有用的包之外,我没有找到任何其他包。有没有我错过的可用替代方案?我可以用unicode-math一些技巧来忽略有问题的命令吗?请注意,我使用的是 LuaLaTeX 和完全更新的 TeX Live。

答案1

egreg 的回答中概述的基本问题是unicode-math定义一个\gla命令,并且此分配在文档开头完成。\glaExPex 中的命令是在glstyle设置 时定义的,因此只需使用 重置样式即可\AtBeginDocument

\documentclass{article}
\usepackage{expex}
\usepackage{unicode-math}% Works without this
\AtBeginDocument{\lingset{glstyle=wrap}}
\begin{document}

\pex<ex>
\a<foo>\begingl
\gla  foo//
\glb  foo//
\glft foo//
\endgl
\xe
\end{document}

代码输出

答案2

unicode-math定义\gla为给出 U+2AA5 GREATER-THAN BESIDE LESS-THAN ⪥

如果你不需要该字形,你可以保存它的定义并在适当的时候恢复它

\documentclass{article}
\usepackage{expex}

\NewCommandCopy{\expexgla}{\gla}

\usepackage{unicode-math}

\AtBeginDocument{\RenewCommandCopy{\gla}{\expexgla}}

\begin{document}

\pex<ex>
\a<foo>
\begingl
\gla  foo//
\glb  foo//
\glft foo//
\endgl
\xe

\end{document}

线索就是信息

! Missing character: There is no ⪥ (U+2AA5) in font [lmroman10-regular]:mapping=tex-text;.

以及相应的行unicode-math-table.tex

\UnicodeMathSymbol{"02AA5}{\gla                      }{\mathrel}{greater-than beside less-than}%

在此处输入图片描述

正如 Alan Munn 在评论中指出的那样,人们可以放弃\NewCommandCopy并做

\documentclass{article}
\usepackage{expex}
\usepackage{unicode-math}

\makeatletter
\AtBeginDocument{\RenewCommandCopy{\gla}{\glw@gla}}
\makeatother

\begin{document}

\pex<ex>
\a<foo>
\begingl
\gla  foo//
\glb  foo//
\glft foo//
\endgl
\xe

\end{document}

\makeatletter也可以省去\makeatother

\AtBeginDocument{\ExpandArgs{cc}\RenewCommandCopy{gla}{glw@gla}}

注意:在 中expex.tex找不到\gla定义为 的地方\glw@gla。这很好地隐藏在

\definelabeltype{alpha}{labelgen=char,pexcnt=`a,labelformat=A.,
   fullrefformat=XA,labelalign=left,labelwidth=.72em}

相关内容