使用指令定義新環境

使用指令定義新環境

我可以做如下的事情:

我沒有使用以下內容,而是重複使用相同的程式碼:

\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還有更多的可能性。

相關內容