请问一下代码的resume
为什么不起作用?以及如果修改
\documentclass{ctexart}
\usepackage{xparse,enumitem}
\ExplSyntaxOn
% 定义新的环境 ceshi,带有可选参数 o 和必要的内容参数 +b
\NewDocumentEnvironment{ceshi}{o +b}{
\IfNoValueTF{#1}{% 如果没有提供可选参数
\begin{enumerate}
#2
\end{enumerate}
}{% 如果提供了可选参数
\begin{enumerate}[#1]
#2
\end{enumerate}
}
}{}
\ExplSyntaxOff
\begin{document}
% 没有可选参数的 ceshi 环境
\begin{ceshi}
\item 这是一
\item 这是二
\item 这是三
\end{ceshi}
% 使用可选参数 resume 的 ceshi 环境
\begin{ceshi}[resume]
\item 这是新一
\end{ceshi}
\end{document}
暂时没有找到原因, 可能需要读源码, 一种解决方案是
% 没有可选参数的 ceshi 环境
\begin{ceshi}[series = AAA]
\item 这是一
\item 这是二
\item 这是三
\end{ceshi}
% 使用可选参数 resume 的 ceshi 环境
\begin{ceshi}[resume = AAA]
\item 这
\end{ceshi}
补充一下答案,resume 失效的原因是
\begin{ceshi}
...
\end{ceshi}
加了一层 group,导致 resume 无法更新.
解决方案是
\NewDocumentEnvironment{ceshi}{O{} +b}{
\enumerate[#1]
#2
\endenumerate
}{}
还需弥补丢失的 hook
\NewDocumentEnvironment{ceshi}{O{} +b}{%
\UseHook{env/enumerate/before}%
\UseHook{env/enumerate/begin}%
\enumerate[#1]%
#2
\endenumerate%
\UseHook{env/enumerate/end}%
\UseHook{env/enumerate/after}%
}{}
不明白你想要的生效是什么意思?
似乎加上label选项即可.
下面是MWE和一个结合@深圳-Skyrmion提供的使用默认参数O
的alternative solution.
\documentclass{ctexart}
\usepackage{xparse}
\usepackage{enumitem}
% 定义新的环境 ceshi,带有可选参数 o 和必要的内容参数 +b
% \NewDocumentEnvironment{ceshi}{o +b}{
% \IfNoValueTF{#1}{% 如果没有提供可选参数
% \begin{enumerate}
% #2
% \end{enumerate}
% }{% 如果提供了可选参数
% \begin{enumerate}[label=#1{\arabic*}]
% #2
% \end{enumerate}
% }
% }{}
\NewDocumentEnvironment{ceshi}{O{} +b}{
\begin{enumerate}[label=#1{\arabic*}]
#2
\end{enumerate}
}{}
\begin{document}
% 没有可选参数的 ceshi 环境
\begin{ceshi}
\item 这是一
\item 这是二
\item 这是三
\end{ceshi}
%使用可选参数 resume 的 ceshi 环境
\begin{ceshi}[ahahaha]
\item 这是新一
\item 这是新二
\item 这是新三
\end{ceshi}
\end{document}
谢谢鱼老师,鱼老师能不能抽空再找找原因🥹