使用自定义括号

使用自定义括号

对于我的论文,我需要特定的括号来定义一些运算符。我发现\llceil,,\rrceil\llfloor\rrfloor对于我的论文stmaryrd包裹,这正是我想要的。不幸的是,它们不支持\left\right,因此它们在处理高公式时看起来非常丑陋。它们可能不是为这样的公式设计的。

有没有一种简单的方法可以使它们支撑\left\right/或定义支持它们的其他支架?

答案1

它并不完美,因为字形的拉伸会使水平笔划变粗,但它可能足以满足您的需求。宏\stretchleftright{}{}{}将拉伸参数 1 和 3 以满足参数 2 的垂直范围。

相关答案是定义可扩展的“白色花括号” {| 和 |} (⦃ 和 ⦄)

\documentclass{article}
\usepackage{stmaryrd}
\usepackage{scalerel}
\begin{document}
\[
\llceil x\rrceil  ~~~\llfloor y \rrfloor
\]
\[
\stretchleftright{\llceil}{\frac{x^2}{y_2}}{\rrceil}~~~
\stretchleftright{\llfloor}{\sqrt{y^2}}{\rrfloor}
\]
\end{document}

在此处输入图片描述

另一种方法是将两个普通的“ceil”粘在一起。这样可以避免横笔变粗,但必须与另一个“双”字形匹配。

\documentclass{article}
\def\llceil{\left\lceil\kern-3.5pt\left\lceil}
\def\rrceil{\right\rceil\kern-3.5pt\right\rceil}
\begin{document}
\[
\llceil\frac{x^2}{y_2}\rrceil
\]
\end{document}

在此处输入图片描述

答案2

\llceil\rrceil\llfloor的符号\rrfloorstmaryrd采用单一尺寸。

您可以定义带有参数的宏\dceil\dfloor;使用\dceil*可自动扩展的分隔符生成一个数字可选参数,该参数会在所使用的两个\lceil或之间添加一些负的字距\rceil。如果没有,则*可选参数可以是\big\Big或。 也一样。\bigg\Bigg\dfloor

\documentclass{article}
\usepackage{amsmath,xparse,stmaryrd}
\ExplSyntaxOn
\NewDocumentCommand{\dceil}{sO{0}m}
 {
  \IfBooleanTF{#1}
   {
    \spiros_ceilfloor_ext:nnnn { #2 } { #3 } { \lceil } { \rceil }
   }
   { 
    \spiros_ceilfloor:nnnn { #2 } { #3 } { \lceil } { \rceil }
   }
 }
\NewDocumentCommand{\dfloor}{sO{0}m}
 {
  \IfBooleanTF{#1}
   {
    \spiros_ceilfloor_ext:nnnn { #2 } { #3 } { \lfloor } { \rfloor }
   }
   {
    \spiros_ceilfloor:nnnn { #2 } { #3 } { \lfloor } { \rfloor }
   }
 }
\cs_new_protected:Npn \spiros_ceilfloor_ext:nnnn #1 #2 #3 #4
 {
  \left#3
  \mkern-\muskip_eval:n { 4.5mu + #1mu }
  \left#3
  #2
  \right#4
  \mkern-\muskip_eval:n { 4.5mu + #1mu }
  \right#4
 }
\cs_new_protected:Npn \spiros_ceilfloor:nnnn #1 #2 #3 #4
 {
  \mathopen{\str_if_eq:nnF { #1 } { 0 } { #1 }#3}
  \mkern\spiros_kern:n { #1 }
  \mathopen{\str_if_eq:nnF { #1 } { 0 } { #1 }#3}
  #2
  \mathclose{\str_if_eq:nnF { #1 } { 0 } { #1 }#4}
  \mkern\spiros_kern:n { #1 }
  \mathclose{\str_if_eq:nnF { #1 } { 0 } { #1 }#4}
 }
\cs_new:Npn \spiros_kern:n #1
 {
  \str_case:nnF { #1 }
   {
    { \big }{ -4.5mu }
    { \Big }{ -5.5mu }
    { \bigg }{ -6.5mu }
    { \Bigg }{ -7.5mu }
   }
   { -4.5mu }
 }
\ExplSyntaxOff
\begin{document}
\[
\llceil x\rrceil\\
\dceil*{x} \quad
\dceil*{\frac{x}{2}}\quad
\dceil*[1]{\frac{x}{2}}\quad
\dceil*[3]{\frac{\dfrac{x}{2}}{\dfrac{y}{3}}}
\]
\[
\dceil{x}\quad
\dceil[\big]{x}\quad
\dceil[\Big]{x}\quad
\dceil[\bigg]{x}\quad
\dceil[\Bigg]{x}
\]
\[
\llfloor x\rrfloor\\
\dfloor*{x} \quad
\dfloor*{\frac{x}{2}}\quad
\dfloor*[1]{\frac{x}{2}}\quad
\dfloor*[3]{\frac{\dfrac{x}{2}}{\dfrac{y}{3}}}
\]
\[
\dfloor{x}\quad
\dfloor[\big]{x}\quad
\dfloor[\Big]{x}\quad
\dfloor[\bigg]{x}\quad
\dfloor[\Bigg]{x}
\]
\end{document}

\dceil*\dfloor*达到一定尺寸(对应于\bigg)时,无需校正,结果似乎可以接受;超过该尺寸时,需要进行校正。

也许可以根据强制参数的大小自动进行更正。

在此处输入图片描述

相关内容