由于某种原因,以下代码无法编译。有人能解释一下原因吗?
\documentclass[letterpaper]{article}
\usepackage{enumitem}
\usepackage{fullpage}
\usepackage[dvipsnames,table]{xcolor}
\usepackage{amsmath,amsthm,amsfonts,amssymb,hhline,mathtools}
\usepackage{tikz,background,array,multicol,bbding}
\usepackage{enumitem}
\usepackage{cancel,array,booktabs}
\usepackage{framed}
\setlist[enumerate]{before=\setupmodenumerate}
\newif\ifmoditem
\newcommand{\setupmodenumerate}{%
\global\moditemfalse
\let\origmakelabel\makelabel
\def\moditem##1{\global\moditemtrue\def\mesymbol{##1}\item}%
\def\makelabel##1{%
\origmakelabel{\ifmoditem\llap{\mesymbol\enspace}\fi##1}%
\global\moditemfalse}%
}
\setlist[enumerate]{before=\setupcmodenumerate}
\newif\ifcitem
\newcommand{\setupcmodenumerate}{%
\global\citemfalse
\let\origmakelabel\makelabel
\def\citem##1{\global\citemtrue\def\cecolor{##1}\item}%
\def\makelabel##1{%
\origmakelabel{\ifcitem\color{\cecolor}\fi##1}%
\global\citemfalse}%
}
\begin{document}
\begin{enumerate}
\moditem{*} test
\citem{blue}
\end{enumerate}
\end{document}
答案1
第二个\setlist
命令用第一个命令覆盖before=\setupmodenumerate
给定的内容,因此\moditem
未定义。您必须合并这两个设置。最小示例:
\documentclass{article}
\usepackage{enumitem,color}
\setlist[enumerate]{before=\setupmodenumerate}
\newif\ifmoditem
\newif\ifcitem
\newcommand{\setupmodenumerate}{%
\global\moditemfalse
\global\citemfalse
\let\origmakelabel\makelabel
\def\moditem##1{\global\moditemtrue\def\mesymbol{##1}\item}%
\def\citem##1{\global\citemtrue\def\cecolor{##1}\item}%
\def\makelabel##1{%
\origmakelabel{\ifmoditem\llap{\mesymbol\enspace}\else\ifcitem\color{\cecolor}\fi\fi##1}%
\global\moditemfalse\global\citemfalse}%
}
\begin{document}
\begin{enumerate}
\moditem{*} test
\citem{blue} test
\end{enumerate}
\end{document}