将字符串转换为活动字符

将字符串转换为活动字符

在我的书中,我必须在不同的列表中逐项列出很多东西。这就是为什么我想将命令减少到最低限度。这个脚本只是一个更大的宏的一部分。

\documentclass{book}

\usepackage[at]{easylist}

\begin{document}

\newcommand{\el}[1]{\begin{easylist}[itemize] #1 \end{easylist}}

\el{
@ 1
@ 2
@ 3
    @@ 3a
    @@ 3b
    @@ 3c
}

\begin{easylist}[itemize]
@ 1
@ 2
@ 3
    @@ 3a
    @@ 3b
    @@ 3c
\end{easylist}

\end{document}

当我将 @-char 传递给我的宏时,它会被转换为字符串,因此 easylist 不会将其识别为活动字符。我如何将 @-char 从字符串重新转换为活动字符?

答案1

我不太确定你是否能从中得到什么。

你所谓的“catcode”实际上是活跃角色@。在查看参数之前,您必须激活:

\documentclass{book}

\usepackage[at]{easylist}
\newcommand{\el}{\begingroup\catcode`@=\active\doel}
\newcommand{\doel}[1]{\begin{easylist}[itemize] #1 \end{easylist}\endgroup}

\begin{document}

\el{
@ 1
@ 2
@ 3
    @@ 3a
    @@ 3b
    @@ 3c
}

\begin{easylist}[itemize]
@ 1
@ 2
@ 3
    @@ 3a
    @@ 3b
    @@ 3c
\end{easylist}

\end{document}

在此处输入图片描述

替代版本(也许更好,做一些实验):

\newcommand{\el}[1]{%
 \scantokens{\begin{easylist}[itemize] #1 \end{easylist}}%
}

相关内容