tcolorbox 内で手動改ページを作成する

tcolorbox 内で手動改ページを作成する

新しいページを挿入したいのですがtカラーボックス環境ですが、次の例では\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ページ)ここで、スキン パラメータをそれぞれ と に設定して、コマンド間 に2 つの別個のtcolorbox環境を作成します。\newpageskin=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}

関連情報