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