我应该回答教科书中的以下数学问题:1、10、19 和 34。如何使用 LaTeX 对这些问题进行编号?
答案1
一点代码高尔夫:定义一个序列,例如1,10,19,34
并重新定义,如果计数器是,则\refstepcounter
使用另一个并从序列中获取相关值。\theenumi
enumi
当列表中没有足够的项目时,不会进行检查。
为了清除列表并恢复到原始状态enumi
,请使用\clearenumerateselection
。
其他方式:使用enumitem
特殊AddEnumerateCounter
设置。
\documentclass{article}
\makeatletter
\let\latex@@refstepcounter\refstepcounter
\usepackage{expl3}
\ExplSyntaxOn
\seq_new:N \g_thomas_enumerateselection_seq
\int_new:N \g_thomas_enumi_int
\cs_new:Npn \setenumerateselection #1{%
\seq_set_from_clist:Nn \g_thomas_enumerateselection_seq {#1}
}
\cs_new:Npn \clearenumerateselection {
\seq_gclear:N \g_thomas_enumerateselection_seq
}
\cs_generate_variant:Nn \str_if_eq:nnT {xnT}
\AtBeginDocument{%
\cs_set:Npn \refstepcounter #1 {%
\str_if_eq:xnT {#1} {enumi} {
\seq_if_empty:NF \g_thomas_enumerateselection_seq {%
% Redefine \theenumi
\cs_set:cpn {the#1} {\seq_item:Nn \g_thomas_enumerateselection_seq {\value{#1}}}
}
}
\latex@@refstepcounter{#1}
}
}
\ExplSyntaxOff
\makeatother
\begin{document}
\setenumerateselection{1,10,19,34}
\begin{enumerate}
\item Foo
\item Bar
\item And now for something completely different
\item May the Fourth/Force be with you ;-)
\end{enumerate}
\clearenumerateselection
\begin{enumerate}
\item Foo
\item Bar
\item And now for something completely different
\item May the Fourth/Force be with you ;-)
\end{enumerate}
\end{document}