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 \ttfamily
fuente 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 \hbox
porque el texto no respeta estrictamente los límites del cuadro. Si pongo el segundo \BODY
dentro 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 ragged2e
paquete:
\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 \hyphenchar
es 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, varwidth
debe proporcionar el ancho de línea correcto; esto por supuesto necesita el environ
yvarwidth
.
\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 \hbox
los mensajes espurios.