在 tcolorbox 中建立手動分頁符

在 tcolorbox 中建立手動分頁符

我想在其中插入一個新頁面顏色盒環境,但以下範例顯示它忽略該\newpage命令:

\documentclass[11pt]{book}

\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}

\newtcolorbox{activitybox}{%
    breakable,
    enhanced,
    colback=white,
    colframe=black,
    coltitle=white,
    title={\bfseries Title}
}

\begin{document}

\begin{activitybox}
    \lipsum[1]
    \newpage
    \lipsum[1]
\end{activitybox}

\end{document}

該文件建議執行此操作的唯一方法是建立一個假突破(第 373 頁)我在命令之間創建兩個獨立的tcolorbox環境\newpage,皮膚參數分別設定為skin=enhancedfirstskin=enhancedlast

\documentclass[11pt]{book}

\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}

\newtcolorbox{activitybox}[1][]{%
    breakable,
    enhanced,
    colback=white,
    colframe=black,
    coltitle=white,
    #1
}

\begin{document}

\begin{activitybox}[title=Title,skin=enhancedfirst]
    \lipsum[1]
\end{activitybox}
\newpage
\begin{activitybox}[skin=enhancedlast]
    \lipsum[1]
\end{activitybox}

\end{document}

這個想法的問題是新頁面可能需要放置在環境中。然後,這些必須提前關閉並再次打開,同時確保環境狀態繼續之前的狀態。這些環境中也可能存在不應呼叫的進一步開始和結束定義,因為環境尚未真正結束並且仍在頁面上繼續。

另一個解決方案是利用break at (第 355 頁)參數將tcolorbox在給定長度處中斷。這在我的情況下是不可用的,因為環境的數量tcolorbox會達到數百個,每次編輯文件都需要重新計算每個break at參數,而這只有在完全渲染文件之後才能手動測量新的長度。

在較低級別,當出現以下情況時,可以進行分頁:breakable (第 351 頁)已啟用且tcolourbox環境需要跨越多個頁面。是否可以在更高層級觸發分頁符號或至少用空白垂直空間填滿頁面的其餘部分?

答案1

你可以使用

\documentclass[11pt]{book}

\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}

\newtcolorbox{activitybox}[1][]{%
    breakable,
    enhanced,
    colback=white,
    colframe=black,
    coltitle=white,
    #1
}
\newcommand*{\fakebreak}{\par\vspace{\textheight minus \textheight}\pagebreak}


\begin{document}

\begin{activitybox}[title=Title]
    \lipsum[1]

    \fakebreak

    \lipsum[1]
\end{activitybox}

\end{document}

但請注意,結果是不同的,因為該框將被填充到頁面末尾!

如果您希望自動中斷有類似的行為,請使用選項height fixed for=first and middle

\documentclass[11pt]{book}

\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}

\newtcolorbox{activitybox}[1][]{%
    breakable,
    enhanced,
    colback=white,
    colframe=black,
    coltitle=white,
    #1
}
\newcommand*{\fakebreak}{\par\vspace{\textheight minus \textheight}\pagebreak}


\begin{document}

\begin{activitybox}[title=Title,height fixed for=first and middle]
    \lipsum[1]

    \fakebreak

    \lipsum[1-2]
    \parbox{\linewidth}{\lipsum[3-4]}% \parbox used to force an early page break
    \lipsum[5-7]
\end{activitybox}

\end{document}

相關內容