我经常需要在 TeX 中排版如下的内容:
当阅读类似上述表达式时,很难分辨哪些括号彼此匹配。我希望能够定义“(”和“)”的变体,这些变体根据嵌套级别进行不同的排版,以便更容易匹配括号。
我可以设想通过引入增加/减少某个计数器的命令(以跟踪嵌套级别)来实现这一点,然后使用计数器的当前值来选择适当的排版机制。但我的印象是,以这种方式使用计数器不是很 TeXish。最好的方法是什么?
这不是问题的核心,但生成上述摘录的代码是:
\documentclass[a4paper]{article}
\usepackage{libertine}
\begin{document}
$\textrm{subset}(\textrm{applyfn}(\textrm{inverse}(\mathbf{f}),\textrm{union2}(\mathbf{A},\mathbf{B})),\textrm{applyfn}(\textrm{union2}(\textrm{applyfn}(\textrm{inverse}(\mathbf{f}),\mathbf{A}),\textrm{inverse}(\mathbf{f})),\mathbf{B}))$
\end{document}
(
涉及用命令替换的解决方案)
就可以了。
顺便说一句,编辑器有时使用一种称为“彩虹括号”的功能来达到同样的效果;参见
我其实不想用彩色,因为颜色太鲜艳了(我也不想被迫使用彩色打印机),但想要的效果基本上是一样的。非常欢迎提出有关更微妙的颜色替代品的建议。
编辑:灰度(使用 Ryan Reich 的方法)很漂亮但无效:
下划线的数字(有点分散注意力):
下划线(容易匹配但分散注意力):
答案1
以这种方式使用计数器实际上非常 TeXish。我(像你的评论者一样)不知道哪种方案适合你,但这里是如何实现你想要的东西。只需更改内容\countlparen
并\countrparen
执行以满足你自己的需求。我承认,就目前而言看起来相当丑陋。这是一个非常简单的解决方案:它计算嵌套级别,但不区分给定级别的括号,因此您仍然需要自己进行一些解析。
\documentclass{standalone}
\newcounter{parens}
\def\countlparen{%
\addtocounter{parens}{1}\lparen\ensuremath{_{\the\value{parens}}}%
}
\def\countrparen{%
\rparen\ensuremath{_{\the\value{parens}}}\addtocounter{parens}{-1}%
}
\let\lparen(
\let\rparen)
\begingroup
\catcode`(\active
\catcode`)\active
\gdef\countparens{%
\let(\countlparen
\let)\countrparen
}
\endgroup
\newenvironment{nested parentheses}
{%
\catcode`(\active
\catcode`)\active
\countparens
\setcounter{parens}{0}%
}
{}
\begin{document}
\begin{nested parentheses}
$f(g(x)h(k(x)))$
\end{nested parentheses}
f(g(x))
\begin{nested parentheses}
f(g(x)h(k(x)))
\end{nested parentheses}
\end{document}