Mehrspaltige Breite in Longtable

Mehrspaltige Breite in Longtable

Wie stelle ich die mehrspaltige Breite in Longtable-Zellen ein? Wenn Sie mein MWE ausführen, werden Sie sehen, dass die erste Zeile meiner Longtable die Seitenbegrenzungen überschreitet.

\documentclass[11pt,a4paper,oneside]{report}
\usepackage{setspace}
\usepackage{array}
\usepackage{covington}
\usepackage[danish,english]{babel}
\usepackage{longtable}
\usepackage{caption}
\usepackage{multirow}

\begin{document}


\begin{longtable}{Rp{9cm}}
\caption{Example}\\
\endfirsthead
\caption[]{(continued)}\\
\endhead
\endlastfoot
\multicolumn{2}{l}{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}\\
\\
\textsc{Lorem}&"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."\\
{\dag} \textsc{Ipsum}&"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."\\
\end{longtable}

\end{document}

Antwort1

Sie haben Glück, denn das Paket longtablezeichnet die Breite der Spalten in der .auxDatei auf. Damit lässt sich die Breite der ersten beiden Spalten berechnen.

Das Makro \GetLongtableWidthsextrahiert die Breiten der nächsten longtable. Es wird direkt vor aufgerufen \begin{longtable}. Darin wird die pSpezifikation \wdcalverwendet. Das erste Argument ist eine minimale Breite, die verwendet wird, wenn die Breiten noch nicht in der .auxDatei sind. Diese Breite sollte kleiner oder höchstens gleich der endgültigen Breite sein. Das zweite Argument von \wdcalnimmt einen Ausdruck an. \wdcol<colnum>wird durch die Breite der Spalte ersetzt <colnum>. Da die Spaltenspezifikation p{...}von (links und rechts der Spalte) \multicolumn nicht unterdrückt , müssen zwei abgezogen werden.\tabcolsep\tabcolsep

\documentclass[11pt,a4paper,oneside]{report}
\usepackage{setspace}
\usepackage{array}
\usepackage{covington}
\usepackage[danish,english]{babel}
\usepackage{longtable}
\usepackage{caption}
\usepackage{multirow}

\makeatletter
\newcommand*{\GetLongtableWidths}{%
  \begingroup
    \count@=\value{LT@tables}%
    \advance\count@\@ne
    \edef\tmp{LT@\romannumeral\count@}%
    \@ifundefined{\tmp}{%
    }{%
      \count@=\z@
      \def\LT@entry##1##2{%
        \advance\count@\@ne
        \expandafter
        \gdef\csname @wdcol\the\count@\endcsname{##2}%
      }%
      \csname\tmp\endcsname
    }%
  \endgroup
}
\newcommand*{\wdcol}[1]{%
  \@ifundefined{@wdcol\number#1}%
  {0pt}%
  {\csname @wdcol\number#1\endcsname}%
}
\newcommand*{\wdcal}[2]{%
  \ifdim\dimexpr(#2)\relax<0pt %
    \dimexpr(#1)\relax
  \else
    \dimexpr(#2)\relax
  \fi
}
\makeatother

\begin{document}

\GetLongtableWidths
\begin{longtable}{rp{9cm}}
\caption{Example}\\
\endfirsthead
\caption[]{(continued)}\\
\endhead
\endlastfoot
\multicolumn{2}{p{\wdcal{9cm}{\wdcol{1}+\wdcol{2}-2\tabcolsep}}}{Lorem ipsum dolor s
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat  
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id   
est laborum.}\\
\\
\textsc{Lorem}&"Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat  
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id   
est laborum."\\
{\dag} \textsc{Ipsum}&"Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum."\\
\end{longtable}

\end{document}

Ergebnis

verwandte Informationen