更改新环境中的枚举选项

更改新环境中的枚举选项

我一直在尝试创建一个新的环境来拥有某种菜谱或步骤列表,例如

流程 1

步骤1-执行以下操作;

步骤 2-这样做;

我希望它接受\label命令,因为我必须参考它。

基于wikibooks:LATEX/宏共享 latex,我已经能够制作以下内容:

\documentclass[12pt, a4paper]{report}
\newcounter{process}[section]
\newenvironment{process}[1][]
{
    \refstepcounter{process}\par\medskip \noindent 
    \textbf{Process~\theprocess #1} \rmfamily  
}
{
    \medskip 
}

\begin{document}

\noindent
This will be my beautiful new environment!
\begin{process}
    \begin{enumerate}[label = \textit{Step \arabic* -}, leftmargin=+.7in]
        \item this is the first step
        \item this is the second step
    \end{enumerate}
    \label{pr:test}
\end{process}
I'm able to reference Process \ref{pr:test}

\end{document}

这是完全可以接受的。我想知道是否有更好的方法来实现这一点,即 LATEX 自动在该环境中设置枚举选项,并摆脱

[label = \textit{Step \arabic* -}, leftmargin=+.7in]

我一直在尝试

\newenvironment{process}[1][]
{
    \refstepcounter{process}\par\medskip \noindent 
    \textbf{Process~\theprocess #1} \rmfamily  
    \begin{enumerate}[label = \textit{Step \arabic* -}, leftmargin=+.7in]
}
{
    \end{enumerate}
    \medskip 
}

但这并没有产生预期的结果。有什么想法吗?

答案1

如果你将process环境定义为包括设置后,您将失去正确地对它进行-and-的enumerate能力,因为从技术上讲,您只能对流程中的 s 进行-and- 操作(而不是流程本身)。\label\ref\label\ref\item

下面我process使用键值方法定义您的环境以接受可选参数。您可以指定title和/或label,然后将其插入到正确的位置以正确引用流程。

在此处输入图片描述

\documentclass{article}

\usepackage{enumitem,xkeyval}

\newcounter{process}[section]

\makeatletter
\define@cmdkey{process}[proc@]{label}[\relax]{}
\define@cmdkey{process}[proc@]{title}[\relax]{}

\newenvironment{process}[1][]
{%
  \setkeys{process}{label,title,#1}%
  \par\medskip\noindent
  \refstepcounter{process}%
  {\bfseries Process~\theprocess{} \proc@title}%
  \ifx\proc@label\relax\else\label{\proc@label}\fi
  \rmfamily
  \begin{enumerate}[label = \textit{Step \arabic* -}, leftmargin=+.7in]
}
{%
  \end{enumerate}
  \addvspace{\medskipamount}%
}
\makeatother

\begin{document}

\noindent
This is a process:
\begin{process}[title=Test1,label=pr:test1]
  \item this is the first step
  \item this is the second step
\end{process}
I'm able to reference Process~\ref{pr:test1}. Also see Process~\ref{pr:test2}:
\begin{process}[label=pr:test2]
  \item this is the first step
  \item this is the second step
\end{process}

\end{document}

请注意,流程标题和步骤之间可能会出现分页符。可以使用以下方法解决这个问题needspace

相关内容