\hookrightarrow
有人能解释一下为什么当我加载法语支持时,尾部和头部之间会有间隙吗polyglossia
?我正在使用 LuaLaTeX 制作 .pdf。
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{french}
\begin{document}
\Huge $\hookrightarrow$
\end{document}
输出如下:
谢谢。
答案1
LuaTeX 用于在标点符号后插入惩罚和空格的回调应该在数学模式下被禁用,但显然并没有。
修复发布前的解决方法:
\documentclass{article}
\usepackage{ifluatex}
\usepackage{polyglossia}
\setdefaultlanguage{french}
\ifluatex
\makeatletter
\let\latex@lhook\lhook
\renewrobustcmd{\lhook}{%
\mathrel{\mathpalette\do@lhook\relax}%
}
\newcommand{\do@lhook}[2]{%
\hbox{\directlua{polyglossia.desactivate_frpt()}$\m@th#1\latex@lhook$}%
}
\makeatother
\fi
\begin{document}
$\hookrightarrow$
\end{document}
unicode-math
当然,如果使用的话,这就没有必要了。
问题在于,正如 Barbara Beeton 所暗示的(但没有抓住真正的问题),右箭头恰好占据了 ASCII 码中感叹号的位置,因此 LuaTeX 盲目地在它之前应用了惩罚和空格,就像在文本中一样。
其他与标点符号共享代码点的数学符号也可能出现同样的问题。
OML 编码涉及的字符有
\lhook
在...的位置,
\omega
在...的位置!
- 期间的位置
:
\star
在...的位置?
- 逗号,在
;
>
与其自身处于同一位置。
但是,似乎只有\lhook
和\omega
受到影响;应该对不同的字符组合进行更多测试。
在 OMS 编码中我们有
\Leftrightarrow
在...的位置,
\rightarrow
在...的位置!
\lnot
在...的位置:
\bot
在...的位置?
\emptyset
在...的位置;
\top
在...的位置>
奇怪的是,这里,,\rightarrow
和受到了影响。\lnot
\bot
\emptyset
以下是输出
X${\lhook}{\omega}{.}{\star}{,}{>}
{\Leftrightarrow}{\rightarrow}{\lnot}{\bot}{\emptyset}{\top}$X
\selectlanguage{english}
X${\lhook}{\omega}{.}{\star}{,}{>}
{\Leftrightarrow}{\rightarrow}{\lnot}{\bot}{\emptyset}{\top}$X
用于进行比较
我很害怕看到 OMX 编码会发生什么:我猜
答案2
这是根据 barbara beeton 的评论提出的一个糟糕的修复,如果有人有更好的办法......
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguage{english}
\begin{document}
\Huge \begin{english}$\hookrightarrow$\end{english}$\hookrightarrow$
\end{document}