在数学模式中突出显示下标/上标

在数学模式中突出显示下标/上标

这是在方程模式中突出显示项

问题是,

\newcommand{\highlight}[1]{%
\colorbox{red!50}{$\displaystyle#1$}}

在中$x^{\highlight{\alpha}}$,,\alpha被异常放大,不像正常的上标。

有没有办法在数学模式中突出显示特定变量,同时保持下标和上标?

答案1

您的\highlight命令在上标中不起作用,因为(1)中的等式\colorbox不知道它应该以何种方式排版\scriptstyle,以及(2)因为\displaystyle其定义中明确告诉 TeX#1以显示样式排版(使用全尺寸字体和诸如大求和/积分符号之类的东西)。

这几乎就是该\mathpalette命令旨在解决的问题。有关\mathpalette工作原理的详细描述,请参见这里

这是一个使用 `\mathpalette 的简单重新实现。(下面可以找到改进的版本)

\documentclass{article}

\usepackage{xcolor}

\newcommand{\highlight}[1]{\mathpalette\highlightwithstyle{#1}}
\newcommand{\highlightwithstyle}[2]{\colorbox{red!50}{$#1#2$}}

\begin{document}

\[
    a^{\highlight{\alpha}} + \highlight{\sum}
\]

\end{document}

输出

现在要做的\highlight{\alpha}是扩展为\highlightwithstyle{<current math style>}{\alpha},其中<current math style>\displaystyle\textstyle或(以合适的为准\scriptstyle\scriptscriptstyle。这又变成了

\colorbox{red!50}{$\scriptstyle\alpha$}

当用于上标/下标时,

\colorbox{red!50}{$\displaystyle\alpha$}

在主显示方程式等中使用时(另外两种情况是\textstyle用于内联方程式和\scriptscriptstyle嵌套的上/下标。)


附录(改进版)

这是同一命令的另一个版本,它创建一个稍微紧凑的框,并且在大多数情况下(但不是所有情况下)不会影响方程的间距。它还允许您指定颜色。

\documentclass{article}

\usepackage{xcolor}

\newcommand{\highlight}[2][red!50]{\mathpalette{\highlightwithstyle[#1]}{#2}}
\newcommand{\highlightwithstyle}[3][red!50]{
  \begingroup                         %% <- limit scope of \box0 and \fboxsep assignment
    \sbox0{$\mathsurround 0pt #2#3$}% %% <- typeset content in box 0
    \setlength{\fboxsep}{.5pt}        %% <- set (smaller) framebox margins
    \sbox2{\hspace{-.5pt}%            %% <- create box 2, undo margin
      \colorbox{#1}{\usebox0}%        %% <- print the contents of box 0 in a \colorbox
    }%
    \dp2=\dp0 \ht2=\ht0 \wd2=\wd0     %% <- set dimensions of box 2 to match box 0
    \box2                             %% <- print box 2
  \endgroup                           %% <- revert old definitions of the boxes and \fboxsep
}

\begin{document}

\[
    a^{\highlight{\alpha}} + \highlight{\sum_{k=1}^\infty \frac{\fbox{1}}{\color{blue}k!}} + \frac{\highlight[green]{x}}{2}
\]
\[
    a^{\alpha} + \sum_{k=1}^\infty \frac{\fbox{1}}{\color{blue}k!} + \frac{x}{2}
\]

\end{document}

输出

我试图在注释中解释每行的作用,除了\mathsurround。在这里设置\mathsurround0pt不执行任何操作,但如果您的文档在内联方程式周围使用非标准间距(这种情况不太可能发生),则这很重要。

相关内容