假设我有一个包含许多嵌套表达式的表达式$(\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}
这种方式指定的颜色数量是有限的,我现在想不出更优雅的方法。也许有人能建议如何更好地选择颜色。
结果:
你的例子:
请注意,指数的颜色与它们所在的括号组相同,这可能不是您真正想要的。需要一些额外的代码来解决这个问题。我觉得它看起来很糟糕,但这主要是因为我的颜色选择不当。