我希望獲得一個精確的和用戶指定的(點)大小的分隔符,而不是預設的“足夠大以容納內容的離散大小”\left(
等。
這可能嗎?我嘗試過研究 的定義\big*
,
\newlength{\vbraceheight}
\setlength{\vbraceheight}{50pt}
\def\vbig#1{{\hbox{$\left#1\vbox to\vbraceheight{}\right.\n@space$}}}
\def\vbigl{\mathopen\vbig}
\def\vbigr{\mathclose\vbig}
但這些仍然有跳躍,因為它\vbraceheight
不斷變化(我不太確定為什麼)。
答案1
我將捕獲內容\vbig
並垂直調整大小(保持縱橫比)為\vbraceheight
:
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\makeatletter
\newlength{\vbraceheight}
\setlength{\vbraceheight}{50pt}
\def\vbig#1{{\resizebox{!}{\vbraceheight}{$\left#1\vbox to\vbraceheight{}\right.\n@space$}}}
\def\vbigl{\mathopen\vbig}
\def\vbigr{\mathclose\vbig}
\makeatother
\begin{document}
\[
\setbox0=\hbox{$\displaystyle\vbigl\{\frac{1}{2}\vbigr\}$}\usebox0\ \mbox{has height \the\ht0}
\]
\end{document}
答案2
[OP寫的答案,從問題中移走]
感謝您的評論與回覆。我想我已經明白為什麼這是一件困難的事了。我在 comp.text.tex 上發布了類似的問題,並收到了 Dan Luecking 的以下“手動構造”,我認為值得分享(我做了一些小的間距修改,並僅包含左括號的代碼):
\DeclareMathSymbol{\bracetr}{\mathord}{largesymbols}{"38}
\DeclareMathSymbol{\bracetl}{\mathord}{largesymbols}{"39}
\DeclareMathSymbol{\bracebr}{\mathord}{largesymbols}{"3A}
\DeclareMathSymbol{\bracebl}{\mathord}{largesymbols}{"3B}
\makeatletter
\def\leftbracefill{%
\setbox\z@\hbox{$\m@th\bracetr$}%
\@tempdima=.5\wd\z@
\advance\@tempdima-.6\p@
\offinterlineskip
\hbox{\kern-\@tempdima$\m@th\bracetr$}
\leaders\hrule \@width 1.18\p@ \vfill
\hbox{\kern-\@tempdima$\m@th\bracebl$}
\kern-.5\p@
\hbox{\kern-\@tempdima$\m@th\bracetl$}
\leaders\hrule \@width 1.18\p@ \vfill
\hbox{\kern-\@tempdima$\m@th\bracebr$}
}
\newcommand\leftbrace[1]{%
\setbox\z@\hbox{$\m@th\bracetl$}%
\@tempdima=.5\wd\z@
\advance\@tempdima-.6\p@
\vcenter{\m@th\everycr{}\tabskip\z@skip
\hbox{\valign{##\crcr\noalign{\kern\@tempdima}
\leftbracefill\crcr
\hbox{$\m@th\displaystyle{#1}$}\crcr
}}%
}%
}
這樣做的優點是它不依賴 Graphicx,並且支架厚度不存在由 Werner 解決方案的 \scalebox 導致的(誠然很小)不連續性。然而,上面的方法不太靈活,因為它只使用一種特定尺寸的“支撐件”(因此只有當內容高於50pt 時它才真正起作用),它完全依賴於計算機現代字體,並且在pdf 查看器中存在偽影。