如何改变运算符(lim、log等)的颜色?

如何改变运算符(lim、log等)的颜色?

如何更改“log”、“lim”等运算符或\sqrt命令的根符号的颜色?

答案1

你可以利用原始的\mathop

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor,amsmath}
\DeclareMathOperator{\abc}{abc}

\let\oldmathop\mathop
\def\mathop#1{\oldmathop{\textcolor{red}{#1}}}
\let\oldsurd\surd
\def\surd{\textcolor{red}{\oldsurd}}

\begin{document}
\[
  \abc d \quad
  \sin \theta \quad
  \log_e \quad
  \lim_{x \rightarrow 0} \quad
  \int_a^b \quad
  \sqrt[n]{} \quad
  \surd
\]

\end{document}

但上述内容尚未经过彻底测试......

答案2

这是一种可能性;我不会侵入\mathop,这是一种在其他几种情况下也使用的原语(\overset例如)。

\documentclass{article}
\usepackage{xcolor,amsmath,xpatch,letltxmacro}
\DeclareMathOperator{\abc}{abc}

\xpatchcmd{\qopname}{#3}{\textcolor{red}{#3}}{}{}
\LetLtxMacro\latexsqrt\sqrt
\RenewDocumentCommand{\sqrt}{om}{%
  \colorlet{current}{.}
  \IfNoValueTF{#1}
    {\textcolor{red}{\latexsqrt{\textcolor{current}{#2}}}}%
    {\textcolor{red}{\latexsqrt[#1]{\textcolor{current}{#2}}}}%
}


\begin{document}
\[
  \abc d \quad
  \sin \theta \quad
  \log_e \quad
  \lim_{x \rightarrow 0} \quad
  \int_a^b \quad
  \sqrt{2} \quad
  \sqrt[3]{x+1}
\]

\end{document}

在此处输入图片描述

重新定义的\sqrt命令也适用于\leftroot\uproot

变体着色不同的各种运算符,也用于定义新的运算符以具有颜色。作为第一个参数给出的命令\colorizeoperator应该已经定义\lim类型的运算符。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}

\newcommand{\colorizeoperator}[2]{%
  % #1 = operator, #2 = color
  \begingroup\def\qopname##1##2##3{%
    \xdef#1{%
      \noexpand\qopname
      \unexpanded{##1}%
      ##2%
      {\begingroup\noexpand\color{#2}##3\endgroup}%
    }%
  }%
  #1%
  \endgroup
}
\makeatletter
\newcommand{\DeclareColoredMathOperator}{%
  \@ifstar
    {\def\DCMO@@{\DeclareMathOperator*}\DCMO@}
    {\def\@DCMO{\DeclareMathOperator}\DCMO@}%
}
\newcommand\DCMO@[3]{%
  % #1 = operator, #2 = name, #3 = color
  \DCMO@@{#1}{\begingroup\color{#3}#2\endgroup}%
}
\makeatother

\colorizeoperator{\lim}{blue}
\colorizeoperator{\sin}{red!60}
\DeclareColoredMathOperator*{\argmin}{arg\,min}{green}
\DeclareColoredMathOperator{\tors}{tors}{green!20!blue}

\begin{document}
\[
\lim_{x\to0}x=\sin0-\argmin_x 0+\tors
\]
\end{document}

在此处输入图片描述

答案3

FWIW,在 ConTeXt 中,你可以使用以下方法更改运算符的颜色

\setupmathematics[functioncolor=red]

\sqrt并改变使用的颜色

\setupmathradical[color=blue]

这是一个简单的例子:

\setupmathematics[functioncolor=red]
\setupmathradical[color=blue]

\starttext
\startformula
\sqrt{\log\left( \frac{ \sin x } { \cos x } \right)}
\stopformula
\stoptext

这使

在此处输入图片描述

这只会影响操作员,因此在后台使用的命令(例如、等)\stackrel将继续按预期工作。\underset\mathop

答案4

Unicode 引擎的优势luatex在于xetex,颜色被视为字体本身的属性,而不是添加在字体之上。

允许unicode-math加载具有特定颜色规范的 Unicode 数学字体。在这里,我们首先Latin Modern Math为整个数学模式加载,然后继续Latin Modern Math为范围内的字形加载\mathop,并\sqrt采用颜色规范red。运算符字体类似。

正如您在输出中看到的,部首的水平线不是红色。这是因为该线不是数学符号,而是\vrule,它甚至不是符号。

\documentclass{article}
\usepackage{mathtools,unicode-math,xcolor}

\setmathfont{Latin Modern Math}
\setmathfont{Latin Modern Math}[range={\mathop,\sqrt}, Color=red]
\setmathfontface\mathlm{Latin Modern Math}[Color=red]
\setoperatorfont\mathlm

\DeclareMathOperator{\abc}{abc}
\begin{document}
\[
  \abc d \quad
  \sin \theta \quad
  \log_e \quad
  \lim_{x \rightarrow 0} \quad
  \int_a^b \quad
  \sqrt{2} \quad
  \sqrt[3]{x+1}
\]
\end{document}

在此处输入图片描述

相关内容