mdframed または tcolorbox を使用せずにテキストの背景色を設定する

mdframed または tcolorbox を使用せずにテキストの背景色を設定する

tufte-*これは既知の問題であり\sidenote、環境またはes\marginnote内で使用するとビルドされません。回避策は見つからず、このトピックに関するほとんどの投稿では回避策がないことが示唆されています。mdframedtcolorbox

私が望んでいるのは、単にいくつかの段落の後ろに素敵なグレーの背景を置くことですtufte-handout。これはできますか?それなし mdframedまたはtcolorbox

編集: 最小限の例

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

説明

基本的な考え方は、まず を使用してテキストを 1 回印刷しtcolorbox、 または を抑制してsidenotemarginnoteテキストを背景と同じ色にして非表示にすることです。

次に、本物アクティブなサイドノートと余白ノートが上部に表示されたテキスト。

さて、私は、サイドノートの上付き文字があるバージョンと、そうでないバージョンの寸法が非常に似ていることを期待しています。したがって、2 つのテキストはまったく同じではありませんが、ほぼ同じ量の垂直方向のスペースを占めるはずなので、これを実行できます。

tcolorboxこれを実装するには、 を使用して最初の印刷ラウンドを実行するだけです。その後、それを粉砕します。

内部でtcolorboxletmarginnotesidenoteto を@gobble使用してそれらの機能を抑制することができます。最後に同じテキストを再度印刷して終了します。

使いやすくするために、すべてを Environ 内にラップすることができます。

出力は次のようになります (画像は少し古くなっています。コードを少し調整して、より適合するようにしました)。

ここに画像の説明を入力してください

関連情報