5 请问resume为什么不起作用

发布于 2024-08-19 07:10:19

请问一下代码的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}

查看更多

关注者
0
被浏览
567
鱼香肉丝没有鱼先生
脾气不好,别来惹我!!!

暂时没有找到原因, 可能需要读源码, 一种解决方案是

% 没有可选参数的 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}%
}{}
2 个回答
Sagittarius Rover
Sagittarius Rover 2024-08-19
我要成为TikZ糕手/(ㄒoㄒ)/~~

不明白你想要的生效是什么意思?

image.png

似乎加上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}

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览