设置文本背景颜色*不使用* mdframed 或 tcolorbox

设置文本背景颜色*不使用* mdframed 或 tcolorbox

这是一个已知问题,tufte-*如果在环境或es 中使用\sidenote,则\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}

解释

基本思想是首先使用 打印一次文本tcolorbox,但抑制任何sidenotemarginnote,并使用与背景相同的颜色来隐藏文本。

然后我们打印真实的文本,其顶部有活动侧注和边注。

现在,我指望带有侧注上标的版本和不带有侧注上标的版本的测量值非常相似,因此虽然两个文本并不完全相同,但它们应该占用大致相同的垂直空间,所以你就可以解决这个问题。

为了实现这一点,你可以用一台机器tcolorbox进行第一轮打印。然后你把它粉碎。

在里面,tcolorbox您可以让marginnotesidenote@gobble抑制它们的功能。最后再打印相同的文本即可。

为了更容易使用,您可以将所有内容包装在 Environ 中。

输出看起来像这样(图像稍微过时了;我在代码中做了一些调整,使其更加合适)。

在此处输入图片描述

相关内容