自动为匹配的括号设置不同的颜色?

自动为匹配的括号设置不同的颜色?

我经常要写类似的东西

$left(a \left(b \left( c ... \right) \right) \right)$

而在最终的输出中,很难区分哪些括号是在一起的。

现在,在某些编辑器中,匹配的括号具有相同颜色的功能,例如“红色(蓝色(绿色(绿色)蓝色)红色)”。

这可能由 LaTeX 自动完成吗?使用 \left-\right 标记不应该匹配左括号和右括号,并且在其他编程语言中也可以轻松地构建仅以某种方式“跟踪”的颜色列表,例如在 perl 中使用 @array 的推送和弹出。

但我并不是一名优秀的 LaTeX 程序员。那么,这个功能已经存在了吗?或者它是否很容易实现?

谢谢!

答案1

这个怎么样:

\documentclass{article}
\usepackage{xcolor}
\makeatletter
\newcount\bracketnum
\newcommand\makecolorlist[1]{%
    \bracketnum0\relax
    \makecolorlist@#1,.%
    \bracketnum0\relax
}
\def\makecolorlist@#1,{%
    \advance\bracketnum1\relax
    \expandafter\def\csname bracketcolor\the\bracketnum\endcsname{\color{#1}}%
    \@ifnextchar.{\@gobble}{\makecolorlist@}%
}
\let\oldleft\left
\let\oldright\right
\def\left#1{%
    \global\advance\bracketnum1\relax 
    \colorlet{temp}{.}%
    \csname bracketcolor\the\bracketnum\endcsname
    \oldleft#1%
    \color{temp}%
}
\def\right#1{%
    \colorlet{temp}{.}%
    \csname bracketcolor\the\bracketnum\endcsname
    \oldright#1%
    \global\advance\bracketnum-1\relax
    \color{temp}%
}
\makeatother


\makecolorlist{red,blue,green}


\begin{document}
\[\left( 1 +\left(2+\left(3+4\left(\right)\right)a\right)\right)\]

\[\color{orange}\left( 1 +\left(2+\left(3+4\left(\right)\right)a\right)\right)\]
\end{document} 

您可以通过输入 来设置所需的颜色\makecolorlist{color1,color2,...,colorn}。如果您使用超过 n 个嵌套括号,则此后它将停止应用(仅使用背景颜色)。输出为:

在此处输入图片描述

相关内容