Establecer el color de fondo del texto *sin* mdframed o tcolorbox

Establecer el color de fondo del texto *sin* mdframed o tcolorbox

Es un problema conocido tufte-*y \sidenoteno \marginnotese generará si se usa dentro de mdframedentornos o tcolorboxes. No encuentro una solución para eso y la mayoría de las publicaciones sobre el tema sugieren que no la hay.

Lo que quiero es simplemente poner un bonito fondo gris detrás de algunos párrafos en un archivo tufte-handout. Se puede hacer estosin mdframedo tcolorbox?

EDITAR: ejemplo mínimo

\documentclass[nobib,justified]{tufte-handout}

\usepackage{mdframed}

\newmdenv[
  linecolor=lightgray,
  linewidth=3pt,
  leftmargin=0pt,
  innerleftmargin=0pt,
  rightmargin=0pt,
  innerrightmargin=0pt
]{graybox}

\usepackage{lipsum}

\begin{document}

\begin{graybox}
\lipsum[1]
\marginnote{This is a marginnote}
\end{graybox}

\end{document}

No logra construir con! LaTeX Error: Float(s) lost.

Respuesta1

Aquí hay un truco un poco estúpido que puede tenermuchode errores, pero parece funcionar para párrafos cortos alejados de los saltos de página.

\documentclass{tufte-handout}
\usepackage{tcolorbox}
\usepackage{blindtext}

\usepackage{environ}

\makeatletter
\NewEnviron{grayground}{%
    \noindent\smash{\begin{tcolorbox}[colback=gray!20, colframe=gray!20, oversize, top=0pt, bottom=0pt, left=4pt, right=4pt, box align=top]
    \let\sidenote\@gobble
    \let\marginnote\@gobble
    \color{gray!20}\BODY
    \end{tcolorbox}}\par\BODY}
\makeatother

\begin{document}

\begin{grayground}
\blindtext\sidenote{\blindtext}\blindtext
\end{grayground}

\end{document}

Explicación

La idea básica es imprimir primero el texto una vez usando tcolorbox, pero suprimir cualquiera sidenoteo marginnote, con el texto del mismo color que el fondo para ocultarlo.

Luego imprimimos elrealtexto, con una nota al margen activa y una nota al margen encima.

Ahora, cuento con que las medidas de la versión con los superíndices de las notas al margen y la versión sin ellos sean muy similares, por lo que si bien los dos textos no son exactamente iguales, deberían ocupar aproximadamente la misma cantidad de espacio vertical y así puedes obtener lejos con esto.

Para implementar esto, puede usar a tcolorboxpara realizar la primera ronda de impresión. Luego lo aplastas.

En el interior tcolorboxse puede dejar marginnotey sidenotesuprimir @gobblesu función. Terminas imprimiendo el mismo texto nuevamente.

Para que sea más fácil de usar, puedes envolver todo dentro de un Environ.

El resultado se parece a esto (la imagen está ligeramente desactualizada; hice algunos ajustes en el código para que se ajuste un poco mejor).

ingrese la descripción de la imagen aquí

información relacionada