作者:Daniel
時間:2020/9/4
「本公眾號開闢新欄目:LaTeX Q&A,以問與答的方式解決LaTeX排版中的各種問題。歡迎讀者加小編微信 niltxz 提問!
」問題描述Q: 請問LaTeX的表格,橫線用\toprule加粗時,加豎線會截斷, 如圖:
怎麼能既讓水平線加粗,又不截斷豎線呢?
(謝謝廣東財經大學郭惠湞同學提問!)
我們在用LaTeX排版表格的時候,希望給表格增加一些風格,例如讓表格頂線和底線加粗,最常用的是採用宏包booktabs提供的三個命令:\toprule,\midrule和\bottomrule。
用這種方式排版簡單無豎線的三線表格不會有什麼問題,但是,如果將它們用到有豎線的表格(tabular或長表格longtable)環境中時,就會出現意想不到的「豎線被截斷」的效果!
於是去百度解決方案,最常的回答是:「千萬不要在縱橫線表格中用booktabs宏包命令!」 簡直是「一朝被蛇咬,十年怕井繩」啊!
果真如此嗎?其實去查一查booktabs宏包說明書,這個問題是有解的,而且還不只一種解決方案!
原因簡述三個加粗水平線的命令\toprule[]、\midrule[]、\bottomrule[]都帶有一個可選參數,用戶可以自己設定它們的粗細。一般情況下,我們可以省略中括號部分,用它的默認值就可以了。
一般用戶不知道的是,這三個命令各自設置了一個線上和線下的垂直空白距離。這些垂直方向上的空白在三線表格中很好用,可以智能地拉開表格水平線和前後文字的距離,不顯得擁擠。然而這些垂直空白距離正是在縱橫表格中截斷豎線的元兇!請記住它們的名字:線上垂直距離為\aboverulesep=0.4ex, 線下垂直距離為\belowrulesep=0.65ex。
表一:
命令說明\toprule[]默認寬度=0.08em改進上面表格的豎線被截斷的問題。
方案一要點:用\setlengh{}{}命令更改\aboverulesep和\belowrulesep的長度值為0,見下面的例子:
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\begin{tabular}{|r|l|r|r|r|r|r|c|}
\toprule
序號 & 姓名 & 一題 & 二題 & 三題 & 四題 & 總分 & 備 \quad 注 \\ \midrule
%%數據從下面開始---
1 & Name1 & 25 & 4 & 9 & 36 & 74 & \\\hline
2 & Name2 & 27 & 11 & 5 & 36 & 79 & \\\hline
3 & Name3 & 28 & 12 & 5 & 34 & 79 & \\\hline
4 & Name4 & 27 & 10 & 5 & 36 & 78 & \\\hline
5 & Name5 & 26 & 12 & 7 & 36 & 81 & \\ \bottomrule
\end{tabular}
方案二booktabs宏包作者還提供了一個用戶可以自行設置「線粗,線上空白,線下空白」的命令:\specialrule{線粗}{線上空白}{線下空白},如下面的代碼:
\begin{tabular}{|r|l|r|r|r|r|r|c|}
\specialrule{1pt}{0pt}{0pt}
序號 & 姓名 & 一題 & 二題 & 三題 & 四題 & 總分 & 備 \quad 注 \\ \specialrule{0.7pt}{0pt}{0pt}
1 & Name1 & 25 & 4 & 9 & 36 & 74 & \\\hline
2 & Name2 & 27 & 11 & 5 & 36 & 79 & \\\hline
3 & Name3 & 28 & 12 & 5 & 34 & 79 & \\\hline
4 & Name4 & 27 & 10 & 5 & 36 & 78 & \\\hline
5 & Name5 & 26 & 12 & 7 & 36 & 81 & \\ \specialrule{1pt}{0pt}{0pt}
\end{tabular}
方案一和方案二都能完美地解決豎線被截斷的問題, 見下圖:網友神操作:顛倒\toprule和\bottomrule的位置:
\begin{tabular}{|r|l|r|r|r|r|r|c|}
\bottomrule
序號 & 姓名 & 一題 & 二題 & 三題 & 四題 & 總分 & 備 \quad 注 \\ \midrule
%%數據從下面開始---
1 & Name1 & 25 & 4 & 9 & 36 & 74 & \\\hline
2 & Name2 & 27 & 11 & 5 & 36 & 79 & \\\hline
3 & Name3 & 28 & 12 & 5 & 34 & 79 & \\\hline
4 & Name4 & 27 & 10 & 5 & 36 & 78 & \\\hline
5 & Name5 & 26 & 12 & 7 & 36 & 81 & \\ \toprule
\end{tabular}得到的表格如下:
這種非正常操作能解決\toprule、\bottomrule帶來的空白問題(原因見表一說明),但是不能解決\midrule上下的空白問題。
【1.6G入門視頻+入門進階電子書】
【LaTeX微信交流加群:】
如果你希望交流LaTeX使用或者TikZ作圖方面的問題,請先添加作者微信:niltxz,然後加入作者的LaTeX+TikZ+Beamer 交流微信群。LATEX 初級篇
論文的結構和tex源文件的結構
無編號數學公式的輸入
array 環境和矩陣、行列式、表格
矩陣、行列式的輸入
LaTeX公式編號及引用
LaTeX初級教程:列表
LaTeX表格的編制
LaTeX初級教程:插入圖片
LaTeX初級教程:參考文獻的編寫(上)
LaTeX初級教程:參考文獻的批量添加及引用(下)
LATEX 中級篇
DIY模板系列之中文試卷模板
還在問人要LaTeX模板嗎?DIY一個書籍模板自己用吧!
貴在堅持!