Definir a cor de fundo do texto *sem* mdframed ou tcolorbox

Definir a cor de fundo do texto *sem* mdframed ou tcolorbox

É um problema conhecido tufte-*e \sidenotenão \marginnoteserá construído se usado dentro de mdframedambientes ou tcolorboxambientes. Não estou encontrando uma solução alternativa para isso, e a maioria das postagens sobre o assunto sugere que não existe.

O que eu quero é simplesmente colocar um belo fundo cinza atrás de alguns parágrafos em um arquivo tufte-handout. Isso pode ser feitosem mdframedou tcolorbox?

EDITAR: exemplo 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}

Falha ao construir com! LaTeX Error: Float(s) lost.

Responder1

Aqui está um truque estúpido que pode terbastantede bugs, mas parece funcionar em parágrafos curtos, longe das quebras 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}

Explicação

A ideia básica é primeiro imprimir o texto uma vez usando tcolorbox, mas suprimir qualquer sidenoteou marginnote, com o texto da mesma cor do fundo para ocultá-lo.

Então imprimimos orealtexto, com nota lateral ativa e nota de margem em cima dele.

Agora, conto que a medição da versão com os sobrescritos das notas laterais e da versão sem sejam muito semelhantes, portanto, embora os dois textos não sejam exatamente iguais, eles devem ocupar aproximadamente a mesma quantidade de espaço vertical e para que você possa obter acabar com isso.

Para implementar isso, você pode simplesmente usar a tcolorboxpara fazer a primeira rodada de impressão. Então você quebra.

Dentro do tcolorboxvocê pode deixar marginnotee sidenotesuprimir @gobblesua função. Você termina imprimindo o mesmo texto novamente.

Para facilitar o uso você pode embrulhar tudo dentro de um Environ.

A saída é mais ou menos assim (a imagem está um pouco desatualizada; fiz alguns ajustes no código para melhorar um pouco o ajuste).

insira a descrição da imagem aqui

informação relacionada