如何使用 getitems LaTeX 包?

如何使用 getitems LaTeX 包?

我需要从逐项环境中提取主体和项目,例如

 \begin{itemize}
  HERE THE BODY
   \item first item
   \item second item
   ...
 \end{itemize}

有人告诉我 getitems 包可以完成这个任务。但我无法使用它。哪些命令可以 1) 提取正文,以及 2) 提取和排序项目?

答案1

这是一种方法listofitems

限制:忽略空白项;不允许使用可选参数\item

排序是另一个问题。你还没有真正说明你的意思。

如果你 希望在调用时将它们打印出来。

\documentclass{article}
\usepackage{listofitems,environ}
\NewEnviron{itemizesave}{%
  \setsepchar{\item}%
  \ignoreemptyitems
  \greadlist*\myitem{\BODY}%
}
\begin{document}
 \begin{itemizesave}
   \item first item
   \item second item

   ...
   \item the last item
 \end{itemizesave}

My first item is ``\myitem[1]''.

Then I have ``\myitem[2]''.

The list length is \myitemlen, so the final item I have is ``\myitem[3]''.
\end{document}

在此处输入图片描述


补充

OP 向我提出了另一个问题,进一步扩大了问题范围,包括第一个问题之前的问题文本和在后面\item用 表示正确答案。*\item

以下是该问题的解决方案:

\documentclass{article}
\usepackage{listofitems,environ}
\NewEnviron{itemizesave}{%
  \setsepchar{\item/*}%
  \greadlist*\myitem{\BODY}%
  \gdef\theanswer{0}%
  \foreachitem\z\in\myitem[]{%
    \ifnum\listlen\myitem[\zcnt]>1\relax
      \xdef\theanswer{\the\numexpr\zcnt-1}\fi
  }%
  \xdef\numberofchoices{\the\numexpr\myitemlen-1\relax}
}
\newcommand\thequestion{\myitem[1]}
\def\thechoice[#1]{\edef\tmp{\listlen\myitem[1+#1]}%
  \myitem[1+#1,\tmp]}
\begin{document}
 \begin{itemizesave}
text of question
   \item first choice
   \item* second choice
   \item the last choice
 \end{itemizesave}

The question is ``\thequestion''.

My first choice is ``\thechoice[1]''.

Then I have ``\thechoice[2]''.

The number of choices is \numberofchoices, so 
the final choice I have is ``\thechoice[3]''.

The correct answer is choice \theanswer.
\end{document}

在此处输入图片描述

相关内容