我想要一个围绕枚举标签的彩色框。我的实际代码如下:
\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}