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配置しようとすると、同様のエラー メッセージがポップアップ表示されることがあります。tcolorboxlongtable

  • breakable
  • lines before break=X
  • および他のページ区切り関連の設定

これらの設定は、OP が提供した最小限の例には表示されませんが、他のユーザーがそのような設定を使用している環境を扱っていて、ここにたどり着く可能性があります (まさに私がここにたどり着いた方法です)。

ウルリケの答えも適用する必要があります!

関連情報