LaTeX Q&A | \toprule命令與表格豎線斷線問題

2021-03-02 大哉數學之為用

作者: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
線上垂直空白=0ex
線下垂直空白=0.65ex\midrule[]默認寬度=0.05em
線上垂直空白=0.4ex
線下垂直空白=0.65ex\bottomrule[]默認寬度=0.08em
線上垂直空白=0.4ex
線下垂直空白=0ex解決之道問題表格:

改進上面表格的豎線被截斷的問題。

方案一

要點:用\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一個書籍模板自己用吧!


貴在堅持!

相關焦點

  • LaTeX簡單學習筆記
    Matlab中使用命令        latex()      即可獲得需要的LaTeX數學公式例:MathType可以直接複製輸入的公式但並不意味著無法使用上述命令生成視覺上的多行公式,即使用矩陣來表示。多行矩陣在上述命令中視為一個公式,進行公式排序時僅被認為是一個公式。使用多行矩陣表示多行公式有很多不便,例如難以對齊,一般不建議使用。下面幾張圖是使用矩陣表示多行公式,可以看到排版效果並不好。
  • AutoLaTeX | 從 Excel 數據到 LaTeX 表格
    當然,不否認有在線工具[1]可以直接生成指定行列的表格,不過這裡就且說說先在 Excel 設計好表格行列、表頭,再轉成 LaTeX 的情況。大概因為有時候可能需要先把表頭畫好,再結合實驗原理多考慮考慮,才能確定需要哪幾列,每列表頭是什麼。當然也可以先草稿紙畫好思路,這段就當我閒扯吧。
  • 學習|Latex排版
    \thanks{...} }\thanks{} : 該命令在\author{}命令內部使用,說明文稿的錄用時間和作者通訊方式,放在footnote(腳註)處。、水平距離調整https://blog.csdn.net/a386115360/article/details/893587233.表格①怎麼把word中表格轉為latex,分享一個百度經驗連結:https://jingyan.baidu.com
  • LaTeX|圖表的排版
    在左右兩端或基本元素之間可以加上豎線,表示這裡是不是需要用線來分隔。舉例如下:在列格式中還有一些其他的說明符,在此也列舉如下:p{<寬度>},表示本列具有固定的寬度,表格內容在其中可以自動換行(但不能手動用 \\ 進行換行),並可以用 \raggedleft,\centering 等命令進行對齊。
  • [Latex常用庫]三線表
    這將會繪製一個四行(含列標題)三列的表格。表格的內容居中顯示。\begin{table}[htbp]\centering\caption{\label{Tab.tab1}Example Table}\begin{tabular}{ccc} \toprule column 1 & column 2 & column 3 \\ \midrule a & b & c \\a &
  • Stata結果輸出:Excel結果表變身LaTeX表格
    在此前的推文中,我們介紹了如何把各類 Stata 代碼和回歸結果輸出到 LaTeX 中,如:事實上,此前介紹的 outreg2、esttab 和 tabout 等命令也都支持 LaTeX 輸出:Stata結果輸出:tabout-用-Stata-輸出高品質表格
  • LaTeX學習記錄(3):使用圖表
    就這樣,10分鐘不到的時間就把整個表格做完了。❞每每想到這裡都會想到 miHoYo 裡的 「Tech Otakus Save the World」。然而更高技術的朋友會問:「你為什麼不直接用MATLAB輸出到EXCEL呢?你不會不知道 writetable 這一系列命令吧?不會吧不會吧?」
  • 教程 | Matlab畫圖插入Latex公式
    不過,LaTeX比TeX更為結構化,它有很多預設模版,包含供建立索引、表格、列表等的宏和公用軟體。利用Latex,即使我們不會排版和程序設計也可以生成複雜的論文規格的表格和數學公式。我們使用matlab對數據或模型進行計算處理之後,時常會需要輸出結果呈現Latex的格式,或者能方便轉換成latex格式方便後續編輯。
  • 【Latex】Latex常用符號及數學公式
    對於生成複雜表格和數學公式,這一點表現得尤為突出。因此它非常適用於生成高印刷質量的科技和數學類文檔。這個系統同樣適用於生成從簡單的信件到完整書籍的所有其他種類的文檔。LaTex功能很強大,本文只介紹數學公式部分的基礎語法,對LaTex感興趣的同學可在文末領取完整文檔學習使用。LaTex的數學符號基本語法也比較簡單,對於內聯公式,請將公式括在$ ... $中。
  • LaTeX 搞定學術論文排版王者 (上)
    優秀的排版系統——latex如果說markdown是文科學生寫論文的神器,那麼屬於理工科學生最理想的排版神器就是latex。latex的性質和markdown一樣,不同的是,latex在學術權威性與數學公式、複雜表格等方面的支持度更勝一籌,許多權威學術期刊投稿時都要求latex排版。所以對於有研究意向的同學,尤其是理工科同學,latex是必備技能之一。
  • 通過geogebra實現LATEX數學公式編輯,數學電子版筆記的好幫手!
    微藍碼科思原理 2019-04-03 23:22通常情況下latex有倆種模式:文本模式和數學模式,而geogebra中的latex默認是數學模式,因此針對geogebra的特色,做如下說明。1.1.1 命令區分大小寫latex命令是大小寫敏感的,在書寫時請注意嚴格區分大小寫,這樣規定有利於源文件在不同平臺之間的移植。1.1.2 命令的寫法命令以反斜線 \ 開始,命令只能由字母組成,命令後的空格符,數字或任何非字母都標誌著該命令結束。
  • LaTeX初級教程:插入圖片
    今天我們學習一個環境figure 和一個命令\includegraphics,就能輕鬆搞掂插圖了!LaTeX的命令基本上都是單詞(或者單詞的縮略),所以,我們認識單詞就能記住這些命令。figure和graphics都有「圖形,圖樣」的意思,includegraphics就是導入圖片的意思。
  • 如何使用CAD繪製表格
    注意:在對需要進行分隔的表格進行指定時,請選擇能夠在屏幕中全部可見的表格,否則系統將認定用戶沒有對表格指定,無法對其執行分隔表格命令。  加注斜線  命令:BGX  功能說明:執行本命令,可為用戶所指定的表格加注斜線。
  • 學術寫作利器LaTeX入門,再也不用為word的排版頭痛
    常用的LaTex online compiler基本就是sharelatex.com和writelatex.com這兩個,需要註冊,基本帳戶免費。section{introduction}是對文檔部分的劃分,括號裡是這部分的名稱,latex會生成具體的部分數字編號。子分層的命令是subsection。一般來說latex不允許過多子分層,比如說在usepackage{apacite}規則中,只允許兩個子分層也就是subsubsection{}。了解了以上基礎知識之後,就可以進行最基本的LaTeX文檔編寫了。
  • 八一LaTeX學習的完整過程
    不過在向老師的幫助下,我對LaTeX有了更深的了解,後來我又第一次接觸到了 tcolorbox 這麼漂亮的盒子代碼,然後開始了beamer 的學習,到後面的插圖與表格,再後來第一次熬夜通宵並參考了湯的試卷模板寫了一份全國大學生數學競賽模板,並同時命題了一份模擬考卷。到現在我們寫的LaTeX文件數目已經超過四位數。
  • LaTex的文檔布局
    也可以選用 FoilTex 來得到相同的效果宏包在排版文檔時,會發現基本的 LaTex 並不能解決你的問題。因此,就需要宏包擴展或新增某種排版功能。在 LaTex 調用宏包的命令如下所示:\usepackage[options]{package}options:激活宏包特殊功能的可選參數,多個子參數時用逗號分隔。
  • latex基本語法
    } \subsection{} \subsubsection{}3.頁面大小和邊距\usepackage{geometry}\geometry{a4paper,scale=0.8}%\geometry{a4paper,left=2cm,right=2cm,top=1cm,bottom=1cm}4.插入表格
  • LaTex 排版 (2):表格 | Linux 中國
    LaTeX 提供了許多工具來創建和定製表格,在本系列中,我們將使用 tabular 和 tabularx 環境來創建和定製表。使用上面的例子,讓我們來詳細講解使用的要點,並描述你將在本系列中看到的更多選項:選項意義&定義每個單元格,這個符號僅用於第二列\\這將終止該行並開始一個新行|指定表格中的垂直線(可選)\hline指定表格中的水平線(可選)*{數量}{格式}當你有許多列時,可以使用這個,並且是限制重複的有效方法||指定表格中垂直雙線定製表格學會了這些選項,讓我們使用這些選項創建一個表
  • 【入門教程】使用LaTeX撰寫你的實驗報告
    (通過鍵入一些指令)來調整圖片和表格的位置,不需要再用滑鼠拖拉,費力不討好。文段對齊也很舒服,還記得自己在word裡面混著用tab和空格換行引發的事故嗎?顯著減少使用滑鼠次數,使得你的操作更為優♂雅 / 優♀雅。模板化、復用性程度吊打word,不熟悉語法的人也可以下載模板資源,靠直接替換正文內容完成一篇美觀的文檔。
  • LaTeX技巧903:LaTeX 設置的行距與 Word 的行距如何對應?
    我在用LaTeX排版本科學位畢業論文時遇到了行距的問題。學校嚴格要求正文行距是1.2倍(而且是以word為標準的)。