代码中不同部分对 fboxsep 的定义不同

代码中不同部分对 fboxsep 的定义不同

是否可以定义一个值\fboxsep用于\fbox,然后使用另一个值用于\colorbox

你能在本地定义这样的值吗?

答案1

您可以通过定义新的长度并修补相关的宏来使参数独立;这也会影响\fcolorbox

\documentclass{article}
\usepackage{color}
\usepackage{regexpatch}

\newlength{\colorboxsep}
\setlength{\colorboxsep}{10pt} % exaggerated

\makeatletter
\xpatchcmd*{\color@b@x}{\fboxsep}{\colorboxsep}{}{}
\makeatother

\begin{document}

\fbox{abc} \colorbox{red}{abc} \fcolorbox{black}{red}{abc}

\end{document}

您也可以使用etoolbox\patchcmd,但在这种情况下您需要

\makeatletter
\patchcmd{\color@b@x}{\fboxsep}{\colorboxsep}{}{}
\patchcmd{\color@b@x}{\fboxsep}{\colorboxsep}{}{}
\patchcmd{\color@b@x}{\fboxsep}{\colorboxsep}{}{}
\patchcmd{\color@b@x}{\fboxsep}{\colorboxsep}{}{}
\makeatother

在此处输入图片描述

相关内容