longtable 内的 tcolorbox 环境 — — 可能吗?

longtable 内的 tcolorbox 环境 — — 可能吗?

我尝试tcolorbox在环境中使用环境longtable。最小示例:

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{longtable}
\usepackage{lipsum}

\begin{document}
\begin{longtable}{|p{\linewidth}|}
\hline
\begin{tcolorbox}
\lipsum[3]
\end{tcolorbox}
\\
\hline
\end{longtable}
\end{document}

不幸的是,代码不能编译:

! Misplaced \noalign.                                                                                                            
\pagebreak ->\noalign                                                                                                            
                      {\ifnum `}=0\fi \@testopt {\LT@no@pgbk -}4                                                                 
l.11 \end{tcolorbox}                                                                                                             

是否有任何神奇的选项/技巧/解决方法可以做到这一点?

答案1

您必须重置before密钥。默认情况下,它包含 \pagebreak,当 longtable 重新定义 \pagebreak 时,您会收到错误。以下是编译结果:

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{longtable}
\usepackage{lipsum}

\begin{document}

\begin{longtable}{|p{\linewidth}|}
\hline
\begin{tcolorbox}[before={}]
\lipsum[3]
\end{tcolorbox}
\\
\hline
\end{longtable}
\end{document}

答案2

环境的一些非默认选项tcolorbox似乎也会导致此问题。具体来说,我遇到过类似的错误消息,当尝试将tcolorbox环境置于longtable使用以下任何选项的环境时,会弹出该错误消息:

  • breakable
  • lines before break=X
  • 以及可能的其他与分页符相关的设置

这些设置没有出现在 OP 提供的最小示例中,但其他用户可能恰好在处理使用此类设置的环境并最终到达这里(这正是我最终到达这里的原因)。

Ulrike 的回答也應該套用!

相关内容