![lualatex:为什么 \textbar̈ 可以工作,而 \textbar̙ 却不工作?](https://linux22.com/image/431745/lualatex%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%20%5Ctextbar%CC%88%20%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%EF%BC%8C%E8%80%8C%20%5Ctextbar%CC%99%20%E5%8D%B4%E4%B8%8D%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
如果使用 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,这似乎……出乎意料