使用 adjustbox 将背景颜色限制为 varwidth 的较窄宽度?

使用 adjustbox 将背景颜色限制为 varwidth 的较窄宽度?

我想用一个带有背景颜色的框架包裹每个表格,并将其标题包含在框架内。对于框架,我已经调整了Martin Scharrer 的回答到 ”在图片和标题周围添加边框”,它使用adjustbox带有varwidth键的环境。框架本身是完美的,特别是框的宽度缩小(从最大值\textwidth)以适合表格和标题。

但是,当我添加一个bgcolor键来设置背景颜色时,背景的宽度似乎是整个\textwidth,但我希望颜色保持在框架的范围内。 即,我希望背景遵守varwidth确定的较窄宽度。 (MWE 和输出如下。)

我该怎么做呢?

\documentclass{article}
\usepackage{adjustbox,xcolor}
\begin{document}
\begin{table}
    \begin{adjustbox}{varwidth=\textwidth,padding=1em,frame=1pt,center,bgcolor=pink }
        \centering
        \begin{tabular}{|cc|}
            \hline
            x   &   y   \\
            a   &   b   \\
            \hline
        \end{tabular}
        \caption{Caption}
        \label{tab:my_label}
    \end{adjustbox}
\end{table}
\end{document}

在此处输入图片描述

更新

在评论中跟进@jon 的观察:事实证明,背景颜色覆盖的范围取决于键=值对列表中的位置bgcolor

在下面的新图表中,我展示了三种结果:

  • bgcolor处于位置 #1 或 #2 (bgcolor=pink,varwidth=\textwidth,padding=1em,frame=0.4pt,center),或者{varwidth=\textwidth,bgcolor=pink,padding=1em,frame=0.4pt,center}
  • bgcolor处于位置 #3 或 #4 {varwidth=\textwidth,padding=1em,bgcolor=pink,frame=0.4pt,center},或者{varwidth=\textwidth,padding=1em,frame=0.4pt,bgcolor=pink,center}
  • bgcolor处于最后位置{varwidth=\textwidth,padding=1em,frame=0.4pt,center,bgcolor=pink}

在此处输入图片描述

我在文档中找不到任何adaptbox解释顺序bgcolor重要性的内容。但可以讲的故事可以合理化上述模式:

  • bgcolor位于 之前时padding,它适用于最内层(预填充)内容;
  • bgcolor位于 之后时padding,适用于“填充”内容;
  • bgcolor位于 之后时center,它适用于最宽的区域,即,在该行已填充到左右边缘之后。

(如果马丁·沙雷尔 (Martin Scharrer) 可以就此事究竟发生了什么发表看法,那就太好了。

答案1

该解决方案使用varwidth\fcolorbox

\documentclass{article}
\usepackage{varwidth,xcolor}
\begin{document}
\begin{table}
  \centering
  \fcolorbox{black}{pink}{\begin{varwidth}{\textwidth}
        \centering
        \begin{tabular}{|cc|}
            \hline
            x   &   y   \\
            a   &   b   \\
            \hline
        \end{tabular}
        \caption{Caption}
        \label{tab:my_label}
    \end{varwidth}}
\end{table}
\end{document}

演示

答案2

我回答自己的问题只是为了结束这个问题。正如评论者 @jon 敏锐地观察到的那样:键值的顺序很重要;具体来说,就是bgcolor在列表中的位置。

在我的例子中,我需要的覆盖范围bgcolor(a) 包括应用之后的区域padding,但 (b)center包括应用之前的区域。因此,以下两种 key=value 顺序中的任一种都可以:

  • bgcolor处于位置 #3 或 #4 {varwidth=\textwidth,padding=1em,bgcolor=pink,frame=0.4pt,center},或者{varwidth=\textwidth,padding=1em,frame=0.4pt,bgcolor=pink,center}

bgcolor虽然我没有在文档中发现顺序的重要性adjustbox,但作者adjustboxMartin Scharrer 已经另行向我确认这是一个功能(而不是错误):

嗨,这是个功能。您可以在背景颜色后添加其他键,例如添加另一个框架或边距或旋转,然后根据需要添加另一个背景。这样,您就有了最大的自由。

相关内容