枚举标签周围的彩色框

枚举标签周围的彩色框

我想要一个围绕枚举标签的彩色框。我的实际代码如下:

\documentclass{article}

\usepackage{tikz}
\usepackage{enumitem}

\newcommand{\fff}[1]{\tikz
  \node[
  inner sep=1.5pt,
  draw=blue,
  fill=blue,
  text=black,
  rounded corners=2pt]{#1};}

\begin{document}
\begin{enumerate}[label=\fff{\Alph*.}]
 \item text
\end{enumerate}

\fff{A.}
\end{document}

如您所见,此代码不起作用。但是,\fff如果不在标签规范内使用,该命令可以工作。

有谁知道这段代码有什么问题?

答案1

label包中的值enumitem是一个移动参数,因此您需要\protect您的命令(我也改变了基线):

\documentclass{article}

\usepackage{tikz}
\usepackage{enumitem}

\newcommand{\fff}[1]{\tikz[baseline=-0.65ex]
  \node[
  inner sep=1.5pt,
  draw=blue,
  fill=blue,
  text=black,
  rounded corners=2pt]{#1};}

\begin{document}
\begin{enumerate}[label=\protect\fff{\Alph*.}]
 \item text
\end{enumerate}

\fff{A.}
\end{document}

在此处输入图片描述

另一个选择是从一开始就将命令声明为强健的,这样您不必\protect每次在移动参数中使用它:

\documentclass{article}

\usepackage{tikz}
\usepackage{enumitem}

\DeclareRobustCommand{\fff}[1]{\tikz[baseline=-0.65ex]
  \node[
  inner sep=1.5pt,
  draw=blue,
  fill=blue,
  text=black,
  rounded corners=2pt]{#1};}

\begin{document}
\begin{enumerate}[label=\fff{\Alph*.}]
 \item text
\end{enumerate}

\fff{A.}
\end{document}

相关内容