用latex寫文有時候會碰到比較大的表格,對於很寬但又不長的表格能夠使用rotfloat宏包的sidewaystable環境來插入旋轉90度後的表格,如:shell
%導言區:\usepackage{rotfloat} \begin{sidewaystable} \centering \begin{tabular}{ccccccccccccccccccccccccccccccc} ... \end{tabular} \end{sidewaystable}
對於不寬但很長的表格能夠用longtable宏包來進行分頁顯示。實例以下:ide
%導言區:\usepackage{longtable,booktabs} \begin{longtable}{ccccccccccc} \caption{表名}\label{tab-data} \toprule Name & Sample & $z_d$ & $z_s$ & $\sigma_{ap}$(km/s) & $R_e$(") & $\sigma_{e8}$(km/s) & $\theta_E$(") & $D_{obs}$ & $\sigma_D$ & Ref \\ \midrule \endfirsthead \multicolumn{11}{r}{續表\autoref{tab-data}}\\ \multicolumn{11}{c}{(接上頁)}\\ \toprule Name & Sample & $z_l$ & $z_s$ & $\sigma_{ap}$(km/s) & $R_e$(") & $\sigma_{e8}$(km/s) & $\theta_E$(") & $D_{obs}$ & $\sigma_D$ & Ref \\ \midrule \endhead \bottomrule \multicolumn{11}{c}{(接下頁)} \endfoot \bottomrule \endlastfoot ... ——(表格內容)—— ... \end{longtable}
\toprule、\midrule和\bottomrule爲三線表booktabs的橫線控制命令;\endfirsthead前爲表格首頁的表頭,\endfirsthead到\endhead部分爲其它頁的表頭,\endhead到\endfoot部分爲除表格尾頁外的其它頁的表尾,若表格接口處須要鏈接提示(如實例中的「續表」「接上頁」「接下頁」等內容)可在上述兩個部分設置,\endfoot到\endlastfoot部分是最後一頁的表尾。spa
最簡單的使用也可不作\endhead等設置,直接使用longtable環境,這樣表格也會在分頁時自動斷開。而插入\newpage命令能在命令插入處強制分頁。須要交叉引用時label可如上所示放在caption的後面。code
須要注意的是longtable環境不能放在table的浮動體內,不然只會在一頁顯示。orm
有時候表格的內容太多過寬,須要用小號的字,可在\begin{longtable}前加\small等控制字號的命令。但這樣會一個問題:caption的內容也變小了。在caption內容前加\normalsize等字號命令雖可以使內容成爲大字,但前面的"表?"字樣仍爲小字,可經過使用caption宏包解決這一問題,在導言區加入下列命令:接口
\usepackage[font=normalsize]{caption} \renewcommand{\normalsize}{\zihao{-4}}
上述命令將caption的字號設爲normalsize,同時又經過重定義\normalsize來控制caption的字號大小。ci
對於又長又寬的表格,目前除了縮小字號外還不清楚是否有更好的方法,求指教!io
2016.3.4更新:table
對於又長又寬的表格,能夠使用landscape環境來翻轉頁面,結合longtable環境將表格分頁:ast
%導言區:\usepackage{longtable,pdflscape} \begin{landscape} \begin{longtable}{ccccccccccc} ... \end{longtable} \end{landscape}
某些模板內置的表格環境可能也支持表格翻轉並分頁,如American Astronomical Society (AAS)提供的模板,可直接使用模板中的deluxetable環境加上rotate命令來實現:
\begin{deluxetable}{cccccccccc} \rotate %翻轉表格 \startdata ... (data) \enddata \end{deluxetable}