Tabellenüberschrift in der Mitte der Tabelle

Tabellenüberschrift in der Mitte der Tabelle

Ich habe es geschafft, eine Tabelle zu erstellen, aber die Überschrift (oder jeder Text, den ich danach hinzufüge) steht in der Mitte der Tabelle, als ob die Tabelle nach der zweiten Zeile enden würde. Ich konnte keine ähnliche Frage finden, also beschloss ich, sie mir selbst zu stellen.

Ich habe die Überschrift und etwas Text nach der Tabelle hinzugefügt. Beide verhalten sich so, als ob die Tabelle nach der zweiten Zeile endete.

Ohne die Überschrift oder einen Text davor/danach sieht die Tabelle fast so aus, wie ich es mir wünsche.

So sieht die Tabelle ohne Überschrift aus

\documentclass{report}
\usepackage{multirow}


\begin{document}

This is some text and here is a reference to Table \ref{table:mytable}. 


\begin{table} [h]  
       \centering
       \begin{tabular} {c c c} \\
        \textbf{Column A} & \textbf{Column B} & \textbf{Column C} \\ 

    \hline

    \multirow{3}{*}{\textbf{Test1}} 
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}} \\ 

    \multirow{6}{*}{\textbf{Test2}} 
    & \multicolumn{2}{c}{ \multirow{6}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}} \\

    \multirow{9}{*}{\textbf{Test3}}
    & \multirow{9}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}
    & \multirow{9}{*}{\shortstack[l]{line1 \\  line2 \\  line3}} \\ 

    \multirow{12}{*}{\textbf{Test4}} 
    & \multirow{12}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}
    & \multirow{12}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}    \\ 

       \end{tabular}
       \label{table:mytable}
        \caption{This is the caption.} 

 \end{table}

\end{document}

Als Randbemerkung: Aus irgendeinem Grund funktioniert die Referenzierung auch nicht richtig. Ich wollte, dass der Satz lautet

[...] hier ein Verweis auf Tabelle 1.

und stattdessen heißt es nur

[...] hier ist ein Verweis auf Tabelle .

Ich konnte es \refmit anderen Tabellen verwenden, aber nicht mit dieser.

Antwort1

\multirow{<nrows>}{<width>}{<text>}verteilt Text (vertikal) über <nrows>Zeilen mit der Breite <width>. Wenn <width>als angegeben wird *, wird die natürliche Breite von verwendet <text>. Wenn Sie also beispielsweise verwenden, \multirow{12}{*}{<...>}möchten Sie diese bestimmte Zelle über 12 Zeilen verteilen. Dies ist offensichtlich falsch, da TestXSie jeweils nur über 3 Zeilen verteilen möchten.

Hier ist eine etwas andere Implementierung (da Sie nicht brauchenmultirowhier) mitmakecell:

Bildbeschreibung hier eingeben

\documentclass{report}

\usepackage{makecell}

\begin{document}

This is some text and here is a reference to Table~\ref{table:mytable}. 

\begin{table} [h]  
  \centering
  \begin{tabular} {c c c}
    \textbf{Column A} & \textbf{Column B} & \textbf{Column C} \\ 
    \hline
    \textbf{Test1} 
      & \makecell{line1 \\ line2 \\ line3}
      & \makecell{line1 \\ line2 \\ line3} \\ 
    \textbf{Test2} 
      & \multicolumn{2}{c}{\makecell{line1 \\ line2 \\ line3}} \\
    \textbf{Test3}
      & \makecell{line1 \\ line2 \\ line3}
      & \makecell{line1 \\ line2 \\ line3} \\ 
    \textbf{Test4} 
      & \makecell{line1 \\ line2 \\ line3}
      & \makecell{line1 \\ line2 \\ line3}
  \end{tabular}
  \caption{This is the caption.} 
  \label{table:mytable}
\end{table}

\end{document}

Beachten Sie, wie das \labelkommtnach \captionum die richtige \refErektion zu erreichen. SieheWarum muss die Bezeichnung einer Umgebung nach der Überschrift erscheinen?.

Antwort2

Wie ich im Kommentar zur Frage schreibe, haben Sie missverstanden, wiemehrreihigberechnet die Zeilenspanne, aber das lässt sich leicht beheben. Fügen Sie einfach 3 an allen Stellen hinzu (dhstatt 6, 9 und 12).

Um die falsch platzierte Überschrift zu korrigieren, müssen Sie, wenn Sie Ihren Originalcode verwenden möchten, nach der -Zeile zusätzlichen Platz hinzufügen, um genügend Platz für die überspannten Zeilen zu schaffen. Da Sie drei Zeilen überspannen, können Sie entweder zwei Zeilen ( ) oder eine ähnliche Menge zusätzlicher Höhe beim Befehl ( multirowhinzufügen . Ich habe zwei s hinzugefügt, damit Sie Platz haben, der drei Zeilen entspricht.&&\\end-of-row\\[<height>]\normalbaselineskip

Tatsächlich können Sie diese Tabelle ohne zusätzliche Pakete setzen. Definieren Sie ein \parboxund platzieren Sie die drei Zeilen darin. Sie müssen eine Höhe und Breite festlegen, damit der \parboxAbstand richtig ist. Sie können die Parameter für Höhe und Breite ändern, um einen Abstand zu erhalten, der zu Ihrem Dokument passt. Wenn Sie das vermeiden möchten, verwenden Sie makecell. Ich habe eine Tastenkombination definiert, \pbum den Tippaufwand zu reduzieren.

Der sicherste Platz für das Etikett istinnender Befehl „capture“. Dann wird es nicht fehlschlagen.

Tisch mit\parbox

Bildbeschreibung hier eingeben

\documentclass{report}
%\usepackage{multirow}
\newcommand{\pb}[1]{\parbox[c][40pt][c]{0.2\linewidth}{\centering #1}}

\begin{document}

\begin{table}
\caption{This is the caption.\label{table:mytable}} 
       \centering
       \begin{tabular} {@{}c c c@{}} \\
\bfseries Column A & \bfseries Column B                  & \bfseries Column C \\\hline
\bfseries Test1         & \pb{line1 \\  line2 \\  line3}    & \pb{line1 \\  line2 \\  line3} \\
\bfseries Test2         & \multicolumn{2}{c}{\pb{line1 \\  line2 \\  line3}} \\
\bfseries Test3         & \pb{line1 \\  line2 \\  line3}    & \pb{line1 \\  line2 \\  line3}\\
\bfseries Test4         & \pb{line1 \\  line2 \\  line3}    & \pb{line1 \\  line2 \\  line3}\\\hline
\end{tabular}
\end{table}
\end{document}

Tisch mit\multirow

Bildbeschreibung hier eingeben

\documentclass{report}
\usepackage{multirow}


\begin{document}

This is some text and here is a reference to Table \ref{table:mytable}. As you see, the table is a float, and since you have available space, it is place at top of the page. Do not mess around with placing floats before you have finished all creative writing. Everting you do, will be invalid when you add more text. 


\begin{table}
       \centering
       \begin{tabular} {c c c} \\
        \textbf{Column A} & \textbf{Column B} & \textbf{Column C} \\ 
    \hline
\multirow{3}{*}{\textbf{Test1}} 
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}} \\[2\normalbaselineskip]  % Add more space
\multirow{3}{*}{\textbf{Test2}} 
    & \multicolumn{2}{c}{ \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}} \\[2\normalbaselineskip] \multirow{3}{*}{\textbf{Test3}}
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}} \\[2\normalbaselineskip]
\multirow{3}{*}{\textbf{Test4}} 
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}
    & \multirow{3}{*}{\shortstack[l]{line1 \\  line2 \\  line3}}    \\[2\normalbaselineskip]
\end{tabular}
\caption{This is the caption.\label{table:mytable}} 
 \end{table}

\end{document}

Antwort3

Ein Variantencode, der ebenfalls auf basiert makecell, kombiniert mit multirow– und booktabs, um etwas Abstand um die Regeln herum hinzuzufügen. Ich habe etwas vertikalen Abstand hinzugefügt, um die Gruppen von drei Zeilen zu trennen. Außerdem erfordert ein Verweis auf einen \labelBefehl (nach der Überschrift), damit er funktioniert.

\documentclass{report}
\usepackage{multirow}
\usepackage{makecell, booktabs}
\renewcommand{\theadfont}{\normalsize\bfseries}


\begin{document}

This is some text and here is a reference to Table \ref{table:mytable}.

\begin{table} [h]
       \centering
       \begin{tabular} {c c c} \\
        \textbf{Column A} & \textbf{Column B} & \textbf{Column C} \\
    \midrule
    \multirowthead{3}{Test1} & line1 & line1 \\
        & line2 & line2 \\
        & line3 & line 3\\
\addlinespace
    \textbf{Test2} & \multicolumn{2}{c}{\makecell{line1 \\ line2 \\ line3}} \\
\addlinespace
    \multirowthead{3}{Test 3} & line1 & line1 \\
        & line2 & line2 \\
        & line3 & line 3\\
\addlinespace
    \multirowthead{3}{Test 4} & line1 & line1 \\
        & line2 & line2 \\
        & line3 & line 3\\
\bottomrule
       \end{tabular}
       \label{table:mytable}
        \caption{This is the caption.}\label{table:mytable}

 \end{table}

\end{document} 

Bildbeschreibung hier eingeben

verwandte Informationen