假设我有一系列项目。我想允许用户提供一个等于数字的键(此处名为“mainitems”)(默认值为 1,因为始终至少有 1 个主项目)。分配给 mainitems 键的项目数量将应用特殊格式。其余项目将应用其他格式。
代码
egreg 在此处提供了以下代码:https://tex.stackexchange.com/a/231077/13552
有一个动作函数可以将动作应用于每个项目。我的问题是关于将动作应用于指定数量的项目(将第 1-2 项加粗,并添加\hfill
例如,)。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\listset}{O{default}m}
{
\seq_clear_new:c { l_macmadness_list_#1_seq }
\seq_set_from_clist:cn { l_macmadness_list_#1_seq } { #2 }
}
\NewDocumentCommand{\listappend}{O{default}m}
{
\clist_map_inline:nn { #2 }
{
\seq_put_right:cn { l_macmadness_list_#1_seq } { ##1 }
}
}
\NewDocumentCommand{\listprint}{+O{}}
{
\group_begin:
\keys_set:nn { macmadness/lists } { #1 }
\macmadness_print_list:V \l__macmadness_list_name_tl
\group_end:
}
\seq_new:N \l_macmadness_list_default_seq
\tl_new:N \l__macmadness_list_lastitem_tl
\keys_define:nn { macmadness/lists }
{
name .tl_set:N = \l__macmadness_list_name_tl,
name .initial:n = default,
action .code:n = \cs_set_eq:NN \__macmadness_action:n #1,
action .initial:n = \use:n,
separator .tl_set:N = \l__macmadness_list_separator_tl,
separator .initial:n = { ,~ },
}
\cs_new_protected:Npn \macmadness_print_list:n #1
{
\seq_if_empty:cTF { l_macmadness_list_#1_seq }
{
$\langle$ \textit{empty~list} $\rangle$
}
{
% split off the last item
\seq_pop_right:cN { l_macmadness_list_#1_seq } \l__macmadness_list_lastitem_tl
% print the items followed by the separator
\seq_map_inline:cn
{ l_macmadness_list_#1_seq }
{
\__macmadness_action:n { ##1 } % the item
\l__macmadness_list_separator_tl % the separator
}
% print the last item
\__macmadness_action:n { \l__macmadness_list_lastitem_tl }
}
}
\cs_generate_variant:Nn \macmadness_print_list:n { V }
\ExplSyntaxOff
\newcommand{\addquotes}[1]{`#1'}
\newcommand{\inputlanguagefile}[1]{%
\input{UserManual_#1}%
}
\listset[languages]{de,da,en}
\begin{document}
\title{\listprint[name=languages]}
\author{macmadness86}
\maketitle
\section{Examples of list management}
\listset{apples}
\listappend{oranges,strawberries}
\listprint
\listprint[
separator={ $|$ },
action=\addquotes
]
\listprint[
name=languages,
action=\addquotes,
]
\listset[empty]{}
\listprint[name=empty]
\section{The manuals}
\listprint[
name=languages,
separator=\par\bigskip,
action=\inputlanguagefile,
]
\end{document}