% Table generated by Excel2LaTeX from sheet 'Sheet1'
\documentclass{article}
\usepackage{tabularx,booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Add caption}
\begin{tabular}{|p{3em}|p{5em}|p{4em}|p{5em}|p{5em}|p{4em}|p{4em}|p{4em}|}
\hline
\multirow{2}{*}{\textbf{Mobility Model}}
& \multicolumn{7}{c}{\textbf{Parameter}} \\
\cmidrule{2-8}& \textbf{Basic Description} & \textbf{Adaptability for AANETs} & \textbf{Support to higher node mobility and Frequent topology updates} & \textbf{Safety parameters} & \textbf{Mechanical and aerodynamic constraint} & \textbf{Degree of Randomness} & \textbf{Applications} \\
\hline
\end{tabular}%
\label{tab:addlabel}%
\end{table}%
\end{document}
答案1
您遇到的问题之一是 pdfLaTeX 从不将段落的第一个单词连字符化。列中单元格的内容p
构成一个段落,这是 TeX 特定意义上的术语。
启用某些单元格中第一个单词的连字符连接的方法 — — “Adaptability” 和 “Mechanical” 是主要候选 — — 是插入一个看起来有些虚假的\hspace{0pt}
。在下面的代码中,这是通过设置新的列类型来实现的,称为P
,该p
列将其内容设置为右对齐而不是完全对齐,同时仍然允许连字符连接,即使是单元格中的第一个单词。
\documentclass{article}
\usepackage[letterpaper,margin=1in]{geometry} % set suitable page parameters
\usepackage[english]{babel}
\usepackage{array,ragged2e}
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash\hspace{0pt}}p{#1}}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Add caption}
\label{tab:addlabel}
\begin{tabular}{|P{4.5em}|P{5em}|P{5em}|P{5em}|%
P{5em} |P{4em}|P{4em}|P{4em}|}
\hline
\textbf{Mobility Model}
& \multicolumn{7}{c|}{\textbf{Parameter}} \\
\cline{2-8}
& \textbf{Basic Description}
& \textbf{Adaptability for AANETs}
& \textbf{Support to higher node mobility and Frequent topology updates}
& \textbf{Safety parameters}
& \textbf{Mechanical and aerodynamic constraint}
& \textbf{Degree of Randomness}
& \textbf{Applications} \\
\hline
\end{tabular}
\end{table}
\end{document}
答案2
这里还有另外两 (三) 种可能的解决方案。在所有这些解决方案中,我都使用了包tabularx
来使表格与文本宽度一样宽。我还用替换了命令\cmidrule
,\cline
因为 booktabs 的规则与垂直线配合得不好。有关替代方案,请参阅第三个示例。
在第一个表中,我使用了列标题的缩写,如下表所示:
\documentclass{article}
\usepackage{tabularx}
\usepackage{multirow}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Add caption}
\begin{tabularx}{\textwidth}{|p{1.5cm}|X|X|X|X|X|X|X|}
\cline{1-8}
\textbf{Mobility Model} & \multicolumn{7}{c|}{\textbf{Parameter}} \\
\cline{2-8}
& \textbf{BD} & \textbf{AA} & \textbf{SF} & \textbf{SP} & \textbf{MC} & \textbf{DR} & \textbf{AP} \\
\cline{1-8}
\multicolumn{8}{p{\textwidth}}{\small BD: Basic Description, AA: Adaptability for AANETs, SF: Support to higher node mobility and Frequent topology updates, SP: Safety parameters, MC: Mechanical and aerodynamic constraint, DR: Degree of Randomness, AP: Applications}
\end{tabularx}%
\label{tab:addlabel}%
\end{table}%
\end{document}
在第二个例子中,我使用了包sidewaystable
中的rotating
命令来旋转表格:
\documentclass{article}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{rotating}
\usepackage{ragged2e}
\newcolumntype{R}{>{\RaggedRight\let\newline\\\arraybackslash\hspace{0pt}}X}
\begin{document}
\begin{sidewaystable}[htbp]
\centering
\caption{Add caption}
\begin{tabularx}{\textwidth}{|R|R|R|R|R|R|R|R|}
\hline
\textbf{Mobility Model} & \multicolumn{7}{c|}{\textbf{Parameter}} \\
\cline{2-8}
& \textbf{Basic Description}
& \textbf{Adaptability for AANETs}
& \textbf{Support to higher node mobility and Frequent topology updates}
& \textbf{Safety parameters}
& \textbf{Mechanical and aerodynamic constraint}
& \textbf{Degree of Randomness} & \textbf{Applications} \\
\hline
\end{tabularx}%
\label{tab:addlabel}%
\end{sidewaystable}%
\end{document}
在最后一个示例中,我删除了所有垂直线,并用 booktabs 中的规则替换了水平线。我还删除了列标题中的粗体,因为它可能会分散注意力:
\documentclass{article}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Add caption}
\begin{tabularx}{\textwidth}{p{1.5cm}XXXXXXX}
\toprule
Mobility Model & \multicolumn{7}{c}{Parameter} \\
\cmidrule{2-8}
& BD & AA & SF & SP & MC & DR & AP \\
\bottomrule
\multicolumn{8}{p{\textwidth}}{\small BD: Basic Description, AA: Adaptability for AANETs, SF: Support to higher node mobility and Frequent topology updates, SP: Safety parameters, MC: Mechanical and aerodynamic constraint, DR: Degree of Randomness, AP: Applications}
\end{tabularx}%
\label{tab:addlabel}%
\end{table}%
\end{document}
答案3
(将此答案与第一个答案分开添加,因为解决方法完全不同)
您的表格似乎没有设置为完全覆盖文本块的可用宽度。如果这是我的表格,我会切换到环境tabularx
(将整体宽度设置为\textwidth
),并删除不必要的大胆的标题单元格内容。七个数据列采用一种称为的列类型C
,它只是X
列类型的修改版、居中版本。一个特点是它可以直接允许不同的列宽;唯一的限制是 7 个C
参数的总和必须等于7
,即此类型的列数。指导宽度选择的主要格式目标是任何标题单元格中的行数不超过四行。
\documentclass{article}
\usepackage[letterpaper,margin=1in]{geometry} % set suitable page parameters
\usepackage[english]{babel}
\usepackage{tabularx,ragged2e,booktabs}
\newcolumntype{L}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
\newcolumntype{C}[1]{>{\Centering\arraybackslash%
\hspace{0pt}\hsize=#1\hsize\linewidth=\hsize}X}
\usepackage[skip=0.333\baselineskip]{caption} % optional
\newcommand\mytab[1]{\smash{%
\begin{tabular}[t]{@{}l@{}} #1 \end{tabular}}}
\begin{document}
\begin{table}[htbp]
\setlength\tabcolsep{3pt} % default value: 6pt
\caption{Add caption}
\label{tab:addlabel}
\small
\begin{tabularx}{\textwidth}{@{} L
C{0.8}C{1}C{1.5}C{0.8}C{1}C{0.9}C{1} @{}} % 7 args sum to 7
\toprule
\mytab{Mobility\\Model} & \multicolumn{7}{c@{}}{Parameters} \\
\cmidrule(l){2-8}
& Basic Description
& Adaptability for AANETs
& Support for higher node mobility and frequent topology updates
& Safety parameters
& Mechanical and aero\-dynamic constraint
& Degree of randomness
& Applications \\
\midrule
blabla & blabla & blabla & blabla & blabla & blabla & blabla & blabla \\
blabla & blabla & blabla & blabla & blabla & blabla & blabla & blabla \\
blabla & blabla & blabla & blabla & blabla & blabla & blabla & blabla \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}