具有可调整项目符号/项目的自定义列表

具有可调整项目符号/项目的自定义列表

我尝试创建一个自定义列表,如下面的代码所示,但我需要知道如何创建具有不同标签类型(阿拉伯语、罗马语等)的自定义列表,并更改特定标签的框架颜色(例如,\item[blue]而不是红色)?

目前,我为每种标签类型和每种标签颜色都创建了单独的列表,我不确定如何在列表定义中将颜色设为可选参数(例如\begin{boxati}[label=(red)])或更改标签类型\label=(\arabic*)

有人可以提供一个解决方案,让我能够在同一个列表定义中实现这两个或其中一个功能吗?

\documentclass{article}
\usepackage{amsmath,amsfonts}
\usepackage{tikz}

%==== Custom List : Roman ====%

\newcounter{boxlblcntri}  
\newcommand{\makeboxlabeli}[1]{\tikz[baseline=(char.base)]{
      \node[rounded corners=3pt, draw=red!50,thick,
      inner sep=4pt,minimum width =15pt,minimum height =15pt](char){#1};}}
\newenvironment{boxati}
{\begin{list}
      {\roman{boxlblcntri}}
      {\usecounter{boxlblcntri}
          \setlength{\labelwidth}{3.5em} 
          \setlength{\labelsep}{-12pt}   
          \setlength{\itemsep}{2pt}
          \setlength{\topsep}{6pt}
          \setlength{\leftmargin}{1.1cm}
          \setlength{\rightmargin}{0cm}
          \setlength{\itemindent}{0pt} 
          \let\makelabel=\makeboxlabeli
      }
  }
  {\end{list}}

\begin{document}

  \begin{boxati}
     \item 1
     \item 2
     \item 3
  \end{boxati}

\end{document}

列表示例:

罗马名单

答案1

您可以使用 expl3 的 keyval 机制:

\documentclass{article}
\usepackage{tikz}

%==== Custom List : Roman ====%

\ExplSyntaxOn
\keys_define:nn { boxkeyval } {
    counter .tl_set:N = \l__boxkeyval_counter_tl,
    counter .initial:n = roman,
    color   .tl_set:N = \l__keyval_color_tl,
    color   .initial:n = red       
}
\newcounter{boxlblcntri}  
\newcommand{\makeboxlabeli}[1]{%
    \tikz[baseline=(char.base)]{
        \node[
            rounded~corners=3pt, 
            draw=\l__keyval_color_tl!50,
            thick, 
            inner~sep=4pt, 
            minimum~width=15pt,
            minimum~height=15pt
        ] (char) {#1}; 
    }%
}
\NewDocumentEnvironment{boxati}{ O{} +b }{
    \group_begin:
        \keys_set:nn { boxkeyval } { #1 }
        \begin{list}
            {\csname\l__boxkeyval_counter_tl\endcsname{boxlblcntri}}
            {   
                \usecounter{boxlblcntri}
                \setlength{\labelwidth}{3.5em} 
                \setlength{\labelsep}{-12pt}   
                \setlength{\itemsep}{2pt}
                \setlength{\topsep}{6pt}
                \setlength{\leftmargin}{1.1cm}
                \setlength{\rightmargin}{0cm}
                \setlength{\itemindent}{0pt} 
                \let\makelabel=\makeboxlabeli
            }
        #2
        \end{list}
    \group_end:
}{}
\ExplSyntaxOff

\begin{document}

\begin{boxati}
    \item 1
    \item 2
    \item 3
\end{boxati}

\begin{boxati}[counter=arabic, color=blue]
    \item 1
    \item 2
    \item 3
\end{boxati}

\end{document}

在此处输入图片描述

相关内容