我想在 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}