1. 程式人生 > >LaTeX之表格中強制換行

LaTeX之表格中強制換行


如圖所示,表格第三列中每行文字太長,需要強制換行,該如何實現呢?

這裡介紹兩種方法。

第一種,要點在於第一行的命令,和在需要換行的那一欄中使用\tabincell{c}{ }命令,並在需要換行的文字後跟上\\

\newcommand{\tabincell}[2]{\begin{tabular}{@{}#[email protected]{}}#2\end{tabular}}  

\begin{table}[!hpb]
\caption{Verilog HDL語言能力總結}
\label{verilog}
  \centering
  \begin{tabular} 
    {@{}

[email protected]{}} \toprule
    %\multicolumn{2}{c}{Item} \\ \cmidrule(r){1-2}
    \hei{描述級別} & \hei{抽象級別} & \hei{功能描述} & \hei{物理模型} \\ \midrule    
     & \song{系統級} & \tabincell{c}{用語言提供的高階結構能夠實現\\所設計模組外部效能的模型} &        
     \tabincell{c}{晶片、電路板和物理\\劃分的子模組}\\ \cmidrule{2-4}
    行為級& 演算法級 & \tabincell{c}{用語言提供的高階功能\\能夠實現演算法執行的模型} &        
      部件之間的物理連線,電路板\\ \cmidrule{2-4}
    & RTL級 & \tabincell{c}{描述資料如何在暫存器之間流動和\\如何處理、控制這些資料流動的模型} &        
     晶片、巨集單元\\ \midrule
    邏輯級 & 門級 & 描述邏輯閘與邏輯閘之間連線的模型     & 標準單元布圖\\ \midrule
    電路級 & 開關級 & \tabincell{c}{描述器件中三極體和儲存節點\\以及他們之間連線的模型} & 電晶體布圖 \\ \bottomrule
  \end{tabular}
\end{table}
第一種方法的排版效果如下圖所示:

第二種,這種方法主要是通過第6行的命令來限制每一列的寬度,這樣當文字長度超過限制寬度的時候,便會自動換行,換行後,是左對齊的。個人覺得這種方法比上面的方法稍微簡單些。

\begin{table}[hfpb]
\label{verilog}
\caption{Verilog HDL語言能力總結}
\hspace{0.5cm}
  \centering
  \begin{tabular} {p{40pt}p{50pt}p{170pt}p{130pt}}\toprule   
    \hei{描述級別} & \hei{抽象級別} & \hei{功能描述} & \hei{物理模型} \\ \midrule    
     & \song{系統級} & 用語言提供的高階結構能夠實現所設計模組外部效能的模型 &        
     晶片、電路板和物理劃分的子模組\\ \cmidrule{2-4}
    行為級& 演算法級 & 用語言提供的高階功能能夠實現演算法執行的模型 &        
      部件之間的物理連線,電路板\\ \cmidrule{2-4}
    & RTL級 & 描述資料如何在暫存器之間流動和如何處理、控制這些資料流動的模型 &        
     晶片、巨集單元\\ \midrule
    邏輯級 & 門級 & 描述邏輯閘與邏輯閘之間連線的模型     & 標準單元布圖\\ \midrule
    電路級 & 開關級 & 描述器件中三極體和儲存節點以及他們之間連線的模型 & 電晶體布圖 \\ \bottomrule
  \end{tabular}
\end{table}
第二種方法的排版效果如下圖所示: