访问特定索引处的列表

访问特定索引处的列表

我想定义以下命令,用于渲染任意数量的子图。参数是一个嵌套列表:

\multifig{{{fig_1, T0D0, TODO}, {fig_2, T0D0, TODO}}}

以下可能吗?

\newcommand*{\multifig}[1]{
\begin{figure}
\foreach \x in #1 {
    \begin{subfigure}{\somewidth\textwidth}
    % here I need the element at index 1 of the list \x. how?
    \customfig{\x at 1}
    \end{subfigure}
}
\end{figure}

谢谢。

答案1

以下代码让您使用 expl3 访问(子)列表的特定项。

在当前状态下,它将生成一个带有子图的图形,并打印子列表的第一项(更改\__gerry_customfig以改变该行为)。请注意,我现在已经将子图设置为固定宽度(我不知道您的\somewidth)。

\documentclass{article}
\usepackage{expl3,xparse}
\usepackage{subcaption}

\ExplSyntaxOn
\clist_new:N \l__gerry_mycl
\cs_new:Npn \__gerry_customfig:n #1 {
    \detokenize{#1}
}
\NewDocumentCommand{\multifig}{m}{
\begin{figure}
\clist_set:Nn \l__gerry_mycl {#1}
\clist_map_inline:Nn \l__gerry_mycl {
    \begin{subfigure}{.3\textwidth}
    \clist_set:Nn \l_tmpa_clist {##1}
    \exp_args:Nx \__gerry_customfig:n {\clist_item:Nn \l_tmpa_clist {1}}
    \end{subfigure}
}
\end{figure}
}
\ExplSyntaxOff

\begin{document}
\multifig{{fig_1, T0D0, TODO}, {fig_2, T0D0, TODO}}
\end{document}

相关内容