Tabellendaten kreuzen die Spalte

Tabellendaten kreuzen die Spalte
% 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}

Antwort1

Eines der Probleme, auf die Sie stoßen, ist, dass pdfLaTeX das erste Wort eines Absatzes nie trennt. Der Inhalt einer Zelle in einer pSpalte bildet einen Absatz im TeX-spezifischen Sinne des Begriffs.

Um die Silbentrennung der ersten Wörter in einigen Zellen zu ermöglichen -- "Anpassbarkeit" und "Mechanisch" sind die besten Kandidaten --, muss ein etwas künstlich aussehendes eingefügt werden \hspace{0pt}. Im folgenden Code wird dies erreicht, indem ein neuer Spaltentyp namens eingerichtet wird P, pder seinen Inhalt rechtsbündig statt im Blocksatz setzt, aber dennoch die Silbentrennung erlaubt, sogar des ersten Wortes in der Zelle.

Bildbeschreibung hier eingeben

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

Antwort2

Hier sind zwei (drei) weitere mögliche Lösungen. In allen habe ich das tabularxPaket verwendet, um die Tabellen so breit wie die Textbreite zu machen. Ich habe auch den \cmidruleBefehl durch ersetzt \cline, da die Regeln von Booktabs nicht gut mit vertikalen Linien zusammenarbeiten. Eine Alternative finden Sie im dritten Beispiel.

Im ersten habe ich Abkürzungen für die Spaltenüberschriften verwendet, die unter der Tabelle erklärt werden:

Bildbeschreibung hier eingeben

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

Im zweiten Beispiel habe ich sidewaystableaus dem rotatingPaket verwendet, um die Tabelle zu drehen:

Bildbeschreibung hier eingeben

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

In diesem letzten Beispiel habe ich alle vertikalen Linien entfernt und die horizontalen Linien durch die Regeln von Booktabs ersetzt. Ich habe auch die Fettschrift aus den Spaltenüberschriften entfernt, da sie stören könnte:

Bildbeschreibung hier eingeben

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

Antwort3

(diese Antwort wird getrennt von der ersten hinzugefügt, da die Lösungsmethode ganz anders ist)

Ihre Tabelle scheint nicht so eingerichtet zu sein, dass sie die gesamte verfügbare Breite des Textblocks abdeckt. Wenn dies meine Tabelle wäre, würde ich zu einer tabularxUmgebung wechseln (mit einer Gesamtbreite von \textwidth) und die unnötigenfettgedrucktdes Inhalts der Kopfzellen. Die sieben Datenspalten verwenden einen Spaltentyp namens C, der einfach eine modifizierte, zentrierte Version des XSpaltentyps ist. Eine Besonderheit ist, dass es unkompliziert ist, unterschiedliche Spaltenbreiten zuzulassen; die einzige Einschränkung ist, dass die Summe der 7 CArgumente ergeben muss 7, was die Anzahl der Spalten dieses Typs ist. Ein Hauptformatierungsziel, das die Breitenauswahl leitete, war, nicht mehr als vier Zeilen in einer Kopfzelle zu haben.

Bildbeschreibung hier eingeben

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

verwandte Informationen