我有一个彩色框(用 制作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 绘图不起作用,但似乎可以正常工作。如果您加载库,则可以使用框的remember
和overlay
选项。enhanced
skins
\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}