如何更改“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}