
Es un problema conocido tufte-*
y \sidenote
no \marginnote
se generará si se usa dentro de mdframed
entornos o tcolorbox
es. 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 mdframed
o 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 sidenote
o 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 tcolorbox
para realizar la primera ronda de impresión. Luego lo aplastas.
En el interior tcolorbox
se puede dejar marginnote
y sidenote
suprimir @gobble
su 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).