Usando makecell no tabu: incompatibilidade com os pacotes tcolorbox e todonotes

Usando makecell no tabu: incompatibilidade com os pacotes tcolorbox e todonotes

Estou com um problema ao usar o pacote tabucom makecell e tcolorboxe todonotes. Este é meu código de exemplo mínimo:

\documentclass[a4paper]{scrreprt}
\usepackage{tcolorbox}
\usepackage{todonotes}
\usepackage{tabu,makecell}
\begin{document}
\noindent \begin{tabu} to \textwidth {@{}lXX}
normal line & A & B \\
line with makecell & \makecell[tl]{A\\C} & \makecell[tl]{B\\D\\E}
\end{tabu}
\todo{To Do: ...}
\end{document}

Quando excluo a linha com \makecell, tudo funciona. Além disso, quando excluo os pacotes todoe tcolorbox(e claro, a linha com \todocomando, mas mantenho a linha com \makecell), tudo funciona.

O problema ocorre quando incluo pelo menos um dos pacotes tcolorboxou arquivos todonotes. Então recebi o seguinte erro:

./test-tabu.tex:9: Improper \prevdepth.
\tabu@verticalspacing ...tempdimc \the \prevdepth 
                                              \@tempdima \dimexpr \ht 
\t...
l.9 \end{tabu}

Também a solução detabu: Erro desde a atualizaçãonão ajudou.

Alguém sabe como consertar isso?

Aqui está a primeira linha do arquivo de log:

Este é o pdfTeX, versão 3.14159265-2.6-1.40.19 (TeX Live 2018) (formato pré-carregado = pdflatex)

Responder1

O novo pacote LaTeX3tabularrayé uma alternativa ao tabupacote desatualizado:

\documentclass[a4paper]{scrreprt}

\usepackage{tcolorbox}
\usepackage{todonotes}
\usepackage{tabularray}

\begin{document}

\noindent
\begin{tblr}{
  width = \textwidth,
  colspec = {@{}lXX},
}
  normal line        & A                   & B \\
  line with makecell & \SetCell{t,l}{A\\C} & \SetCell{t,l}{B\\D\\E} \\
\end{tblr}
\todo{To Do: ...}

\end{document}

insira a descrição da imagem aqui

Responder2

Aqui está o que você pode fazer com {NiceTabular}of nicematrix(compatível com tcolorboxe todonotes).

\documentclass[a4paper]{scrreprt}

\usepackage{tcolorbox}
\usepackage{todonotes}
\usepackage{nicematrix}

\begin{document}

\noindent
\begin{NiceTabular}{@{}lXX}
  normal line        & A                   & B \\
  line with makecell & \Block[t,l]{}{A\\C} & \Block[t,l]{}{B\\D\\E} \\
\end{NiceTabular}

\bigskip
\todo{To Do: ...}

\end{document}

Você precisa de várias compilações (porque nicematrixusa nós PGF/Tikz nos bastidores).

Saída do código acima

informação relacionada