答案1
您应该尝试让作者界面尽可能简单。我会创建一个环境来简化这一点,并在设置中添加复杂性和演示方面。
\newenvironment{usecase}
\addheading{}{}
\addrow{}{}
\addmulrow{}{}
\end{usecase}
下面是实现这一点的最小示例:
\documentclass{article}
\usepackage{booktabs}
\newcommand\addrow[2]{#1 \\ }
\newcommand\addheading[2]{#1 \\ \hline}
\newcommand\tabularhead{\begin{tabular}{lp{8cm}}
\hline
}
\newcommand\addmulrow[2]{ \begin{minipage}[t][][t]{2.5cm}#1\end{minipage}%
&\begin{minipage}[t][][t]{8cm}
\begin{enumerate} #2 \end{enumerate}
\end{minipage}\\ }
\newenvironment{usecase}{\tabularhead}
{\hline\end{tabular}}
\begin{document}
\begin{usecase}
\addheading{Actor}{System user}
\addrow{Precondition}{The system, shows, in the form part of an object type, the number indication.}
\addrow{Postcondition}{A disconnected number indicating the type of `other constructed object'.}
\addmulrow{Main path (M)}{\item User selects \ldots
\item System demands \ldots}
\end{usecase}
\end{document}
如果需要,您可以添加计数器来自动增加编号。我无法理解您的编号方案,因此将其从示例中删除。
总而言之,保持作者的命令简单(它们只需要处理语义)并将您的表现方面放在单独的命令中。
答案2
对 Yiannis 示例做了一些改动。添加了计数器、表格捕获、更改了表格样式以符合 ESKD 标准,并删除了基本定义。
现在的定义是:
\begin{usecase}{System user}
\addrow{Precondition}{The system, shows, in the form part of an object type, the number indication.}
\addrow{Postcondition}{A disconnected number indicating the type of `other constructed object'.}
\addmulrow{Main path (M)}{
\item User selects \ldots
\item System demands \ldots}
\end{usecase}
它看起来像:
来源是:
\newcommand\tabularhead[1]{
\begin{table}[h]
\caption{Action <<#1>>}
\begin{tabular}{|p{0.4\linewidth}|p{0.55\linewidth}|}
\hline
\textbf{Action} & \textbf{#1} \\
\hline}
\newcommand\addrow[2]{#1 \\ \hline}
\newcommand\addmulrow[2]{ \begin{minipage}[t][][t]{2.5cm}#1\end{minipage}%
&\begin{minipage}[t][][t]{8cm}
\begin{enumerate} #2 \end{enumerate}
\end{minipage}\\ }
\newenvironment{usecase}{\tabularhead}
{\hline\end{tabular}\end{table}}
答案3
我进一步开发了 Yiannis Lazarides 的命令并对其进行了改进。如下所示:
\newenvironment{usecaseenv}{
\def\arraystretch{2}
\begin{tabular}{lp{11cm}}\hline
}{
\hline\end{tabular}
\def\arraystretch{1}
}
\newcommand\addheading[1]{
\multicolumn{2}{c}{\textbf{\textit{#1}}}\\ \hline
}
\newcommand\addrow[2]{\textbf{#1}\begin{minipage}[t][][t]{11cm} \end{minipage}%
&\begin{minipage}[t][][t]{11cm}
#2
\end{minipage}\\
}
% The actual command definition
\let\oldFigureName\figurename %save the old definition of the caption's figure name
\newcommand{\usecase}[6]{
\vspace*{0.5cm} % adds a bit of padding to make it look nicer11
\renewcommand{\figurename}{Use case} %call figure name "Use case" instead
\begin{figure}[htbp]
\begin{center}
\begin{usecaseenv}
\addheading{#1}
\addrow{Use case:}{#3}
\addrow{Objects:}{#4}
\addrow{Functions:}{#5}
\end{usecaseenv}
\end{center}
\caption{#6}
\label{#2}
\end{figure}
\renewcommand{\figurename}{\oldFigureName} %reset caption figure name
}
结果:
现在这对于我和我的合著者来说是完美的。这抽象了环境,因此您可以简单地使用以下命令:
\usecase{TITLE}{uc:LABEL}{USE CASE}{OBJECTS}{FUNCTIONS}{CAPTION}
在我的版本中,以后可以引用\ref{uc:LABEL}
该用例。
希望你觉得它有用。