使用 enumitem 和 \newcommand 宏进行枚举

使用 enumitem 和 \newcommand 宏进行枚举
% !TeX spellcheck = he_IL
\documentclass[titlepage=false,12pt,titlepage]{scrreprt}

%\pagenumbering{roman}

\usepackage{ucs}   %  unicode support
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
%-----
\usepackage{anyfontsize}
\usepackage{t1enc}

\usepackage[english,russian,hebrew]{babel}

\usepackage{helvet}
\renewcommand{\familydefault}{\rmdefault}



\usepackage[inline, shortlabels]{enumitem}

\renewcommand{\labelenumi}{)\textrm{\arabic{enumi}}(}
\renewcommand{\labelenumii}{\alph{enumii}(}


\setlist{topsep = 2 pt, partopsep = 1 pt, parsep = 0 pt, itemsep = 2 pt}



\usepackage{graphicx}
\usepackage{wasysym}




\newcommand{\mybigbox}{\APLbox}
\newcommand{\mybox}{\APLbox}
%------------------------------------------------------

\newcommand{\BoxArabicEnum}{)1( \APLbox}


\usepackage[left= 1cm, right= 1.5 cm, top=1cm,bottom=1 cm, footskip=0.5cm]{geometry}


\begin{document}

\L{First enumerate:}
\begin{enumerate}[ \BoxArabicEnum ]

\item  
a
\item
b
\item
c
\end{enumerate}

\L{Second enumerate:}

\begin{enumerate}[ )1( \APLbox ]

\item  
a
\item
b
\item
c
\end{enumerate}

\end{document}

%---------------------------------

结果如下:

编译结果

问题:为什么“第一次枚举:”与“第二次枚举:”不同,以及如何使用户定义的命令\BoxArabicEnum产生与直接替换相同的结果 )1( \APLbox

答案1

enumitem需要键值序列,因此不会扩展提供的可选参数。如果您决定使用此接口,则需要确保enumitem接收您提供的扩展版本。

下面我重新定义了enumerate扩展其可选参数。我还选择使用另一种打印方式,\APLbox即使用\fbox不可见的水平和垂直支柱(零宽度\rule):

在此处输入图片描述

\documentclass{article}

\usepackage[inline, shortlabels]{enumitem}

\renewcommand{\labelenumi}{(\textrm{\arabic{enumi}})}
\renewcommand{\labelenumii}{\alph{enumii})}

\usepackage{wasysym,letltxmacro}

\newcommand{\mybigbox}{\APLbox}
\newcommand{\mybox}{\APLbox}

\setlength{\fboxsep}{0pt}
\newcommand{\BoxArabicEnum}{(1) \protect\fbox{\protect\rule{.55em}{0pt}\protect\rule{0pt}{.7em}}}
%\renewcommand{\BoxArabicEnum}{(1) \protect\APLbox}

\LetLtxMacro\oldenumerate\enumerate
\let\endoldenumerate\endenumerate
\makeatletter
\renewenvironment{enumerate}[1][]
  {\begingroup\protected@edef\x{\endgroup\noexpand\begin{oldenumerate}[#1]}\x}
  {\end{oldenumerate}}
\makeatother

\begin{document}

First enumerate:
\begin{enumerate}[ \BoxArabicEnum ]
  \item a
  \item b
  \item c
\end{enumerate}

Second enumerate:
\begin{enumerate}[ (1) \APLbox ]
  \item a
  \item b
  \item c
\end{enumerate}

\end{document}

相关内容