Cajas de colores que se dividen en páginas

Cajas de colores que se dividen en páginas

Estoy intentando crear un entorno/comando que me permita colocar comentarios en el texto. La idea es tener un cuadro de color que pueda dividirse en páginas y usar la \ttfamilyfuente con separación de palabras. También quiero usar cualquier estructura (tabla, enumerar, detallar, etc.) dentro de ella. Además, el ancho del cuadro es variable y el máximo es \linewidth. Mi MWE está debajo.

\documentclass{article} 

\usepackage{blindtext}
\usepackage[showframe]{geometry}

\usepackage{xcolor}
\usepackage{calc}
\usepackage{mdframed}
\usepackage{environ,varwidth}
\newsavebox\MyTempBox
\NewEnviron{mycomment}{%
\savebox\MyTempBox{%
\begin{varwidth}{\linewidth}
\BODY
\end{varwidth}}%
\begin{mdframed}
[topline=false,
rightline=false,
bottomline=false,
leftline=false,
innerleftmargin=1ex,
innerrightmargin=1ex,
innertopmargin=1ex,
innerbottommargin=1ex,
backgroundcolor=pink,
font=\ttfamily,
userdefinedwidth=\dimexpr\wd\MyTempBox\relax
]
\hyphenchar\font=\defaulthyphenchar\relax
\BODY
\end{mdframed}%
}%

\begin{document}

\begin{mycomment}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{mycomment}

\end{document}

Hasta aquí casi funciona, el problema es que genera mucho Overfull \hboxporque el texto no respeta estrictamente los límites del cuadro. Si pongo el segundo \BODYdentro de una minipágina

\begin{minipage}{\linewidth}
\BODY
\end{minipage}

Funciona mejor, pero pierdo la función de salto de páginas. Creo que una minipágina que pueda dividirse en páginas puede ser la solución.

No estoy adjunto al paquete mdframed. Por ejemplo,

\newcommand{\ccomment}[1]{%
\noindent\colorbox{pink}{\begin{varwidth}{\linewidth-1em}%
\ttfamily
\hyphenchar\font=\defaulthyphenchar\relax % enable hyphenation
#1
\end{varwidth}}}

Estaría bien para mí, pero una vez más no puedo usarlo para textos largos que puedan dividirse en varias páginas.

Gracias.

Respuesta1

simplemente usaría\RaggedRight del ragged2epaquete:

\documentclass{article}

\usepackage{blindtext}
\usepackage[showframe]{geometry}
\usepackage{xcolor}
\usepackage{ragged2e}
\usepackage{mdframed}

\newenvironment{mycomment}
  {\begin{mdframed}[topline=false,
    rightline=false,
    bottomline=false,
    leftline=false,
    innerleftmargin=1ex,
    innerrightmargin=1ex,
    innertopmargin=1ex,
    innerbottommargin=1ex,
    backgroundcolor=pink,
    font=\ttfamily,
   ]\hyphenchar\font=\defaulthyphenchar\RaggedRight}
  {\end{mdframed}\ttfamily\hyphenchar\font=-1 }

\begin{document}

\begin{mycomment}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{mycomment}

\end{document}

La configuración final \hyphenchares restaurar el valor predeterminado sin separación de palabras en la fuente de la máquina de escribir (dichas asignaciones son siempre globales).


Para acomodarlo, varwidthdebe proporcionar el ancho de línea correcto; esto por supuesto necesita el environyvarwidth .

\NewEnviron{mycomment}
  {\sbox0{\ttfamily\hbadness=10000
   \begin{varwidth}{\dimexpr\linewidth-2ex\relax}
   \BODY
   \end{varwidth}}%
   \begin{mdframed}[topline=false,
    rightline=false,
    bottomline=false,
    leftline=false,
    innerleftmargin=1ex,
    innerrightmargin=1ex,
    innertopmargin=1ex,
    innerbottommargin=1ex,
    backgroundcolor=pink,
    font=\ttfamily,
    userdefinedwidth=\dimexpr\wd0+2ex\relax
   ]\hyphenchar\font=\defaulthyphenchar\RaggedRight\BODY
   \end{mdframed}\ttfamily\hyphenchar\font=-1 }

Con\hbadness=10000 usted desactiva Underfull \hboxlos mensajes espurios.

información relacionada