表中的动态行

表中的动态行

我想在 LaTeX 中设置一个命令,允许我传入多个参数(如列表)来填充表格。据我所知,似乎没有办法做到这一点。以下是我目前所拥有的。

\UsePackage{enumitem}
\newcommand{\speciallist}[6]{
\begin{itemize}[leftmargin=3.5cm,labelsep=0.5cm]
    \item[\textsc{#1:}] #2
    \item[\textsc{#3:}] #4
    \item[\textsc{#5:}] #6
\end{itemize}
}

我希望能够将多个\item条目传递给 itemize 表。也许在一种情况下,我传递了 8 个参数,因此它给了我 4 个条目。在另一种情况下,我只传递了 2 个参数,因此我得到了一个条目。我希望这有意义。任何帮助都将不胜感激。谢谢!

答案1

expl3这是一种使用(由 加载)的方法xparse,应用逗号分隔的值列表并使用 循环遍历它\int_step_inline:nnnn,步骤为二。

如果列表为空,则不打印任何内容,或者项目数不能被二整除,则不会造成任何损害。\seq_item:Nn如果第二个参数指向列表之外,则在这种情况下返回。

第一个可选参数用于enumitem设置。

\documentclass{article}


\usepackage{xparse}
\usepackage{enumitem}

\ExplSyntaxOn
\NewDocumentCommand{\speciallist}{O{}+m}{%
  \group_begin:
  \seq_set_from_clist:Nn \l_tmpa_seq {#2}
  \seq_if_empty:NF \l_tmpa_seq {
    \begin{itemize}[leftmargin=3.5cm,labelsep=0.5cm,font={\scshape},#1]
      \int_step_inline:nnnn {1}{2} {\seq_count:N \l_tmpa_seq} {
      \item[\seq_item:Nn \l_tmpa_seq {##1}]  \seq_item:Nn \l_tmpa_seq {##1+1}
      }
    \end{itemize}
  }
 \group_end:
}
\ExplSyntaxOff


\begin{document}
\speciallist{Foo,bar,foobar,barfoo}
\end{document}

在此处输入图片描述

答案2

另一种方法是pgfplotstable

\documentclass{article}
\usepackage{array}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.14} 

\pgfplotstableset{
    col sep=comma,
    string type,
    header=false,
    every head row/.style={output empty row},
    columns={[index]0,[index]1},
    every col no 0/.style={string type, column type={>{\scshape}r}},
    every col no 1/.style={string type,column type=l}
    }


\begin{document}
    \pgfplotstabletypeset{
        Foo,bar
        foobar,barfoo   
        }
\end{document}

在此处输入图片描述

相关内容