Установить цвет фона текста *без* mdframed или tcolorbox

Установить цвет фона текста *без* mdframed или tcolorbox

Это известная проблема, tufte-*и \sidenoteона \marginnoteне будет собираться, если используется внутри mdframedокружений или tcolorboxes. Я не нахожу обходного пути для этого, и большинство сообщений по теме предполагают, что его нет.

Я просто хочу сделать красивый серый фон позади некоторых абзацев в tufte-handout. Можно ли это сделать?без mdframedили tcolorbox?

EDIT: Минимальный пример

\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}

Не удается построить с! LaTeX Error: Float(s) lost.

решение1

Вот немного глупый хак, который может бытьмногоошибок, но, похоже, это работает для коротких абзацев вдали от разрывов страниц.

\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}

Объяснение

Основная идея состоит в том, чтобы сначала напечатать текст один раз, используя tcolorbox, но подавить любые sidenoteили marginnote, при этом текст должен быть того же цвета, что и фон, чтобы скрыть его.

Затем мы печатаемнастоящийтекст с активной заметкой на полях и примечанием на полях поверх него.

Теперь я рассчитываю на то, что размеры версии с надстрочными индексами и версии без них будут очень похожи, поэтому, хотя эти два текста не совсем одинаковы, они должны занимать примерно одинаковое количество вертикального пространства, и поэтому вы можете обойтись без этого.

Чтобы реализовать это, вы можете просто использовать a tcolorboxдля выполнения первого этапа печати. ​​Затем вы его разбиваете.

Внутри tcolorboxвы можете позволить marginnoteи sidenoteподавить @gobbleих функцию. Вы заканчиваете, печатая тот же текст снова.

Для удобства использования вы можете поместить все в Environ.

Вывод выглядит примерно так (изображение немного устарело; я внес некоторые изменения в код, чтобы сделать его более подходящим).

введите описание изображения здесь

Связанный контент