
我可以做如下的事情:
我沒有使用以下內容,而是重複使用相同的程式碼:
\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
還有更多的可能性。