我可以做如下的事情:
而不是像下面这样,我多次重复相同的代码:
\documentclass{article}
\usepackage{enumerate}
\newenvironment{enum1}{\begin{enumerate}[1.]}{\end{enumerate}}
\newenvironment{enuma}{\begin{enumerate}[a.]}{\end{enumerate}}
...
我希望能够在某种程度上“自动化”它,例如:
\documentclass{article}
\newcommand{\newEnum}[1]{\newenvironment{enum#1}{\begin{enumerate}[#1.]}{\end{enumerate}}
\newEnum{1}
\newEnum{a}
...
当然,这无法编译,否则我就不会在这里询问了。
有什么办法可以做到这一点,还是我只能进行复制粘贴并进行必要的更改?
答案1
对于列表,我建议您使用enumitem
包并使用newlist
内置的功能。
如果你有很多这些,你可以使用
\newcommand{\DefineNewList}[3]{%
% #1 = name
% #2 = max depth
% #3 = label
\newlist{#1}{enumerate}{#2}
\setlist[#1]{label*=#3}
}%
但我认为这没什么价值。
代码:
\documentclass{article}
\usepackage{enumitem}
\newlist{enumOne}{enumerate}{2}
\setlist[enumOne]{label*=\arabic*.}
\newlist{enumA}{enumerate}{2}
\setlist[enumA]{label*=\alph*.}
\begin{document}
\begin{enumOne}
\item First item in enumOne
\item Second item in enumOne
\end{enumOne}
\begin{enumA}
\item First item in enumA
\item Second item in enumA
\end{enumA}
\end{document}
代码Repeated Usage
:
\documentclass{article}
\usepackage{enumitem}
\newcommand{\DefineNewList}[3]{%
% #1 = name
% #2 = max depth
% #3 = label
\newlist{#1}{enumerate}{#2}
\setlist[#1]{label*=#3}
}%
\DefineNewList{enumOne}{2}{\arabic*.}
\DefineNewList{enumA}{2}{\alph*.}
\begin{document}
\begin{enumOne}
\item First item in enumOne
\item Second item in enumOne
\end{enumOne}
\begin{enumA}
\item First item in enumA
\item Second item in enumA
\end{enumA}
\end{document}
答案2
\documentclass{article}
\usepackage{enumerate}
\newcommand\newEnum[1]{%
\newenvironment{enum#1}{\enumerate[#1.]}{\endenumerate}}
\newEnum{1}
\newEnum{a}
\begin{document}
\begin{enumerate}
\item foo
\item bar
\end{enumerate}
\begin{enum1}
\item foo
\item bar
\end{enum1}
\begin{enuma}
\item foo
\item bar
\end{enuma}
\end{document}
但是,使用包还enumitem
具有更多的可能性。