LaTeX之表格中多列合並時表格豎線不顯示的解決方法


在LaTeX表格繪制中,多列合並通常會使用\multicolumn命令來實現。這個命令會造成所在單元格中的左右豎線不顯示,本文介紹解決這個問題的方法。下面的示例代碼中列出了處理前與處理后的代碼。


環境

  • Ubuntu 20.04
  • LuaLaTeX 1.10.0

完整示例代碼

% 博客園,繁星間漫步,陸巍的博客
\documentclass{article}

% 注意宏包順序,有可能會報錯
\usepackage{ctex}% 中文支持
\usepackage{geometry}% 用於頁面設置
\usepackage{booktabs}% 增強表格功能
\usepackage{tabularx}% 更多表格功能
\usepackage{multirow}% 支持表格的多行合並
\usepackage{qtree}% 繪制樹形圖

% 設置為A4紙,邊距適中模式(參考永中office)
\geometry{
  width = 210mm,
  height = 297mm,
  left = 19.1mm,
  right = 19.1mm,
  top = 25.4mm,
  bottom = 25.4mm
}


% 定義表格對齊方式
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}

\section{未經處理的表格}
\begin{tabular}{|C{10mm}C{10mm}C{20mm}C{20mm}|C{10mm}C{10mm}C{20mm}C{20mm}|}
  \bottomrule
  \multicolumn{3}{c}{推導步驟} & 選擇候選式 & \multicolumn{3}{c}{推導步驟} & 選擇候選式\\
  \hline
  E & \Rightarrow & E + E & E \rightarrow E + E & E & \Rightarrow & E * E & E \rightarrow E * E\\
  \hline
  & \Rightarrow & 3 + E & E \rightarrow var & & \Rightarrow & E + E * E & E \rightarrow E + E\\
  \hline
  & \Rightarrow & 3 + E * E & E \rightarrow E * E & & \Rightarrow & 3 + E * E & E \rightarrow var\\
  \hline
  & \Rightarrow & 3 + 4 * E & E \rightarrow var & & \Rightarrow & 3 + 4 * E & E \rightarrow var\\
  \hline
  & \Rightarrow & 3 + 4 * 6 & E \rightarrow var & & \Rightarrow & 3 + 4 * 6 & E \rightarrow var\\
  \hline
  \multicolumn{4}{c}{\Tree [.E [.E 3 ] + [.E [.E 4 ] * [.E 6 ]]]} & \multicolumn{4}{c}{\Tree [.E [.E [.E 3 ] + [.E 4 ]] * [.E 6 ]]}\\
  \toprule
\end{tabular}

\centerline{圖3-3 二義性文法推導}


\section{處理后的表格}
% \multicolumn語句會造成表格中的豎線不顯示,左邊第1根豎線只能用增加一個空列來顯示;
% 后面的豎線可以手工用\vline添加豎線。
\begin{tabular}{|p{0mm}C{10mm}C{10mm}C{20mm}C{20mm}|C{10mm}C{10mm}C{20mm}C{20mm}|}
  \bottomrule
  & \multicolumn{3}{c}{推導步驟} & 選擇候選式 & \multicolumn{3}{c}{推導步驟} & 選擇候選式\\
  \hline
  & E & \Rightarrow & E + E & E \rightarrow E + E & E & \Rightarrow & E * E & E \rightarrow E * E\\
  \hline
  & & \Rightarrow & 3 + E & E \rightarrow var & & \Rightarrow & E + E * E & E \rightarrow E + E\\
  \hline
  & & \Rightarrow & 3 + E * E & E \rightarrow E * E & & \Rightarrow & 3 + E * E & E \rightarrow var\\
  \hline
  & & \Rightarrow & 3 + 4 * E & E \rightarrow var & & \Rightarrow & 3 + 4 * E & E \rightarrow var\\
  \hline
  & & \Rightarrow & 3 + 4 * 6 & E \rightarrow var & & \Rightarrow & 3 + 4 * 6 & E \rightarrow var\\
  \hline
  & \multicolumn{4}{c}{\Tree [.E [.E 3 ] + [.E [.E 4 ] * [.E 6 ]]]}\vline & \multicolumn{4}{c}{\Tree [.E [.E [.E 3 ] + [.E 4 ]] * [.E 6 ]]}\vline\\
  \toprule
\end{tabular}

\centerline{圖3-3 二義性文法推導}

\end{document}

效果

LaTeX之表格中多列合並時表格豎線不顯示的解決方法示例代碼

說明

  1. 對於表格左邊第一根豎線缺失的情況,處理稍微麻煩一些,需要通過增加一個寬度為0的列來解決,使用\vline等方法都會報錯。
  2. 第一根豎線后的豎立都可以通過\vline命令來補上缺失的豎線。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM