Cuadro con sangría que se divide en varias páginas

Cuadro con sangría que se divide en varias páginas

Estoy haciendo un documento con ejercicios y correcciones. Me gustaría que las correcciones sean fácilmente destacables para que ningún alumno las lea por accidente y se estropee su ejercicio. He escrito un entorno para eso, el problema es que no se divide en varias páginas :/

\newenvironment{solution}%
{\par\rule{1ex}{1ex}
\hspace{\stretch{1}}
\textbf{Solution}
\hspace{\stretch{1}}
\rule{1ex}{1ex}\par%
\hspace{2ex}% indent everything by 2ex
%\begin{myindentpar}{7ex}
%\quote \quote
\begin{minipage}{0.95\linewidth}% stop just before the right squares
\begin{framed}}% put a black frame
%\addtolength{\leftskip}{4cm}
%\begin{adjustwidth}{6cm}{}
%\begin{longtable}{|p{1.1\linewidth}|}
%\hline}
{\end{framed}\end{minipage}
%{\\\hline\end{longtable}
%\end{adjustwidth}
%\end{myindentpar}
%\endquote \endquote
\par
\rule{1ex}{1ex}\hspace{\stretch{1}}
\hspace{\stretch{1}}\rule{1ex}{1ex}\par}

He dejado a propósito mis intentos comentados por si os sirve de inspiración.

Si encuentras una solución que cambie un poco el diseño, todavía estoy muy interesado :)

Respuesta1

El problema en su código es que encerró su mdframedinterior a minipagey minipages no admite saltos de página. Supongo que usaste minipagepara ubicar los pequeños cuadrados en las esquinas del marco; Esto, sin embargo, no es necesario y puedes localizarlos usando singleextra, firstextra, sin arruinar la posibilidad de saltos de página dentro del entorno.

Un pequeño ejemplo en el que definí dos estilos: el primero, sin cuadrados y el segundo, usando los cuadrados (no estaba seguro del largo exacto que deseabas usar, pero puedes hacer los ajustes necesarios fácilmente):

\documentclass{article}
\usepackage[a5paper]{geometry}% just for the example
\usepackage[framemethod=tikz]{mdframed}
\usepackage{tikzpagenodes}
\usepackage{lipsum}% just to generate text for the example
\usetikzlibrary{calc}

\mdfdefinestyle{mystyle}{%
  leftmargin=2ex,
  innertopmargin=2\baselineskip,
  skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
  skipbelow={\dimexpr0.5\baselineskip+\topskip\relax},
  firstextra={%
    \path let \p1=(P), \p2=(O) 
    in node[font=\bfseries] at ([yshift=-2ex]0.5*\x1-\x2,\y1) {Solution};
  }
}
\mdfdefinestyle{mysquare}{%
  leftmargin=0pt,
  rightmargin={\dimexpr4pt+2ex\relax},
  innertopmargin=2\baselineskip,
  skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
  skipbelow={\dimexpr0.5\baselineskip+\topskip\relax},
  singleextra={%
  \path let \p1=(P), \p2=(O) 
    in node[font=\bfseries] at ([yshift=-2ex]0.5*\x1-\x2,\y1) {Solution};
  \fill[black] ([xshift=2pt,yshift=2pt]P) rectangle ++(1ex,1ex);
  \fill[black] ([xshift=-2pt,yshift=-2pt]O) rectangle ++(-1ex,-1ex);
  \fill[black] ([xshift=-2pt,yshift=2pt]O|-P) rectangle ++(-1ex,1ex);
  \fill[black] ([xshift=2pt,yshift=-2pt]O-|P) rectangle ++(1ex,-1ex);
  },
  firstextra={%
  \path let \p1=(P), \p2=(O) 
    in node[font=\bfseries] at ([yshift=-2ex]0.5*\x1-\x2,\y1) {Solution};
  \fill[fill=black] ([xshift=2pt,yshift=2pt]P) rectangle ++(1ex,1ex); 
  \fill[black] ([xshift=-2pt,yshift=2pt]O|-P) rectangle ++(-1ex,1ex);
  },
  secondextra={%
  \fill[fill=black] ([xshift=2pt,yshift=-2pt]O-|P) rectangle ++(1ex,-1ex); 
  \fill[black] ([xshift=-2pt,yshift=-2pt]O) rectangle ++(-1ex,-1ex);
  }
}
\newmdenv[style=mystyle]{solution}
\newmdenv[style=mysquare]{ssolution}

\begin{document}

\lipsum[1]
\begin{solution}
\lipsum[2-3]
\end{solution}
\lipsum[2]
\begin{ssolution}
\lipsum[1-2]
\end{ssolution}
\lipsum[2]

\end{document}

ingrese la descripción de la imagen aquí

información relacionada