我怎样才能为 \le 的“或等于”行着色?

我怎样才能为 \le 的“或等于”行着色?

我想要一个与 完全相同的符号,\le但“或等于”行(< 下方的行)为绿色,以向读者强调(或等于)部分。也就是说,我希望新代码的大小和位置完全相同,只是颜色不同。

我只会在我的文档中使用一次这种彩色模拟,因此我更喜欢直接输入它,而不是将其存储在宏中。

我使用了下面的代码,希望得到一些可以注入颜色的东西:

\documentclass{article}
\begin{document}
$3 \show\le 5$
\end{document}

这向我展示了以下有用的输出:

\le=\mathchar"3214.

据我了解(\mathchar 使用的字符有编号列表吗?),这意味着\le本质上是由使用的数学字体定义的自己的字符。因此,我不确定如何注入颜色。

我认为绘制一个带有下线的自定义 < 并不难,但我希望除了颜色之外,还能有其他相同的东西\le

答案1

剪下顶部和底部,分别上色(上部也可以上色),然后将它们重叠\ooalign

\documentclass{article}
\usepackage{trimclip}
\usepackage{xcolor}

\makeatletter
\NewDocumentCommand{\cle}{O{green!70}O{.}}{%
  % #1 = color of the line, #2 = color of <
  \mathrel{\mathpalette\cle@{{#1}{#2}}}%
}
\NewDocumentCommand{\cle@}{mm}{\cle@@#1#2}
\NewDocumentCommand{\cle@@}{mmm}{%
  \ooalign{%
    \clipbox{0 {0.03\height} 0 0}{%
      $\m@th#1\mathcolor{#3}{\le}$%
    }\cr
    \clipbox{0 0 0 {0.97\height}}{%
      $\m@th#1\mathcolor{#2}{\le}$%
    }\cr
  }%
}
\makeatother

\begin{document}

$a \le b \cle c \cle[red!80] d \cle[green!70][blue!50] e$

$\scriptstyle a \le b \cle c \cle[red!80] d \cle[green!70][blue!50] e$

$\scriptscriptstyle a \le b \cle c \cle[red!80] d \cle[green!70][blue!50] e$

\end{document}

在此处输入图片描述

答案2

<通过将 堆叠在 之上-并调整高度来构建符号,结果与 非常相似\le,然后很容易添加颜色。高度可能不完美,但很接近。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
\newcommand*{\coloredle}{%
    \mathrel{%
        \ooalign{%
            \raisebox{1pt}{\(<\)}\cr%
            \raisebox{-3.7pt}{\color{green}\(-\)}\cr%
        }%
    }%
}
\begin{document}
\(x \le y\)

\(x \coloredle y\)
\end{document}

答案3

如果你不想加载任何包,你可以执行以下操作

\documentclass{article}
\begin{document}
    $5 \mathrel{\phantom\le\pdfliteral{q 0 0 -10 10 re W n}\llap{$\le$}\pdfliteral{Q q 0 1 0 rg 0 -3 -10 3 re W n}\llap{$\le$}\pdfliteral{Q}} 3$
\end{document}

在此处输入图片描述

请注意,此解决方案不可移植,并且取决于您使用的引擎/驱动程序。

如果您使用 XeLaTeX,请将其添加到前言中\def\pdfliteral#1{\special{pdf: literal #1}};如果您使用 LuaLaTeX,请添加\protected\def\pdfliteral{\pdfextension literal}(或使用这些原语代替\pdfliteral

相关内容