我为教科书编写了解决方案手册,只需要打印奇数解决方案。我使用每个部分中的 \enumerate 对文本进行了非常简单的格式化。
示例代码:
\begin{enumerate}
\item
\item
\item
\end{enumerate}
\item
由于我正尝试处理使用生成的列表,因此似乎我找到的每一点信息都不太符合我想要做的事情。
我该怎么做?谢谢。
答案1
欢迎!这是一种简单的方法,即不需要软件包,适用于具有奇数个条目的列表。此更新使用来自此答案的信息使其在各个层面发挥作用。
\documentclass{article} %
\makeatletter
\newcommand{\OnlyOddItems}{\let\olditem\item
\def\item##1\item{%
\expandafter\stepcounter{enum\romannumeral\@enumdepth}\olditem}}
\makeatother
\begin{document}
Original:
\begin{enumerate}
\item A
\item B
\item C
\item D
\item E
\end{enumerate}
Modified:
\begin{enumerate}
\item A \OnlyOddItems
\item B
\item C
\item D
\item E
\end{enumerate}
Modified at a deeper level:
\begin{enumerate}
\item
\begin{enumerate}
\item A \OnlyOddItems
\item B
\item C
\item D
\item E
\end{enumerate}
\item purr
\item pft
\end{enumerate}
\end{document}
或者,如果您想要的是 1.、2.、3.。
\documentclass{article} %
\newcommand{\OnlyOddItems}{\let\olditem\item
\def\item##1\item{\olditem}}
\begin{document}
Original:
\begin{enumerate}
\item A
\item B
\item C
\item D
\item E
\end{enumerate}
Modified:
\begin{enumerate}
\item A \OnlyOddItems
\item B
\item C
\item D
\item E
\end{enumerate}
\end{document}
答案2
为了能够在解决方案中嵌套列表,我选择用\sol
而不是 来引入解决方案\item
。
这使得按顺序存储解决方案并仅输出我们想要的解决方案成为可能。
我定义了三种可能的选择:even
,odd
或list
。
\documentclass{article}
\usepackage{xparse,enumitem}
\newlist{innersolutions}{enumerate}{1}
\setlist[innersolutions]{label=\arabic*.}
\ExplSyntaxOn
\NewDocumentEnvironment{solutions}{O{} +b}
{
\begin{innersolutions}
\molina_solutions:nn { #1 } { #2 }
\end{innersolutions}
}
{}
\seq_new:N \l__molina_solutions_items_seq
\clist_new:N \l__molina_solutions_list_clist
\keys_define:nn { molina/solutions }
{
odd .code:n = \cs_set_eq:NN \__molina_solutions_if_good:nTF \int_if_odd:nTF,
even .code:n = \cs_set_eq:NN \__molina_solutions_if_good:nTF \int_if_even:nTF,
list .code:n = \clist_set:Nn \l__molina_solutions_list_clist { #1 }
\cs_set:Npn \__molina_solutions_if_good:nTF ##1 ##2 ##3
{
\clist_if_in:NnTF \l__molina_solutions_list_clist { ##1 } { ##2 } { ##3 }
},
}
\cs_new_protected:Nn \molina_solutions:nn
{
\seq_set_split:Nnn \l__molina_solutions_items_seq { \sol } { #2 }
\seq_pop_left:NN \l__molina_solutions_items_seq \l_tmpa_tl
\keys_set:nn { molina/solutions } { #1 }
\seq_indexed_map_function:NN \l__molina_solutions_items_seq \__molina_solutions_item:nn
}
\cs_new_protected:Nn \__molina_solutions_item:nn
{
\__molina_solutions_if_good:nTF { #1 }
{
\item #2
}
{
\stepcounter{innersolutionsi}
}
}
\ExplSyntaxOff
\begin{document}
Odd numbered
\begin{solutions}[odd]
\sol yes
\sol no
\sol yes
\sol no
\end{solutions}
Even numbered
\begin{solutions}[even]
\sol no
\sol yes
\sol no
\sol yes
\sol no
\end{solutions}
Chosen
\begin{solutions}[list={1,3,4,6}]
\sol yes
\sol no
\sol yes
\sol yes
\sol no
\sol yes
\end{solutions}
\end{document}