コマンドを使用して新しい環境を定義する

コマンドを使用して新しい環境を定義する

次のようなことが可能になります。

次のように同じコードを何度も繰り返す代わりに、

\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さらにいくつかの可能性が生まれます。

関連情報