LaTeX之表格绘制综合⽰例⼀
LaTeX中绘制复杂表格有些⿇烦,这⾥记录下⼀些综合性的例⼦以备查询。下⾯直接给出所举例⼦的完整源代码。
环境
Ubuntu 20.04
Visual Studio Code 1.62.3
LuaLaTeX
⽰例⼀:所绘表格选⾃裘巍⽼师所著《编译器设计之路》⼀书中的表2-5。
% 博客园,繁星间漫步,陆巍的博客
\documentclass{article}
% 注意宏包顺序,有可能会报错
\usepackage{ctex}% 中⽂⽀持
\usepackage{geometry}% ⽤于页⾯设置
\usepackage[dvipsnames, svgnames, x11names]{xcolor}% 颜⾊⽀持
\usepackage{tcolorbox}% ⽀持更好的⽂本框
\tcbuselibrary{skins, breakable}% ⽀持⽂本框跨页
\usepackage[english]{babel}% 载⼊美式英语断字模板
\usepackage{colortbl}% 表格颜⾊
\usepackage{longtable}% ⽀持长表格跨页
\usepackage{multirow}% ⽀持表格的多⾏合并
% 设置为A4纸,边距适中模式(参考永中office)
\geometry{
width = 210mm,
height = 297mm,
left = 19.1mm,
right = 19.1mm,
top = 25.4mm,
bottom = 25.4mm
}
\hyphenpenalty = 1000% 断字设置,值越⼤,断字越少。
\setmainfont{Ubuntu Mono}% 设置全局英⽂字体
\setlength{\parindent}{2em}% 缩进
\setlength{\parskip}{1ex} % 段间距
% 定义表格对齐⽅式
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\section{表格绘制综合⽰例⼀}
\begin{center}
表2-5 Neo Pascal词法定义
\begin{longtable}{m{6mm}|m{157mm}}
\noalign{\hrule height 1pt}
标识符 & 以字母形状,后跟字母与数字的任意组合的字符串。\newline ID:001\\
\hline
运算符 & Neo Pascal⼀共包含13个运算符,分别是:\newline
\begin{tabular}{|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|}
\hline
\rowcolor{LightGray}\textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词}\normalfont\\      \hline
\rowcolor{white} 016 & = & 017 & := & 018 & < & 019 & <> & 020 & <=\\
\hline
021 & > & 022 & >= & 023 & + & 024 & - & 025 & *\\
svg实例\hline
026 & / & 027 & \^ & 028 & @ & & & & \\
\hline
\end{tabular}\newline\\
\hline
界符 & Neo Pascal⼀共包含9个界符,分别是:\newline
\begin{tabular}{|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|}
\hline
\rowcolor{LightGray}\textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词}\normalfont\\      \hline
\rowcolor{white} 007 & . & 008 & $($ & 009 & $)$ & 010 & ; & 011 & ,\\
\hline
012 & : & 013 & .. & 014 & $[$ & 015 & $]$ &  & \\
\hline
\end{tabular}\newline\\
\hline
关键字 & 关键字是特殊的标识符,必须符合标识符的定义。Neo Pascal⼀共包含54个关键字,分别是:
\newline
\begin{tabular}{|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|C{6mm}|C{17mm}|}
\hline
\rowcolor{LightGray}\textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词} & \textbf{ID} & \textbf{单词}\normalfont\\      \hline
\rowcolor{white} 040 & ASM & 041 & AND & 042 & ARRAY & 043 & BEGIN & 044 & BOOLEAN\\
\hline
045 & BYTE & 046 & BREAK & 047 & CARDINAL & 048 & CASE & 049 & CHAR\\
\hline
050 & CONST & 051 & CONTINUE & 052 & DIV & 053 & DO & 054 & DOWNTO\\
\hline
055 & ELSE & 056 & END & 057 & FILE & 058 & FOR & 059 & FORWARD\\
\hline
060 & FUNCTION & 061 & GOTO & 062 & IF & 063 & IN & 064 & INTEGER\\
\hline
065 & LABEL & 066 & LONGWORD & 067 & MOD & 068 & NIL & 069 & NOT\\
\hline
070 & OF & 071 & OR & 072 & PROCEDURE & 073 & PROGRAM & 074 & REAL\\
\hline
075 & RECORD & 076 & REPEAT & 077 & SET & 078 & SHL & 079 & SHORTINT\\
\hline
080 & SHR & 081 & SINGLE & 082 & SMALLINT & 083 & STRING & 084 & THEN\\
\hline
085 & TO & 086 & TYPE & 087 & UNTIL & 088 & USES & 089 & VAR\\
\hline
090 & WITH & 091 & WHILE & 092 & WORD & 093 & XOR & & \\
\hline
\end{tabular}\newline\\
\hline
\multirow{3}{5mm}{常量} &
\begin{tabular}{m{60mm}m{80mm}}
字符串常量, & ID:002。例:'I am a boy.'\\
整数常量, & ID:003。例:324,32\\
普通形式实型常量, & ID:004。例:43.53,62.034\\
带+/-号的科学记数形式实型常量, & ID:005。例:4312E-23\\
不带+/-号的科学记数形式实型常量, & ID:006。例:41.09E12\\
\end{tabular}\\
\noalign{\hrule height 1pt}
\end{longtable}
\end{center}
\end{document}
效果
说明
1. 虽然这个例⼦中的表格并未跨页,但我还是在这⾥包含了宏包longtable,以备将来需要使⽤时可以查到怎么实现。
2. 单元格垂直居中使⽤的是m{...}命令来实现,但这个命令并⾮总是好⽤。本例中最后的“常量”⼀格中,⽣成后的⽂字就是偏上的,所以这⾥使⽤了\multirow命令来⼿
⼯调整垂直居中。
3. 使⽤\rowcolor{LightGray}命令把⾏的背景⾊修改后,后⾯各⾏都会跟着改变,所以再次使⽤此命令把背景⾊改回⽩⾊。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。