是否可以将参数传递给枚举(或其他列表命令)来告诉它列表中有多少个项目?

是否可以将参数传递给枚举(或其他列表命令)来告诉它列表中有多少个项目?

我想创建一个编号(或项目符号)列表,但希望列表中的项目数可变。我希望从外部文件读取变量。例如,第一次会有 4 个项目,下一次会有 6 个项目,等等。我的测试用例是编写一系列步骤(即列表中的项目)的程序来实现特定目标。这可以仅使用 LaTeX 命令来完成吗?

答案1

该版本具有expl3一些功能,可以按稍后显示的序列存储各个行。

首先使用\ReadFromFile{filename}{listname}wherelistname基本上可以是任何单词。这会将各行读入expl3 \seq变量中。

稍后,在或环境\DisplayList{listname}中使用。借助包,可以轻松更改项目标签。enumerateitemizeenumitem

如果需要的话,存储允许稍后重新显示。

\documentclass{article}

\usepackage{enumitem}

\usepackage{xparse}


\ExplSyntaxOn

\ior_new:N \l_t_king_file
\cs_new:Nn \t_king_readfromfile:nn {%
  \seq_gput_right:cn {g_#1_t_king_item_seq} {#2}
}

\NewDocumentCommand{\ReadFromFile}{mm}{%
  \seq_if_exist:cTF {g_#2_t_king_item_seq } 
  {
    \seq_gclear:c {g_#2_t_king_item_seq}
  }{%
    \seq_gclear_new:c {g_#2_t_king_item_seq}
  }
  % Open the file from arg #1
  \ior_open:Nn \l_t_king_file {#1} 
  % Read its content to the #2 - named variable
  \ior_map_inline:Nn \l_t_king_file {\t_king_readfromfile:nn {#2} {##1}}
  % Close the file
  \ior_close:N   \l_t_king_file
}

\NewDocumentCommand{\DisplayList}{m}{%
  \seq_map_inline:cn {g_#1_t_king_item_seq} {\item ##1}
}

\ExplSyntaxOff
\begin{document}
\ReadFromFile{shortitems.txt}{myfirstlist}

\begin{enumerate}[label={\Roman*)}]
  \DisplayList{myfirstlist}
\end{enumerate}

\ReadFromFile{longerlist.txt}{myotherlist}

\begin{enumerate}[label={\Alph*)}]
  \DisplayList{myotherlist}
\end{enumerate}

Redisplay with usual numbers:

\begin{enumerate}
  \DisplayList{myotherlist}
\end{enumerate}


\end{document}

文件shortitems.txtlongerlist.txt包含以下行

开启PDU

寻找就绪指示灯

或者

开启PDU

寻找就绪指示灯

混合饮料

提供饮料

享用饮品

在此处输入图片描述

相关内容