重新定义具有不确定数量项的环境或命令

重新定义具有不确定数量项的环境或命令

根据 LaTeX 的基本命令,如果我想创建一个项目列表,我必须使用以下概念代码:

\begin{itemize}
  \item first
  \item second
  \item third
\end{itemize}

为了使我的代码尽可能干净并且真正可定制,我使用了另一个概念:

\begin{myenv}
  \item first
  \item second
  \item third
\end{myenv}

如果可能的话,我还想像这样自定义“项目命令”(但这不是必需的):

\begin{myenv}
  \myitem first
  \myitem second
  \myitem third
\end{myenv}

问题是:我如何重新定义这样的环境?

\newenvironment{myenv}
  {?}
  {?}

我想针对新创建的命令提出同样的问题

\newcommand{\mycmd}{?}

答案1

您可以使用该enumitem包来设置您自己的列表。

请注意,在下面的代码中,我已使用\newlist来创建环境mylistsetlist对其进行自定义。{10}指的是max-depth,这意味着您最多可以拥有 10 个嵌套版本。

enumitem套餐提供许多更多自定义标签、缩进、边距、字体等的选项 - 有关更多详细信息,请参阅文档。

\documentclass{article}

\usepackage{enumitem}
\newlist{mylist}{enumerate}{10}
\setlist[mylist]{label=$\triangleright$}

\begin{document}

\begin{mylist}
    \item my first item
    \item my second item
\end{mylist}

\end{document}

答案2

定义与环境匹配的新环境itemize的方法如下:

\newenvironment{myenv}%
  {\begin{itemize}}% \begin{myenv}
  {\end{itemize}}% \end{myenv}

定义一个执行类似操作的命令的\item方法如下:

\usepackage{letltxmacro}% http://ctan.org/pkg/letltxmacro
\LetLtxMacro{\mycmd}{\item}% \mycmd = \item

请注意\item可能带有可选参数,因此通过 来“复制”它并不容易\newcommand{\mycmd}{\item}letltxmacro包裹允许制作“负责任的”副本。下面是一个展示用法的最小示例:

在此处输入图片描述

\documentclass{article}
\newenvironment{myenv}%
  {\begin{itemize}}% \begin{myenv}
  {\end{itemize}}% \end{myenv}
\usepackage{letltxmacro}% http://ctan.org/pkg/letltxmacro
\LetLtxMacro{\mycmd}{\item}% \mycmd = \item
\begin{document}
\begin{myenv}
  \mycmd first
  \mycmd second
  \mycmd third
\end{myenv}
​\end{document}​​​​​​

如上所述,您现在还可以使用\mycmd[<stuff>]它来覆盖传统的\textbullet项目符号。

相关内容