为什么使用 \biggl\biggl 没有抛出错误?

为什么使用 \biggl\biggl 没有抛出错误?

我认为自己是 的恢复用户,\left...\right今天偶然发现了这个问题。我有一个\virtualparens命令,它在其参数周围放置了浅灰色括号。我可以提供可选的分隔符大小(\big\bigg等)。我注意到当我提供时\biggl没有发生错误,我不明白为什么。我认为\biggl需要成对的\biggr,但我认为这个答案(https://tex.stackexchange.com/a/295041/218142) 解释了原因。我不完全理解那里的论点,但似乎\biggl只是指示尺寸信息,并不“知道”分隔符是什么。对吗?

此外,如果有更好的方法来处理可选的大小参数,我愿意使用它。

这是我的 MWE:

% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}

\NewDocumentCommand{\virtualparens}{ O{} m }{%
  \textcolor{lightgray}{#1(}#2\textcolor{lightgray}{#1)}
}%

\begin{document}
\[
  \virtualparens[\biggl]{-G\frac{m_1 m_2}{r}}
\]
\end{document}

输出如下:

参数周围的浅灰色括号

答案1

您想l在左侧使用版本,r在右侧使用版本。我稍微修改了您的语法以实现此目的。使用两个左侧版本不会引发错误,但可能会扰乱周围材料之间的自然间距。

但是,使用这种配对方法有一个缺点...您无法自然地跨换行符分解参数,而如果他单独指定\biggl(and 则可以做到这一点\biggr)。因此,您必须权衡利弊。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}

\NewDocumentCommand{\virtualparens}{ O{} m }{%
  \textcolor{lightgray}{\csname#1l\endcsname(}#2
  \textcolor{lightgray}{\csname#1r\endcsname)}
}%

\begin{document}
\[
  \virtualparens[bigg]{-G\frac{m_1 m_2}{r}}
\]
\end{document}

答案2

我更喜欢语法阿拉 mathtools\big \Big \bigg,其中您只需使用或指定大小\Bigg。无论如何,您都应该指定构建对象的类型,因为\textcolor会隐藏它。

\NewDocumentCommand{\virtualparens}{ O{} m }{%
  \mathopen{\textcolor{lightgray}{#1(}}% opening fence
  #2% contents
  \mathclose{\textcolor{lightgray}{#1)}}% closing fence
}

这是完整的示例,并带有比较。

\documentclass[twocolumn]{article}
\usepackage{amsmath}
\usepackage{xcolor}

\NewDocumentCommand{\virtualparens}{ O{} m }{%
  \mathopen{\textcolor{lightgray}{#1(}}#2\mathclose{\textcolor{lightgray}{#1)}}%
}

%%% for comparison
\NewDocumentCommand{\wrongvirtualparens}{ O{} m }{% your definition
  \textcolor{lightgray}{#1(}#2\textcolor{lightgray}{#1)}%
}
\NewDocumentCommand{\alsowrongvirtualparens}{ O{} m }{% Steven's definition
  \textcolor{lightgray}{\csname#1l\endcsname(}#2%
  \textcolor{lightgray}{\csname#1r\endcsname)}%
}
%%%

\begin{document}

\begin{gather}
  \sin\wrongvirtualparens[\bigg]{-G\frac{m_1 m_2}{r}} \\
  \sin\alsowrongvirtualparens[bigg]{-G\frac{m_1 m_2}{r}} \\
  \sin\virtualparens[\bigg]{-G\frac{m_1 m_2}{r}} \\
  \sin\biggl(-G\frac{m_1 m_2}{r}\biggr)
\end{gather}

\end{document}

在此处输入图片描述

你看得到差别吗?

答案3

您可以将关于括号大小的决定保留给\left...\right原始值:

\def\virtualparens#1#2#3{\mathopen{}\color{lightgray}\left#1
   \color{black}#2\color{lightgray}\right#3\color{black}\mathclose{}}

$$
  \sin \virtualparens ({-G {m_1 m_2\over r}}) x
$$
compare with:
$$
  \sin \Bigl( -G {m_1 m_2\over r} \Bigr) x
$$

相关内容