用图像框住彩色盒子

用图像框住彩色盒子

我有一个彩色框(用 制作tcolorbox),里面装着文字,我想给它加边框。不幸的是,我正在复制一种样式,所以不能使用普通边框。我想要的边框只在框的两侧,两端各有一个点。

(类似这个但是是黑色的)

我之前在这里看到过一些帖子说你可以将 tikz 绘图叠加在 之上tcolorboxes,但那行不通。如果我想要完成的事情无法实现,我最终会使用它,但我更喜欢使用图像。因为它是一个类,所以我希望它尽可能轻量。

有两个问题。首先,我不知道如何将图像放置在诸如 之类的东西上方tcolorbox。第二个问题是这些框的高度是可变的(基于文本)。我不想拉伸边框图像,因为我希望点保持圆形,但我希望实际边框部分拉长。

所以我的实际问题是:

1)如何将图形精确地定位在边框之后(以角为锚点)?

2)如何在不拉伸图像的情况下垂直缩放图像?


最小工作示例:

\documentclass[10pt,oneside,twocolumn]{book}
\usepackage{tcolorbox}
\usepackage{xcolor}
\usepackage{lipsum}

\definecolor{textbox}{HTML}{D5D2DD}

\newtcolorbox{textbox}{
  colframe=textbox,
  colback=textbox,
  top=1mm, bottom=1mm, left=1.5mm, right=1.5mm,
  arc=0mm,
}

\begin{document}
  \raggedright

  \lipsum[1]

  \hfill
  \begin{textbox}
    \lipsum[2]  
  \end{textbox}
  \hfill

  \lipsum[3]

  \hfill
  \begin{textbox}
    \lipsum[4-5]  
  \end{textbox}
  \hfill

  \lipsum[6] 

\end{document}

边界独立:

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}
    %\draw[help lines] (-1,-2) grid (1,2);

    \node[circle,fill=black,inner sep=1pt] at (0,2) {};
    \draw[thick] (0,2) -- (0,-2);
    \node[circle,fill=black,inner sep=1pt] at (0,-2) {};
  \end{tikzpicture}
\end{document}

答案1

您说叠加 tikz 绘图不起作用,但似乎可以正常工作。如果您加载库,则可以使用框的rememberoverlay选项。enhancedskins

\documentclass[10pt,oneside,twocolumn]{book}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\definecolor{textbox}{HTML}{D5D2DD}

\newtcolorbox{textbox}{
  enhanced,
  remember,
  colframe=textbox,
  colback=textbox,
  top=1mm, bottom=1mm, left=1.5mm, right=1.5mm,
  arc=0mm,
  overlay={
    \node (nw) [circle,fill=black,inner sep=1pt,xshift=4pt,yshift=-4pt]
      at (frame.north west) {};
    \node (sw) [circle,fill=black,inner sep=1pt,xshift=4pt,yshift=4pt]
      at (frame.south west) {};
    \node (ne) [circle,fill=black,inner sep=1pt,xshift=-4pt,yshift=-4pt]
      at (frame.north east) {};
    \node (se) [circle,fill=black,inner sep=1pt,xshift=-4pt,yshift=4pt]
      at (frame.south east) {};
    \draw[thick] (nw) -- (sw);
    \draw[thick] (ne) -- (se);
  }
}
\begin{document}
\raggedright

\lipsum[1]

\hfill
\begin{textbox}
  \lipsum[2]  
\end{textbox}
\hfill

\lipsum[3]

\hfill
\begin{textbox}
  \lipsum[4-5]  
\end{textbox}
\hfill

\lipsum[6] 
\end{document}

output

相关内容