我一直在尝试创建一个新的环境来拥有某种菜谱或步骤列表,例如
流程 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
。