14场胜负彩查询:LaTeX 技巧939:使用比逼格更逼格的定界符

14场胜负彩走势 www.jufkwk.com.cn 通常,我們建議在 LaTeX 中使用 LaTeX 提供的 \big, \Big, \bigg, \Bigg 一系列命令,代替 TeX 默認的 \left 和 \right來調整定界符的大小。然而,盡管最大提供了 \Bigg 的命令,但有時候仍然不夠用。

此篇介紹如何定義 \biggg, \Biggg, \bigggg 和 \Bigggg 系列命令。我們的口號是「比逼格更逼格」(bigger than bigger)!

挖掘代碼

\big 系列命令

要定義更大的定界符修飾,就必須搞清楚 \big 系列命令是如何定義的。首先,我們使用 kpsewhich amsmath.sty 找到 amsmath.sty 在系統中的路徑。而后打開樣式文件,搜尋 \big 的定義。

\renewcommand{\big}{\[email protected]\@ne}
\renewcommand{\Big}{\[email protected]{1.5}}
\renewcommand{\bigg}{\[email protected]\[email protected]}
\renewcommand{\Bigg}{\[email protected]{2.5}}

\[email protected] 命令

顯而易見,核心是 \[email protected] 這個命令。它可以根據其后第一個 token 決定定界符的放大程度。注意,這里 \@ne 表示 {1},而 \[email protected] 表示 {2}——這是令人討厭的 LaTeX 內核編程 trick。于是我們繼續去尋找 \[email protected] 的定義。

\def\[email protected]#1#2{%
  {\@mathmeasure\[email protected]{\nulldelimiterspace\[email protected]}%
     {\left#2\vcenter to#1\[email protected]{}\right.}%
   \box\[email protected]}}

很顯然,\[email protected] 命令內部也是通過 TeX 原始的 \left 和 \right 命令來調整定界符(#2)的大小的。不過,它還額外處理了左右的空距。這里我們知道就行了,不去深究。

\bigl 和 \bigr 系列命令

接下來我們繼續挖掘 \bigl 和 \bigr 系列命令的定義。它們定義在 LaTeX2e 內核當中,因此我們通過執行 texdoc source2e 就能看到它們的定義了。

\def\bigl{\mathopen\big}
\def\bigm{\mathrel\big}
\def\bigr{\mathclose\big}
\def\Bigl{\mathopen\Big}
\def\Bigm{\mathrel\Big}
\def\Bigr{\mathclose\Big}
\def\biggl{\mathopen\bigg}
\def\biggm{\mathrel\bigg}
\def\biggr{\mathclose\bigg}
\def\Biggl{\mathopen\Bigg}
\def\Biggm{\mathrel\Bigg}
\def\Biggr{\mathclose\Bigg}

很顯然,它們就只是用 \mathopen, \mathrel 和 \mathclose 宏來修飾了一下對應的定界符修飾命令。

改造

據此,我們可以定義更有逼格的定界符修飾命令了。

% \RequirePackage{amsmath}

\newcommand{\biggg}{\[email protected]{3}}
\def\bigggl{\mathopen\biggg}
\def\bigggm{\mathrel\biggg}
\def\bigggr{\mathclose\biggg}
\newcommand{\Biggg}{\[email protected]{3.5}}
\def\Bigggl{\mathopen\Biggg}
\def\Bigggm{\mathrel\Biggg}
\def\Bigggr{\mathclose\Biggg}
\newcommand{\bigggg}{\[email protected]{4}}
\def\biggggl{\mathopen\bigggg}
\def\biggggm{\mathrel\bigggg}
\def\biggggr{\mathclose\bigggg}
\newcommand{\Bigggg}{\[email protected]{4.5}}
\def\Biggggl{\mathopen\Bigggg}
\def\Biggggm{\mathrel\Bigggg}
\def\Biggggr{\mathclose\Bigggg}

注意,這段代碼在普通的 LaTeX 文檔中,需要使用 \makeatletter 和 \makeatother 來改變 @ 字符的分類碼,以便正確定義命令。

接下來我們實際使用看看。

\documentclass{article}

\usepackage{amsmath}

\makeatletter
\newcommand{\biggg}{\[email protected]{3}}
\def\bigggl{\mathopen\biggg}
\def\bigggm{\mathrel\biggg}
\def\bigggr{\mathclose\biggg}
\newcommand{\Biggg}{\[email protected]{3.5}}
\def\Bigggl{\mathopen\Biggg}
\def\Bigggm{\mathrel\Biggg}
\def\Bigggr{\mathclose\Biggg}
\newcommand{\bigggg}{\[email protected]{4}}
\def\biggggl{\mathopen\bigggg}
\def\biggggm{\mathrel\bigggg}
\def\biggggr{\mathclose\bigggg}
\newcommand{\Bigggg}{\[email protected]{4.5}}
\def\Biggggl{\mathopen\Bigggg}
\def\Biggggm{\mathrel\Bigggg}
\def\Biggggr{\mathclose\Bigggg}
\makeatother

\begin{document}

\[
    \Biggggl[\biggggl[\Bigggl[\bigggl[\Biggl[\biggl[\Bigl[\bigl[[ x ]\bigr]\Bigr]\biggr]\Biggr]\bigggr]\Bigggr]\biggggr]\Biggggr]
\]

\end{document}

aa_1_看圖王.png

選自:https://liam.page/2018/11/09/the-bigger-than-bigger-delimiter-in-LaTeX/ 

分享到:
未經允許不得轉載:LaTeX 技巧939:使用比逼格更逼格的定界符
已有 條意見

    最新文章

    加載中...
      本站提供專業LaTeX排版、咨詢、定制服務,請點擊下圖咨詢詳情


      全國首個精品的LaTeX視頻教程,大牛帶著你入門,讓LaTeX學習不再糾結,請點擊下圖咨詢詳情

      熱門評論

        聯系我們

        交流QQ群:91940767
        本站QQ號:343083553
        郵箱聯系[email protected]
        淘寶店鋪latexstudio.taobao.com 提供排版,模板定制,培訓,圖片處理,視頻教程等LaTeX服務。


        如果您投稿或者希望加入我們團隊,請發送您的簡歷到[email protected]。

        科技藝術的完美融合,專業精致的排版體驗

        聯系我們聯系我們