如果使用 lualatex 进行编译,为什么第 b) 行可以运行,而第 d) 行却不行?
在 b) 行中,r (U+0072) 后面跟着 ̈ (U+0308)。编译时没有错误。
在 d) 行中,r (U+0072) 后面跟着 ̙ (U+0319)。这会产生%
错误(如果删除的话)“\textbar̙ … 未定义的控制序列……”
\documentclass{article}
\usepackage{fontspec}
\usepackage{dejavu-otf}
\begin{document}
a) r̙ r̈ \$̈ \$̙
b) \textbar̈
c) \textbar{}̙
d) % \textbar̙
\end{document}
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/Debian)
答案1
这似乎是软件包的一个问题,它使组合分音符 catcode12(标点符号)不能成为命令名称的一部分 dejavu-otf
unicode-math
\showthe\catcode"0308
\documentclass{article}
\usepackage{fontspec}
\showthe\catcode"0308
%\usepackage{dejavu-otf}
\showthe\catcode"0308
\begin{document}
\showthe\catcode"0308
a) r̙ r̈ \$̈ \$̙
b) \show\textbar̈
c) \textbar{}̙
d) \show\textbar̙
\end{document}
添加\catcode"0308=11
将恢复正常行为。
这似乎是unicode-math
(我会在那里提出)的一个特点
\documentclass{article}
\RequirePackage{unicode-math}
\showthe\catcode"0308
\setmathfont{TeXGyreDejaVuMath-Regular}
\showthe\catcode"0308
\begin{document}
\end{document}
只需设置数学字体即可改变文本变音符号的 catcode,这似乎……出乎意料