
É um problema conhecido tufte-*
e \sidenote
não \marginnote
será construído se usado dentro de mdframed
ambientes ou tcolorbox
ambientes. 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 mdframed
ou 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 sidenote
ou 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 tcolorbox
para fazer a primeira rodada de impressão. Então você quebra.
Dentro do tcolorbox
você pode deixar marginnote
e sidenote
suprimir @gobble
sua 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).