带有 tcolorbox 的框架大小:boxrule 是否与框架宽度相同?

带有 tcolorbox 的框架大小:boxrule 是否与框架宽度相同?

我尝试了两种替代方法来定义我的盒子框架的宽度tcolorbox。我mybox使用命令定义了一个frame code,并将其与命令的结果进行了比较boxrule=4pt

\documentclass[][1]{article}
\usepackage{lipsum}
\usepackage[skins]{tcolorbox}
\newtcolorbox{mybox}[1][]{empty,frame code={\draw[line width=4pt, gray!50] (frame.south east) rectangle (frame.north west);}}
\begin{document}

\begin{tcolorbox}[boxrule=4pt,sharp corners,colframe=gray!50,colback=white]
\lipsum[2]
\end{tcolorbox}

\begin{mybox}
\lipsum[3]
\end{mybox}

\end{document}

我期望得到相同的结果。但是, 定义的框frame code稍大一些,并且超过了\textwidth

在此处输入图片描述

有没有办法定义框架,使得两种情况下的框架尺寸相同?

答案1

\draw使用命令时,线的中心点将位于您提供的坐标上。

因此,该选项frame code={\draw[line width=4pt, gray!50] (frame.south east) rectangle (frame.north west);}将绘制一条 4pt 宽度的线,其左侧为 2pt frame.south east,右侧为 2pt。由于和frame.south east位于frame.nort west的边界上\textwidth,因此您的框比预期宽 4pt。

改变此行为的一个选项是根据边框线的宽度移动框架代码矩形的角。类似于 frame code={\draw[red, line width=2mm]([shift={(.5\pgflinewidth,-.5\pgflinewidth)}]frame.north west) rectangle ([shift={(-.5\pgflinewidth,.5\pgflinewidth)}]frame.south east);}

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}

\begin{document}
\lipsum[1]
\begin{tcolorbox}[enhanced, sharp corners, boxrule=2mm]
\lipsum[2]
\end{tcolorbox}
\begin{tcolorbox}[enhanced, sharp corners, boxrule=2mm, 
frame code={\draw[red, line width=2mm]([shift={(.5\pgflinewidth,-.5\pgflinewidth)}]frame.north west) rectangle ([shift={(-.5\pgflinewidth,.5\pgflinewidth)}]frame.south east);}]
\lipsum[2]
\end{tcolorbox}
\begin{tcolorbox}[enhanced, sharp corners, boxrule=2mm, 
frame code={\draw[red, line width=2mm, opacity=.5](frame.north west) rectangle (frame.south east);}]
\lipsum[2]
\end{tcolorbox}
\end{document}

在此处输入图片描述

答案2

在以下输出中添加结果width=\linewidth-4pt,center的定义mybox,两个框的宽度相同,并且与文本宽度完全相同(红线表示文本块/边距):

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}
\usepackage[skins]{tcolorbox}
\newtcolorbox{mybox}[1][]{empty,frame code={\draw[line width=4pt, gray!50] (frame.south east) rectangle (frame.north west);}, width=\linewidth-4pt,center}
\begin{document}

\begin{tcolorbox}[boxrule=4pt,sharp corners,colframe=gray!50,colback=white]
\lipsum[2]
\end{tcolorbox}

\begin{mybox}
\lipsum[3]
\end{mybox}

\end{document}

相关内容