\addxcontentsline bewirkt, dass ein Teil der MDFramed-Box vor dem Seitenumbruch geleert wird

\addxcontentsline bewirkt, dass ein Teil der MDFramed-Box vor dem Seitenumbruch geleert wird

Ich verwende mdframedzum Umgeben einer eigenen Umgebung namens {myenv}(für dieses Beispiel). Und diese Umgebung ist als Trio-Liste eingerichtet und wird \addxcontentslinezum Schreiben einer Liste dieser Umgebungen verwendet (ich verwende sie docnur für MWE).

Problem

Problem

Die Box ist über mehrere Seiten verteilt, sodass der obere Teil der ersten Seite leer ist.

Code/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}

Es passiert nicht, wenn ich

  • Entfernen (oder kommentieren Sie) die mit markierte Zeile[A] oder
  • Entfernen (oder kommentieren) Sie die mit markierte Zeile [B](bin mir hier allerdings nicht sicher)oder
  • Reihenfolge der Zeilen ändern [A]und[B]

Des Weiteren habe ich das Problem folgendermaßen zurückverfolgt \protected@write: Beim Löschen (Auskommentieren) [C]verschwinden auch die beiden mit dem Problem markierten Zeilen.

Fragen

  1. Was ist die beste Lösung für dieses Problem? Kann ich [A]ohne [B]Probleme wechseln?
  2. Handelt es sich hierbei um einen Fehler, mdframedder gemeldet werden sollte?

Anmerkungen

  • Die ursprüngliche Definition von {myenv}ist komplexer.
  • Ich bin mir dessen bewusst , kann sie \newmdenvjedoch \newmdtheoremenvnicht hierfür verwenden.
  • Das Verschieben der Zeile [A]vorher \listmacht keinen Unterschied.

Antwort1

Dasselbe würde passieren, wenn \color{green}anstelle von ausgegeben wird . Versuchen Sie, zuerst nach \addxcontentsline { toc } { myenv } [ X ] { }auszugeben .\leavevmode\item\relax

verwandte Informationen