5 再提一个关于段落文本高亮显示的问题(利用xeCJKfntef宏包实现效果)

发布于 2022-04-15 18:12:29

各位大佬,我有下列代码

\documentclass[fontset=windows]{ctexart}
\usepackage{xeCJKfntef}
\usepackage{xcolor}
\newcommand{\hl}[1]{\CJKunderanyline*{0.5ex}{\color{yellow}\rule{0.1pt}{2.5ex}}{#1}}
\begin{document}
一般地,设$A$,$B$是两个非空数集,\hl{如果按某种对应关系~$f$,对于集合~$A$中的任意一
个数~$x$,在集合~$B$中都有唯一的数~$f(x)$和它对应},那么就称$f$为集合$A$到集
合$B$的一个函数,记作
\[\mbox{\hl{$y=f(x),x\in A.$}}\]
\end{document}

3dcedf604c35135a54ad8c38f323a5a.jpg
现发现2个问题,(1)行内数学公式$的左侧需要加一个~,否则报错;(2)行间数学公式需要加\mbox,否则报错,这样行间公式就要嵌套$$,不太方便。请大佬解决一下这两个问题,让段落文本输入更加自然。另:对于复杂的、比较高的公式,不需要全部覆盖颜色。

查看更多

关注者
0
被浏览
237
雾月
雾月 2022-04-15

(1)这可能是一个 bug,见:https://github.com/CTeX-org/ctex-kit/issues/530,目前未解决。
(2)容易解决,但同样无法用于 amsmath 的某些环境,而且颜色的高度固定为普通文字那么高。

\documentclass[fontset=windows]{ctexart}
\usepackage{ulem}
\usepackage{xeCJKfntef}
\usepackage{xcolor}
\makeatletter
\newcommand{\hltext}[1]{\CJKunderanyline*{0.5ex}{\color{yellow}\rule{0.1pt}{2.5ex}}{#1}}
\newcommand\hlmath[1]{\mathpalette{\hlmath@aux}{#1}}
\def\hlmath@aux#1#2{\hbox{\hltext{\m@th$#1#2$}}}
\newcommand*\hl{\ifmmode\expandafter\hlmath\else\expandafter\hltext\fi}
\makeatother
\begin{document}
一般地,设$A$,$B$是两个非空数集,\hl{如果按某种对应关系{ }$f$,对于集合~$A$中的任意一
个数~$x$,在集合~$B$中都有唯一的数~$\displaystyle\int f(x)$和它对应},那么就称$f$为集合$A$到集
合$B$的一个函数,记作
\[ \hl{y=\int f(x),x\in A.}\quad f_{\hl{x}} \]
\end{document}

image.png

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览