通用括号

通用括号

我知道这是一个有点奇怪的要求,但这个解决方案可以节省我很多时间。

我用 LaTex 写了很多文档(尤其是数学——这并不奇怪),我更喜欢

$\left(\right)$

很多东西都用括号括起来,因为它们实际上包含了里面的东西。例如:

$\deg\left(m_{\alpha_{1}/K}\right)$

看起来比

$\deg(m_{\alpha_{1}/K})$

在我看来。

不幸的是,每次都写 \left 和 \right 有点累。

有什么办法可以让它们全部自动完成吗?这里有一个解决方案:嵌套括号的自动大小调整但它会干扰 tikz(大概是因为它会影响括号)。

我尝试过类似的解决方案

$\newcommand{\(}{\left(}$

但 LaTeX 不喜欢这样。

答案1

使其(活跃并不是真正的解决方案,因为它有许多其他用途,但下面是实现方法。

为了在这方面提供帮助。我创建了\pactivemake (active,如果在组(如方程式)内使用,则可以(在组关闭后恢复到其正常定义。

\documentclass{article}
\let\svlp(
\catcode`(=\active %
\def(#1){\left\svlp#1\right)}
\catcode`(=12 %
\newcommand\pactive{\catcode`(=\active }
\begin{document}
\[
\pactive
\deg(m_{\alpha_{1}/K}) + (\frac{a}{x+c})
\]
Normal use of ( or even \fbox{\makebox(20,30){test}}
\end{document}

在此处输入图片描述

OP 询问是否自动调用\pactive。同样,我不推荐这样做,因为在数学模式下可能需要将集合用作()某些宏的参数。但使用

\everymath{\pactive}
\everydisplay{\pactive}

将会实现它:

\documentclass{article}
\let\svlp(
\catcode`(=\active %
\def(#1){\left\svlp#1\right)}
\catcode`(=12 %
\newcommand\pactive{\catcode`(=\active }
\everymath{\pactive}
\everydisplay{\pactive}
\begin{document}
\[
%\pactive
\deg(m_{\alpha_{1}/K}) + (\frac{a}{x+c})
\]
Normal use of ( or even \fbox{\makebox(20,30){test}}

\(
%\pactive
\deg(m_{\alpha_{1}/K}) + (\frac{a}{x+c})
\)
Normal use of ( or even \fbox{\makebox(20,30){test}}
\end{document}

在此处输入图片描述

感谢 Timm 的提醒,如果真的想实现自动化,那么应该准备好 override 宏

\newcommand\pinactive{\catcode`(=12 }

答案2

一个简单的解决方案就是使用包qty中的命令physics。这是一个 MWE:

\documentclass{article}
\usepackage{physics}
\begin{document}
With \texttt{qty}:
\[
\qty(m_{\frac\alpha\beta}) + \qty(\frac{1}{x+y}) + \qty(\int^{\infty}_{0} x^2 \dd{x})
\]

Without \texttt{qty}:
\[
(m_{\frac\alpha\beta}) + (\frac{1}{x+y}) + (\int^{\infty}_{0} x^2 \dd{x})
\]
\end{document}

有或无数量

答案3

这绝对是个坏主意,但如果你真的想得到丑陋的文件,那就来这里吧。;-)

\documentclass{article}

\newcommand{\extlparen}{\left\delimiter"4028300 }
\newcommand{\extrparen}{\right\delimiter"5029301 }
\begingroup\lccode`~=`( \lowercase{\endgroup\let~}\extlparen
\begingroup\lccode`~=`) \lowercase{\endgroup\let~}\extrparen

\AtBeginDocument{\mathcode`(="8000 \mathcode`)="8000 }

\begin{document}
\[
\deg(m_{\alpha_{1}/K})+(\sum_{i=1}^n i^2)
\]
\end{document}

在此处输入图片描述

与正确的标记相同:

\[
\deg(m_{\alpha_{1}/K})+\biggl(\,\sum_{i=1}^n i^2\biggr)
\]

在此处输入图片描述

第二种情况下的括号比第一种情况下的括号好得多。

答案4

我认为这个mathtools包完美地解决了最初的问题。你把

\DeclarePairedDelimiter\paren{\lparen}{\rparen}

\paren*{\frac12}

带星号的版本允许括号自动增长。如果你不喜欢括号的增长方式,你可以指定确切的大小

\paren[\Big]{\frac12}

这是一个完整的例子

\documentclass{article}

\usepackage{mathtools}
\DeclarePairedDelimiter{\paren}{\lparen}{\rparen}

\begin{document}
Here with the starred version of the command, the parentheses grow
automatically, the nonstarred just gives the usual parens, and in the
third version with the 'Big' option, you specify the size by hand.  

\begin{equation*}
  \paren*{\frac12} \quad \paren{\frac12} \quad \paren[\Big]{\frac12} 
\end{equation*}
\end{document}

您可以在以下位置看到输出 http://wd369.csi.hu/apu/paren.png

相关内容