指定高度的右花括号,其下端正好位于基线

指定高度的右花括号,其下端正好位于基线

我需要指定高度的右花括号,其下端位于基线上。

我需要 LaTeX 中的这个,但我的尝试中的问题可以在纯 TeX 中更好地说明。

\myrightbraceofheight下面是我有一个宏故意的*来制作这样的支架。(我保留了第二个默认值,\hrule以便您可以看到基线。)

*本来是想这么做,但事实却并非如此。

两个问题:

  1. 括号有点太高了。
    我以为我可以通过 graphicx-package 的 LaTeX 来处理这个问题 \resizebox*{\width}{<desired height>}{\myrightbraceofheight{<desired height>}}
    但我不能。因为问题 2:
  2. 支架的下端并非在所有情况下都位于基线。

如何确保在所有情况下支架的下端都位于基线?

基线和括号底部之间的垂直间隙很小 - 是胶水造成的吗?还是 TeX 制作括号时使用的字形的字体规格造成的?

\def\myrightbraceofheight#1{%
    \vbox{\topskip=0pt \offinterlineskip %<- this not necessary but who knows?
    \hrule height 0pt depth 0pt
    \hbox{\topskip=0pt \offinterlineskip %<- this not necessary but who knows?
      $\left.\vbox{\topskip=0pt \offinterlineskip %<- this not necessary but who knows?
        \hrule height .5\dimexpr#1\relax depth .5\dimexpr#1\relax 
      }\right\}$%
    }%
    \hrule% height 0pt depth 0pt
    }%
}%

A \myrightbraceofheight{5cm}

B \myrightbraceofheight{2cm}

C \myrightbraceofheight{1cm}

D \myrightbraceofheight{2mm}

\bye

在此处输入图片描述

答案1

基本上不可能得到精确的高度,因为 TeX 要么使用现有的字形,要么连接各个部分,但这仅适用于一组离散的长度。它具有参数\delimiterfactor和,\delimitershortfall可以在一定程度上控制对指定长度的容差。

如果你想要一个 5 厘米高的分隔符,你需要使用一个延伸 2.5 厘米的\left\right公式轴上方,其位置在\fontdimen22\textfont2基线上方。请参阅 TeXbook 第 152 页的最后一个双重危险弯曲。

如果您设置\delimiterfactor=1000\delimitershortfall=0pt,则分隔符将是至少与指定的长度一样高,但通常会更高。使用标准纯 TeX(和 LaTeX)值\delimiterfactor=901\delimitershortfall=5pt,分隔符将至少为 0.901*5cm 和至少 5cm – 5pt(因此通常更短)。

\def\myrightbraceofheight#1{%
  \vbox{
    \delimiterfactor=1000
    \delimitershortfall=0pt
    \hbox{%
      $\mathsurround=0pt % start math mode
      \kern-\nulldelimiterspace % remove the space introduced by \left.
      \left.
      \vbox to0.5\dimexpr#1+2\fontdimen22\textfont2{}
      \right\}
      $% end math mode
    }%
    \hrule height 0pt % set the reference point at the bottom
  }%
}

\leavevmode\rlap{\vrule height 0pt depth 0.1pt width 3cm}% to show the baseline
\vrule height 5cm depth 0pt\myrightbraceofheight{5cm}
\vrule height 2cm depth 0pt\myrightbraceofheight{2cm}

\bye

在此处输入图片描述

与参数标准值相同

在此处输入图片描述

顺便说一下\topskip绝不在 中使用\vbox,当然在 中设置它\hbox是没有效果的。由于 TeX 从来不会在 周围添加行间粘连\hrule,所以\offinterlineskip也不需要。

您不需要用说明符来设置 的内容\vboxto因此它比 更\vbox to简单\vbox{\hrule...}

相关内容