命令\hl{\textquotesingle{}test\textquotesingle{}}
(\hl
来自灵魂包)产生以下错误:
Cannot use \XeTeXglyph with ectt1000; not a native platform font.
\remove@tlig #1->\XeTeXglyph
我正在使用 Windows 10,并且:
This is XeTeX, Version 3.141592653-2.6-0.999993 (TeX Live 2021/W32TeX) (preloaded format=xelatex)
\write18 enabled.
不久前,这在不同的设置下确实有效。我想我当时用的是 。(不幸的是,这次我不能用pdflatex
。)xelatex
pdflatex
有什么建议么?
答案1
您需要将 soul 用于测量内容的字体更改为 unicode 字体。您可以这样做:
\documentclass{book}
\RequirePackage{soul}
\makeatletter
\setbox\z@\hbox{\ttfamily\global\let\SOUL@tt\ttfamily}
\setbox\z@\hbox{\SOUL@tt-}
\SOUL@ttwidth\wd\z@
\makeatother
\begin{document}
\hl{\textquotesingle{}test\textquotesingle{}}
\end{document}
答案2
正如 campa 在评论中指出的那样:
问题源于该soul
包无法很好地与 配合使用XeLaTeX
。软件包soul
的文档ectt1000
,它默认使用该字体,但该字体(显然)xelatex
有问题。
无法更改字体后(通过复制粘贴xesoul
包从这里并尝试了一下)我发现最简单的解决方案就是替换soul
。
前
我只用它\hl
,就像这样:
\sethlcolor{X}
% ...
\hl{Y}
后
这可以很容易地替换为\colorbox{X}{Y}
(来自彩色包)来代替。
答案3
\documentclass{book}
\RequirePackage{soul}
\makeatletter
\setbox\z@\hbox{\ttfamily\global\let\SOUL@tt\ttfamily}
\setbox\z@\hbox{\SOUL@tt-}
\SOUL@ttwidth\wd\z@
\makeatother
\begin{document}
\hl{\textquotesingle{}test\textquotesingle{}}
\end{document}
这应该可以解决问题。