\middle
某些符号放在 a\left.
和 a之间时,可以使用 来自动调整大小。它们通常也可以使用或\right.
来调整大小。此类符号的示例有和以及几乎所有括号;、、、等等。我从未见过完整的符号列表,其中\big
\bigg
|
/
(
[
\{
\langle
能以这种方式调整大小。它们是否在某些方面很特别,或者是否可以创建新的可调整大小的符号?如果是可能:创建新的可调整大小符号的“正确”方法是什么?我的意思是,\mysymbol
例如
\left( \somethinghuge \middle\mysymbol b \right)
将具有“正确”的大小。当然,请记住,人们通常希望将其应用于已经存在的符号,而这些符号确实不是调整大小。\#
例如,像符号一样。
答案1
使用\scalerel
,可以让一个参数与另一个参数的垂直范围相匹配。可选参数是最大宽度约束(在本例中,我选择了 2ex)。以下是同一代码处理两个不同\somethinghuge
参数的示例。在本例中,我选择了\mysymbol
作为一个/
符号。
\documentclass{article}
\usepackage{scalerel}
\def\mysymbol{/}
\begin{document}
\def\somethinghuge{\rule[-2.2ex]{2ex}{6ex}}
$\left( \somethinghuge \scalerel*[2ex]{\mysymbol}{\somethinghuge} b \right)$
\def\somethinghuge{\rule[-3.2ex]{2ex}{8ex}}
$\left( \somethinghuge \scalerel*[2ex]{\mysymbol}{\somethinghuge} b \right)$
\end{document}
这是一个等效的语法,可以让您避免输入\somethinghuge
两次。
$\left( \scaleleftright[2ex]{.}{\somethinghuge}{\mysymbol} b \right)$
答案2
\left
可以用 调整大小的字符\middle
是\right
那些具有非零 的 的字符\delcode
。命令也是允许的,只要它们的扩展名以 开头;它们在中\delimiter
定义:\DeclareMathDelimiter
fontmath.ltx
%%% characters
\DeclareMathDelimiter{(}{\mathopen} {operators}{"28}{largesymbols}{"00}
\DeclareMathDelimiter{)}{\mathclose}{operators}{"29}{largesymbols}{"01}
\DeclareMathDelimiter{[}{\mathopen} {operators}{"5B}{largesymbols}{"02}
\DeclareMathDelimiter{]}{\mathclose}{operators}{"5D}{largesymbols}{"03}
\DeclareMathDelimiter{<}{\mathopen}{symbols}{"68}{largesymbols}{"0A}
\DeclareMathDelimiter{>}{\mathclose}{symbols}{"69}{largesymbols}{"0B}
\DeclareMathDelimiter{/}{\mathord}{operators}{"2F}{largesymbols}{"0E}
\DeclareMathSymbol{/}{\mathord}{letters}{"3D}
\DeclareMathDelimiter{|}{\mathord}{symbols}{"6A}{largesymbols}{"0C}
%%% commands
\DeclareMathDelimiter{\lmoustache} % top from (, bottom from )
{\mathopen}{largesymbols}{"7A}{largesymbols}{"40}
\DeclareMathDelimiter{\rmoustache} % top from ), bottom from (
{\mathclose}{largesymbols}{"7B}{largesymbols}{"41}
\DeclareMathDelimiter{\arrowvert} % arrow without arrowheads
{\mathord}{symbols}{"6A}{largesymbols}{"3C}
\DeclareMathDelimiter{\Arrowvert} % double arrow without arrowheads
{\mathord}{symbols}{"6B}{largesymbols}{"3D}
\DeclareMathDelimiter{\Vert}
{\mathord}{symbols}{"6B}{largesymbols}{"0D}
\let\|=\Vert
\DeclareMathDelimiter{\vert}
{\mathord}{symbols}{"6A}{largesymbols}{"0C}
\DeclareMathDelimiter{\uparrow}
{\mathrel}{symbols}{"22}{largesymbols}{"78}
\DeclareMathDelimiter{\downarrow}
{\mathrel}{symbols}{"23}{largesymbols}{"79}
\DeclareMathDelimiter{\updownarrow}
{\mathrel}{symbols}{"6C}{largesymbols}{"3F}
\DeclareMathDelimiter{\Uparrow}
{\mathrel}{symbols}{"2A}{largesymbols}{"7E}
\DeclareMathDelimiter{\Downarrow}
{\mathrel}{symbols}{"2B}{largesymbols}{"7F}
\DeclareMathDelimiter{\Updownarrow}
{\mathrel}{symbols}{"6D}{largesymbols}{"77}
\DeclareMathDelimiter{\backslash} % for double coset G\backslash H
{\mathord}{symbols}{"6E}{largesymbols}{"0F}
\DeclareMathDelimiter{\rangle}
{\mathclose}{symbols}{"69}{largesymbols}{"0B}
\DeclareMathDelimiter{\langle}
{\mathopen}{symbols}{"68}{largesymbols}{"0A}
\DeclareMathDelimiter{\rbrace}
{\mathclose}{symbols}{"67}{largesymbols}{"09}
\DeclareMathDelimiter{\lbrace}
{\mathopen}{symbols}{"66}{largesymbols}{"08}
\DeclareMathDelimiter{\rceil}
{\mathclose}{symbols}{"65}{largesymbols}{"07}
\DeclareMathDelimiter{\lceil}
{\mathopen}{symbols}{"64}{largesymbols}{"06}
\DeclareMathDelimiter{\rfloor}
{\mathclose}{symbols}{"63}{largesymbols}{"05}
\DeclareMathDelimiter{\lfloor}
{\mathopen}{symbols}{"62}{largesymbols}{"04}
\DeclareMathDelimiter{\lgroup} % extensible ( with sharper tips
{\mathopen}{largesymbols}{"3A}{largesymbols}{"3A}
\DeclareMathDelimiter{\rgroup} % extensible ) with sharper tips
{\mathclose}{largesymbols}{"3B}{largesymbols}{"3B}
\DeclareMathDelimiter{\bracevert} % the vertical bar that extends braces
{\mathord}{largesymbols}{"3E}{largesymbols}{"3E}
其他的可能由其他包定义。
为了知道某个字符是否对应于可调整大小的分隔符,请检查其\delcode
:
\showthe\delcode`(
将输出164608
。对于命令,使用\show
; 例如,\show\bracevert
将输出
\bracevert:
macro:->\delimiter "033E33E
有些分隔符可以任意调整大小,例如括号,它们由可重复的部分组成,且尺寸较大。其他分隔符,例如,则/
具有最大尺寸。