在 baposter 中创建带有背景的盒子

在 baposter 中创建带有背景的盒子

我正在使用 baposter 包制作海报。可以有彩色框,但我希望每个框都有自己的背景(而不是海报本身)。可以吗?

答案1

请求的内容并不十分清楚,所以我猜想您希望在框内容下放置一张背景图片。我的方法是获取该内容并将其放置在\vbox宏中

\setbox0=\vbox{<content>}

然后,我将背景图像放在其下方\ooalign,如下所示

\ooalign{\includegraphics[width=\textwidth,height=\ht0]{example-image-A}\cr\box0}

我不是baposter用户,所以不知道是否可以消除背景图像周围的小边框,甚至不知道如何在一张海报上放置多个框。

这是我的 MWE。我刚刚从这个问题中抓取了一些框内容:适合作为多张图片中节点的背景

\documentclass[b3paper]{baposter}
\usepackage{tikz,amsmath,graphicx}
\usetikzlibrary{fit}

\begin{document}
\begin{poster}{bgColorOne=blue!20!white,background=plain}{}{}{}{}
 \begin{posterbox}[textborder=none,headerborder=none,span=3,boxColorOne=white]{title}
\setbox0=\vbox{%
  \begin{align}
  x &=
  \begin{tikzpicture}[remember picture]
   \node[circle,fill=red,minimum width=1cm] {}; 
  \end{tikzpicture}
  +
  \begin{tikzpicture}[remember picture]
   \node[circle,fill=cyan,minimum width=1cm] (first node) {}; 
  \end{tikzpicture}
  \\
  y &=
  \begin{tikzpicture}[remember picture]
   \node[circle,fill=red,minimum width=1cm] {}; 
  \end{tikzpicture}
  +
  \begin{tikzpicture}[remember picture]
   \node[circle,fill=cyan,minimum width=1cm] (second node) {}; 
  \end{tikzpicture}
  +
  \begin{tikzpicture}[remember picture]
   \node[circle,fill=green,minimum width=1cm] (third node) {}; 
  \end{tikzpicture}
 \end{align}
 \begin{tikzpicture}[remember picture,overlay]
  \node[draw=red,fill=yellow,fill opacity=0.8,fit=(first node) (second node) (third node),rectangle] {};
 \end{tikzpicture}%
}
\ooalign{\includegraphics[width=\textwidth,height=\ht0]{example-image-A}\cr\box0}
 \end{posterbox}
\end{poster}
\end{document}

在此处输入图片描述


verbatimbox我实际上可以通过加载我的包并调用\ooalignas 来删除背景图像周围的 5pt 边框

\ooalign{\addvbuffer[-5pt]{\makebox[\textwidth]{\includegraphics%
  [width=\dimexpr\textwidth+10pt\relax,height=\dimexpr\ht0+10pt\relax]{%
  example-image-A}}}\cr\box0}

很可能有更好的方法来实现这一点。

在此处输入图片描述

答案2

以下是我的情况中用户需要的简短版本。我会在这里发布以供将来参考

\usepackage{etoolbox}
\makeatletter
\define@cmdkey[ba]{posterbox}[baposter@box@]{background}{}
\presetkeys[ba]{posterbox}{
  background=white,
}{}
\patchcmd{\poster}{%
text justified] {\usebox{\baposter@content}};% <- important
}{
text justified, fill=\baposter@box@background] 
{\usebox{\baposter@content}};
}{\typeout{patched}}{\typeout{not patched}}
\makeatother

这使得能够使用

\headerbox{title}{options}{contents}

选项现在可以包含 background=color

相关内容