weitere Probleme mit Longtable und Multirow

weitere Probleme mit Longtable und Multirow

in meiner vorherigen Frage gab es ein paar Workarounds, die mein unmittelbares Problem gelöst haben. Ich habe jedoch das Gefühl, dass diese beiden Pakete nicht gut zusammenarbeiten. Das Hinzufügen einer weiteren Spalte und das Platzieren mehrerer Zeilen in unterschiedlichen Zeilensätzen führen dazu, dass die Workarounds nicht funktionieren.

Hier ist der Code:

\documentclass{article}

\usepackage{longtable}
\usepackage {multirow}
\usepackage{lipsum}

\begin{document}

\begin{center}
\begin{longtable}{p{.15\textwidth} p{.15\textwidth} p{0.32\textwidth} p{0.32\textwidth}}
\hline 
1 & 1.1 & \multirow{2}{.32\textwidth} {\lipsum[1] } & some text \\ \cline{4-4}
 & 1.2 & & \multirow{2}{.32\textwidth}{\lipsum[2]} \\ \cline{2-3}  
& 1.3 & some other text  & \\ \hline
 2 & 2.1 & some more text & \lipsum[3] \\ \hline 
 \end{longtable}
\end{center}

\end{document}

Und das Ergebnis ist eindeutig nicht gut. Für jede Hilfe bei der Suche nach einer allgemeinen Lösung für dieses Problem wäre ich sehr dankbar.

Ausgabe des vorherigen Codes

Antwort1

Die Antwort auf Ihre vorherige (fast gleiche) Frage löst Ihr Problem. Wenn nicht, ist Ihre Frage nicht klar.

Übernahme von @sveinung'sAntwort:

\documentclass{article}
\usepackage{makecell, longtable}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}

\begin{document}
    \begin{longtable}{|p{\dimexpr0.07\textwidth-2\tabcolsep-1.25\arrayrulewidth}
                      |p{\dimexpr0.07\textwidth-2\tabcolsep-1.25\arrayrulewidth}
                      |p{\dimexpr0.43\textwidth-2\tabcolsep-1.25\arrayrulewidth}
                      |p{\dimexpr0.43\textwidth-2\tabcolsep-1.25\arrayrulewidth}
                      |}
    \hline
1   & 1.1   & \lipsum[1]        & some text     \\ \cline{2-4}
    & 1.2   &                   & \lipsum[2]    \\ \cline{2-4}
    & 1.3   & some other text   &               \\ 
    \hline
2   & 2.1   & some more text    & \lipsum[3]    \\ 
    \hline
    \end{longtable}
\end{document}

Notiz: \multirow[<number of rows>{...}{cell's contents}bestimmt seine Höhe nicht anhand der Anzahl der Zeilen (die es enthält). Es erstreckt sich über die angegebene Anzahl von Zeilen in der angrenzenden Spalte. Wenn ihre Höhe kleiner als die Höhe der multirowZelle ist, wird ihr Inhalt auf die angrenzenden Zellen überlaufen, wie Sie in Ihrer Frage beobachten.

Bitte lesen Sie die Paketdokumentation, wie @ebcontrol in seinem Kommentar vorschlägt.

Bearbeiten:Die Spaltenbreite ist nun korrigiert und die Breite longtablebeträgt exakt \textwidth.

Antwort2

AchtungIch habe den Code für Beispiel 2 aktualisiert

Ich verwende kürzere Blindtexte, damit die Beispiele besser lesbar sind. Sehen Sie sich die beiden beigefügten Beispiele an und sagen Sie uns (mir), wie sie von dem abweichen, was Sie erreichen möchten. Insbesondere Beispiel 2 erfordert Handarbeit:

Beispiel 1

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{longtable, booktabs, array}
\usepackage{lipsum}

\newcolumntype{O}{p{\dimexpr(0.15\linewidth-1.5\tabcolsep)}}
\newcolumntype{Q}{p{\dimexpr(0.35\linewidth-1.5\tabcolsep)}}


%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\newcommand{\mytexti}{This is a dummy text, however I have an issue using multirow and longtable. The content in the multirow cell is very large, and it goes well beyond the limit of the "non-multirowed" rows. LaTeX ignores that and starts the following row just behind those rows, therefore overwriting the content.}

\newcommand{\mytextii}{This is a shorter dummy text, LaTeX ignores me!}

\begin{document}

\begin{longtable}{@{}OOQQ@{}}
   \toprule\addlinespace[1ex]
1 & 1.1 & \mytexti         & some text \\ \cmidrule{4-4}
  & 1.2 &                  & \mytextii \\ \cmidrule{3-3}  
  & 1.3 & some other text  &           \\ \bottomrule \addlinespace[1ex]
2 & 2.1 & some more text   & \mytexti  \\ \bottomrule 
\end{longtable} 

\end{document}

Beispiel 2

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{longtable, booktabs, array, multirow, bigstrut}
\usepackage{lipsum}

    \newcolumntype{O}{p{\dimexpr(0.15\linewidth-1.5\tabcolsep)}}
    \newcolumntype{Q}{p{\dimexpr(0.35\linewidth-1.5\tabcolsep)}}


%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\newcommand{\mytexti}{This is a dummy text, however I have an issue using multirow and longtable. The content in the multirow cell is very large, and it goes well beyond the limit of the "non-multirowed" rows. LaTeX ignores that and starts the following row just behind those rows, therefore overwriting the content.}

\newcommand{\mytextii}{This is a shorter dummy text, LaTeX ignores me!}


\begin{document}

\begin{longtable}{@{}OOQQ@{}}
   \toprule\addlinespace[1ex]
1   &                                   & \mytexti          & some text\strut   \hrule  \\ 
    & \multirow[t]{-14}{=}{1.1\\ 1.2}   & some other text   & \multirow[t]{-12.9}{=}{\mytextii}     \\ \cmidrule{3-3}
    & 1.3   & some other text   &                                                               \\
\bottomrule \addlinespace[1ex]  
 2  & 2.1   & some more text    & \mytexti                                                      \\ \bottomrule 

 \end{longtable} 

\end{document}

verwandte Informationen