可变大小的“这样”管道

可变大小的“这样”管道

我正在寻找一个可以自动改变高度的管道符号。

在数学中,写“这样”的常用方法之一是使用管道符号 (|)。管道符号可以在 LaTeX 中直接表示为字符 | 或\vert,但这两种方式在数学演示模式下都不会垂直扩展。我可以通过以下方式手动调整它:

\[\mathcal{H}=\left\lbrace h(x)=\sum_{i=0}^{k-1}a_{i}x_{i}\mod m\ \Bigg\vert
     \ a_{i}\in\mathbb{Z}_{m^{k}}\right\rbrace\]

使用 \Bigg\vert

但我正在寻找一个真正的可变大小选项,与之平行等等\lbrace

amsmath包提供了\lvert\rvert,但我发现它们并没有按预期扩展,并且文档amsmath指定它们应该用作二进制分隔符(一个在其他东西的每一侧),而不是单独使用。

答案1

您可以使用braket包装这种东西。

\documentclass{article}
\usepackage{braket}
\usepackage{amsmath}
\usepackage{bbold}
\begin{document}

\[
\mathcal{H}=\Set{ h(x)=\sum_{i=0}^{k-1}a_{i}x_{i}\mod m\ |
     \ a_{i}\in\mathbb{Z}_{m^{k}}}
\]

\end{document}

它定义了一个\Set宏,该宏会自动将其内容放在可变大小的括号中,并且其中符号的任何实例|都会相应调整。此解决方案还具有使源代码更具语义的优势。

代码输出

答案2

您还可以使用\middlewhich 和\leftand \right

\[
\mathcal{H}=\left\{ h(x)=\sum_{i=0}^{k-1}a_{i}x_{i}\mod m\ \middle|\ 
     a_{i}\in\mathbb{Z}_{m^{k}}\right\}
\]

这可以节省您使用\left.\right.不必要的时间。

答案3

您可以使用\left| stuff \right.或,\left. stuff \right|具体取决于您想要的位置|以及它应该从哪里获取其大小。例如:

\[
  \left.\sum_{i \in I} x_i \right| x_i > 2
\]

从总和中获取大小。(是的,我知道这是一个愚蠢的例子)。而

\[
  \sum_{i \in I} x_i \left| x_i > 2 \right.
\]

占用的大小x_i > 2

我看到你添加了一个例子,它将变成:

\[
  \mathcal{H}=\left\lbrace h(x)=\left.\sum_{i=0}^{k-1}a_{i}x_{i}\mod m\ \right|\ a_{i}\in\mathbb{Z}_{m^{k}}\right\rbrace
\]

结果是:

在此处输入图片描述

答案4

这是我的解决方案,其语法更接近数学意义

\usepackage{mathtools}
\providecommand\given{} % is redefined in \Set
\newcommand\SetSymbol[1][]{\nonscript\:#1\vert \allowbreak\nonscript\:\mathopen{}}
\DeclarePairedDelimiterX\Set[1]{\{}{\}}{
  \renewcommand\given{\SetSymbol[\delimsize]}
  #1
}

现在我们可以简单地使用

\Set{ x\in A \given x^2 > 1 }

更接近数学意义。

对于原始发帖者,我会使用

\Set[\Big]{ h(x)=\sum_{i=0}^{k-1}a_{i}x_{i}\mod m \given  a_{i}\in\mathbb{Z}_{m^{k}} }

因为没有理由过度攀爬围栏。

我使用单独的\SetSymbol宏,因为存在非常复杂的集合构造,其中不能使用\Set(如在\{\}在单独的行上),因此在这种情况下可能希望能够引用给定的集合符号,以防万一以后想要更改符号。

更新:2015 年 3 月,添加\mathopen{}\allowbreak

相关内容