
私は、 (この例では)とmdframed
呼ばれる独自の環境を囲むためにを使用しています{myenv}
。この環境はトリオ リストとして設定されており、これらの環境のリストを書き込むために を使用しています( MWE にのみ\addxcontentsline
使用しています)。doc
問題
ボックスはページをまたいで分割されており、最初のページの上部は空のままになっています。
コード/MWE
\documentclass{scrbook}
\usepackage{xparse}
\usepackage[framemethod = TikZ]{mdframed}
\ExplSyntaxOn\makeatletter
% define a style
\mdfdefinestyle { mystyle } {
backgroundcolor = yellow,
innertopmargin = 0.55\baselineskip,
skipabove = 1\baselineskip \@plus 1ex,
}
% define the environment
\NewDocumentEnvironment { myenv } { } {
\list { } { }
\item \relax
\addxcontentsline { toc } { myenv } [ X ] { }% <---------------- [A]
{ \bfseries My~Env~No.~X }% <----------------------------------- [B]
\par \nopagebreak
} {
\endlist
}
% souround it with an md frame
\surroundwithmdframed[ style = mystyle ] { myenv }
%% for testing
%\long\def\protected@write#1#2#3{%
% \begingroup
% \let\uthepage\relax
% #2%
% \let\protect\@unexpandable@protect
% \edef\reserved@a{\write#1{#3}}% <------+---------------------- [C]
% \reserved@a% <-------------------------'
% \endgroup
% \if@nobreak\ifvmode\nobreak\fi\fi
%}
\ExplSyntaxOff\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1] \vspace{110mm} \lipsum[2]
\begin{myenv}
\lipsum*[2]
\end{myenv}
\end{document}
私が
- マークされた行を削除(またはコメントアウト)します。
[A]
または - マークされた行を削除(またはコメントアウト)します
[B]
(ただし、これについてはよくわかりません)または - 行の順序を入れ替え
[A]
て[B]
さらに、問題を次のように追跡しました。削除 (コメント アウト) すると、問題が\protected@write
マークされている 2 行も消えます。[C]
質問
- この問題の最善の解決策は何ですか? 問題なく切り替えることはできます
[A]
か[B]
? mdframed
これは報告すべきバグでしょうか?
ノート
- の元の定義は
{myenv}
より複雑です。 \newmdenv
とについては知っています\newmdtheoremenv
が、これには使用できません。[A]
前の行を移動して\list
も違いはありません。
答え1
\color{green}
の代わりに を使用した場合も同じ結果になります\addxcontentsline { toc } { myenv } [ X ] { }
。\leavevmode
の後にまず を発行してみてください\item\relax
。