表のデータが列をまたぐ

表のデータが列をまたぐ
% 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

発生している問題の 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

ここに、さらに 2 つ (3 つ) の可能な解決策があります。これらすべてにおいて、パッケージを使用して、表の幅をテキスト幅と同じにしました。また、booktabs のルールは垂直線とうまく連携しないため、コマンドtabularxを に置き換えました。代替案については、3 番目の例を参照してください。\cmidrule\cline

最初の表では、表の下に説明されている列ヘッダーに略語を使用しました。

ここに画像の説明を入力してください

\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}

2 番目の例では、テーブルを回転するためにパッケージ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)、不要な部分を削除します。大胆なヘッダー セルの内容の。7 つのデータ列は と呼ばれる列タイプを使用しますC。これは、列タイプを単純に中央揃えに変更したバージョンですX。特徴は、さまざまな列幅を簡単に許可できることです。唯一の制約は、7 つのC引数の合計が 、つまりこのタイプの列の数になる必要があること7です。幅の選択を導いた主要な書式設定の目標は、どのヘッダー セルにも 4 行を超えないようにすることでした。

ここに画像の説明を入力してください

\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}

関連情報