Largura de múltiplas colunas em tabela longa

Largura de múltiplas colunas em tabela longa

Como defino a largura de várias colunas em células longtable? Se você executar meu MWE, verá que a primeira linha da minha tabela longa excede os limites da página.

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

Responder1

Você tem sorte, porque o pacote longtableregistra a largura das colunas no .auxarquivo. Isso pode ser usado para calcular a largura das duas primeiras colunas.

Macro \GetLongtableWidthsextrai as larguras do próximo arquivo longtable. É chamado um pouco antes \begin{longtable}. Dentro da pespecificação \wdcalé usada. O primeiro argumento é uma largura mínima usada se as larguras ainda não estiverem no .auxarquivo. Esta largura deverá ser menor ou no máximo igual à largura final. O segundo argumento de \wdcalrecebe uma expressão. \wdcol<colnum>é substituído pela largura da coluna <colnum>. Como a especificação da coluna p{...}não \multicolumn suprime \tabcolsep(à esquerda e à direita da coluna), dois \tabcolsepprecisam ser subtraídos.

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

Resultado

informação relacionada