我正在尝试制作两个奇数列表,一个包含练习,另一个包含解决方案,但后者应该只包含 4k+1 个奇数项。示例:问题列表:1) 3) 5) 7) 等解决方案列表 1) 5) 9) 13) 我应该使用哪些命令??
答案1
我希望我正确回答了你的问题。以下是实现我希望你想要的相当原始的方法:
\documentclass[]{article}
\let\itembak\item
\makeatletter
\newcommand{\odditems}[1][2]{%
\setcounter{\@listctr}{\numexpr1-#1}%
\renewcommand{\item}[1][]{%
\addtocounter{\@listctr}{\numexpr#1-1}%
\ifx\relax##1\relax%
\itembak%
\else%
\itembak[##1]%
\fi%
}%
}
\makeatother
\begin{document}
\noindent
first:
\begin{enumerate}
\odditems
\item first
\item second
\item third
\end{enumerate}
second:
\begin{enumerate}
\odditems[4]
\item first
\item second
\item third
\end{enumerate}
\end{document}
编辑:枚举是可嵌套的(但以违反直觉的方式):
\begin{enumerate}
\odditems
\item first
\item second
\item third
\begin{enumerate}
\odditems[1]% this second call of \odditems allows the nested use
\item third.first
\item third.second
\item third.third
\end{enumerate}
\item fourth
\end{enumerate}
答案2
以下示例提供了一种自动设置questions
和的方法answers
。(可扩展)计算由以下函数提供:xfp
并可根据需要进行推广:
\documentclass{article}
\usepackage{xfp}
\newcounter{question}\newcounter{question@}
\newenvironment{questions}
{\setcounter{question@}{0}%
\begin{enumerate}
\let\olditem\item
\renewcommand{\item}{%
\setcounter{question}{\fpeval{2*\value{question@}}}\refstepcounter{question}%
\olditem[\thequestion)]\leavevmode\stepcounter{question@}%
}}
{\end{enumerate}}
\newcounter{answer}\newcounter{answer@}
\newenvironment{answers}
{\setcounter{answer@}{0}%
\begin{enumerate}
\let\olditem\item
\renewcommand{\item}{%
\setcounter{answer}{\fpeval{4*\value{answer@}}}\refstepcounter{answer}%
\olditem[\theanswer)]\leavevmode\stepcounter{answer@}%
}}
{\end{enumerate}}
\begin{document}
Questions:
\begin{questions}
\item first
\item second
\item third
\item fourth
\end{questions}
Answers:
\begin{answers}
\item first
\item second
\item third
\item fourth
\end{answers}
\end{document}
的修改\item
不允许在questions
或内嵌套其他列表answers
。