\hl 是否与 \textquotesingle 不兼容?(“无法将 \XeTeXglyph 与 ectt1000 一起使用;不是原生平台字体”)

\hl 是否与 \textquotesingle 不兼容?(“无法将 \XeTeXglyph 与 ectt1000 一起使用;不是原生平台字体”)

命令\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。)xelatexpdflatex

有什么建议么?

答案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}

这应该可以解决问题。

相关内容