是否可以使用 TikZ 编写命令,在句子内部的一段文本周围生成一个小的圆形彩色框?我知道该\framedbox
命令会在一段文本周围产生一个矩形(但据我所知不是圆角矩形)。
我想人们也可以在使用框架框时调整背景颜色(使用以下答案中的提示这问题),但我认为它对其他因素(例如盒子的边缘宽度、圆度等)没有帮助。
下面的图片是为了回答这个问题而用 Inkscape 制作的。
答案1
直接使用TikZ
或tcolorbox
使用\tcbox
大量可配置设置。
如果这样的框出现多次,则使用 a\newtcbox
是合适的,在那里设置选项,然后说出\inlinebox{foo}
等等。
从直接使用可以看出,\tcbox
边距太宽,但看起来\inlinebox
更好看,那里的边距设置为left=...
和right=...
和boxsep=...
\documentclass{article}
\PassOptionsToPackage{svgnames,x11names,dvipsnames}{xcolor}
\usepackage[most]{tcolorbox}
\newtcbox{\inlinebox}[1][]{enhanced,
box align=base,
nobeforeafter,
colback=cyan,
colframe=Green4,
size=small,
left=0pt,
right=0pt,
boxsep=2pt,
#1}
\begin{document}
Hello \tcbox[enhanced,box align=base,nobeforeafter,colback=cyan,colframe=Green4,size=small]{World} -- what do you expect from the year \inlinebox{2019}?
\end{document}
答案2
另一个选项是tikzmark
,其选项比少tcolorbox
,但允许您连接不同的盒子并检测您所处的模式(文本与数学等)。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
Here is some text and \tikzmarknode[fill=cyan,fill
opacity=0.3,draw=green!60!black,thick,rounded corners,inner sep=2pt,text
opacity=1]{test}{something about relativity}.
\[\tikzmarknode[fill=cyan,fill
opacity=0.3,draw=green!60!black,thick,rounded corners,inner sep=2pt,text
opacity=1]{testeq}{E~=~m\,c^2}
\begin{tikzpicture}[overlay,remember picture]
\draw[thick,cyan,latex-latex] (test.-5) to[out=-90,in=0] (testeq.east);
\end{tikzpicture}\]
\end{document}