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環境放入 a 中時longtable,如果它使用以下任何選項,會彈出類似的錯誤訊息:

  • breakable
  • lines before break=X
  • 以及其他可能與分頁符號相關的設置

這些設定不會出現在 OP 提供的最小範例中,但其他用戶可能碰巧正在處理他們使用此類設定的環境並最終出現在這裡(這正是我最終出現在這裡的方式)。

烏爾里克的回答也應該適用!

相關內容