我经常要写类似的东西
$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 个嵌套括号,则此后它将停止应用(仅使用背景颜色)。输出为: