是否有一个包可以在输出中对嵌套表达式使用不同的颜色?

是否有一个包可以在输出中对嵌套表达式使用不同的颜色?

假设我有一个包含许多嵌套表达式的表达式$(\sin(x-3(z^{(x-2)^2}))+1)^2$。为了在输出中更好地可视化它(并帮助在校对时找到缺失的分隔符),我希望嵌套表达式及其分隔符以与周围不同的颜色显示。是否有用于此目的的软件包?

答案1

我不知道有任何软件包可以做到这一点。一个相对简单的方法是将(和重新定义)为命令序列,以保持级别计数并相应地更改颜色。看起来就像这样:

\documentclass{article}

\usepackage{xcolor}

\makeatletter
\let\dotlessi\i
\catcode`(=\active
\catcode`)=\active
\newcounter{nestlvl}
\setcounter{nestlvl}{1}
\newcounter{temp}
\newcommand{\colorlst}{black,blue,red,green,yellow,brown}
\def({%
  \setcounter{temp}{0}%
  \addtocounter{nestlvl}{1}%
  \@for\i:=\colorlst\do{%
    \stepcounter{temp}%
    \ifnum\arabic{temp}<\arabic{nestlvl}%
      \color{\i}%
    \fi%
  }%
  \char`(%
}
\def){%
  \setcounter{temp}{0}%
  \addtocounter{nestlvl}{-1}%
  \ifnum\arabic{nestlvl}<0%
    \message{nesting error}%
  \fi%
  \char`)%
  \@for\i:=\colorlst\do{%
    \stepcounter{temp}%
    \ifnum\arabic{temp}<\arabic{nestlvl}%
      \color{\i}%
    \fi%
  }%
}
\let\i\dotlessi
\makeatother
\begin{document}
  (test(multi(levels)colors)like this)
\end{document}

这种方式指定的颜色数量是有限的,我现在想不出更优雅的方法。也许有人能建议如何更好地选择颜色。

结果:

嵌套着色

你的例子:

嵌套颜色示例

请注意,指数的颜色与它们所在的括号组相同,这可能不是您真正想要的。需要一些额外的代码来解决这个问题。我觉得它看起来很糟糕,但这主要是因为我的颜色选择不当。

相关内容