我正在寻找一个可以自动改变高度的管道符号。
在数学中,写“这样”的常用方法之一是使用管道符号 (|)。管道符号可以在 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\]
但我正在寻找一个真正的可变大小选项,与之平行等等\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
您还可以使用\middle
which 和\left
and \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