网球比分直播第一 www.gqgyzr.com.cn

   \begin{table}[htp]
    \centering
    ...
    \end{table}

如果全文使用大量的圖表浮動體,每個浮動體內部寫一句\centering也是比較繁瑣的,如果再要求表格內容采用小一號的字號\small,每個環境里需要輸入的內容就又多了一點,那么有沒有什么方法可以在撰寫文檔的時候省去這一條命令而同時實現內容居中,字體小一號呢?作為最直接的思路,可以定義新環境Figure、Table環境如下:

    \newenvironment{Table}[1][tbp]%
    {\begin{table}[#1]\centering\small}{\end{table}}
    \newenvironment{Figure}[1][tbp]%
    {\begin{figure}[#1]\centering\small}{\end{figure}}

這種方法的缺點是需要自定義環境,一旦需要復制文本內容到其他文檔中,需要把導言區內相應的重定義內容也復制過去,而且重定義的環境容易與\LaTeX 基礎環境混淆。因此可以考慮對figure 和table 環境進行修改,最容易想到的方法是利用etoolbox宏包在環境中施加一個鉤子,添加\centering\small命令,于是容易想到使用(以下僅以table環境舉例,figure 環境類似):

    \usepackage{etoolbox} % in preamble
    \AtBeginEnvironment{table}{\centering\small}

但是嘗試一下,我們會發現實際并沒有起任何作用。這是因為在article.cls(其他基礎文檔類類似,僅以其為例)中對table 的定義是:

    \newenvironment{table}
                   {\@float{table}}
                   {\[email protected]}

顯然,在使用了\AtBeginEnvironment{table}{\centering\small}一句后,table的定義變成了:

    \newenvironment{table}
                   {\centering\small\@float{table}}
                   {\[email protected]}

\centering 出現太早,導致不能在table 環境中起作用。如果重新定義table(導言區內需要把下面這一句放在\makeatletter 與\makeatother之間):

    \renewenvironment{table}{\@float{table}\centering\small}{\[email protected]}

或者使用xpatch宏包中的命令:

    \usepackage{xpatch} % in preamble
    \xapptocmd{\table}{\centering\small}{}{}

來得到同樣的效果,則浮動體table 環境自身的可選參數將無法使用,因為\centering\small占據了可選參數的位置,導致\LaTeX 認為使用默認可選參數,并將其后的[hbtp]等認作環境中的文本內容。如果需要保留浮動體參數的作用,則需要對更深層的內部命令進行修改或打補丁,參閱 https://tex.stackexchange.com/questions/95992/centering-all-tables-in-a-document-with-etoolbox/ 后,考慮對內部命令\@floatboxreset 補充如下:

    \usepackage{xpatch}    % in preamble
    \makeatletter
    \xpatchcmd\@floatboxreset{\normalsize}{\centering\small}{}{}
    \makeatother

這樣修改后,所有浮動體默認在環境中都是居中布置了,并且采用小一號的字號。