以下代码失败:
\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
命令,并且此分配在文档开头完成。\gla
ExPex 中的命令是在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}