是否可以重现这种情况图像在 LaTeX 中显示吗?
答案1
是的,这是可能的。以下是其中一种选择(代码需要运行两到三次才能使箭头和数字到达最终位置):
代码:
\documentclass{article}
\usepackage{tabularx}
\usepackage{fourier}
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\usetikzlibrary{arrows.meta,tikzmark}
\newcounter{myrowa}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newtcolorbox[auto counter]{FrameBox}[2]{
enhanced,
width=0.6\textwidth,
arc=0pt,
outer arc=0pt,
colback=white,
boxrule=1pt,
top=0.4cm,
bottom=0.4cm,
before=\vskip20pt\noindent,
fontupper=\sffamily\Large,
overlay unbroken={
\node[inner sep=0pt] at ([xshift=-2pt]frame.west) {\tikzmark{item-\thetcbcounter}\phantom{A}};
\node[anchor=south west,font=\sffamily] at (frame.north west) {Goal:~#2};
},
colframe=#1,
}
\newcommand\TableRow[2]{%
\renewcommand\arraystretch{1.4}
\par\noindent
\begin{tabularx}{\textwidth}{
| >{\stepcounter{myrowa}\arabic{myrowa}.}p{1.5em}@{}X
| >{\Alph{myrowa}.}p{1.5em}@{}X |
}
\hline & #1 & & #2\\\hline\end{tabularx}\vskip1.5pt
}
\newcommand\TableHead{%
\renewcommand\arraystretch{1.4}
\par\noindent
\begin{tabularx}{\textwidth}{YY}
Procedural steps & Applied methods
\end{tabularx}\vskip1.5pt
}
\begin{document}
\begin{FrameBox}{cyan}{Identify best surrogate candidates}
Identification
\end{FrameBox}
\TableHead
\TableRow{Identify software functions on different levels}{Method for functional decomposition}
\TableRow{Select}{Method of resource selection}
\TableRow{Identify software functions on different levels}{Method for functional decomposition}
\TableRow{Select}{Method of resource selection}
\begin{FrameBox}{red!80!black}{Build the prototype}
Construction
\end{FrameBox}
\TableHead
\TableRow{Identify software functions on different levels}{Method for functional decomposition}
\TableRow{Select}{Method of resource selection}
\TableRow{Identify software functions on different levels}{Method for functional decomposition}
\TableRow{Select}{Method of resource selection}
\begin{FrameBox}{orange}{Test functionality and utility}
Test
\end{FrameBox}
\TableHead
\TableRow{Identify software functions on different levels}{Method for functional decomposition}
\TableRow{Select}{Method of resource selection}
\TableRow{\tikzmark{end}Identify software functions on different levels}{Method for functional decomposition}
\begin{tikzpicture}[remember picture,overlay]
\draw[gray,line width=3pt,-latex]
([shift={(-2pt,36pt)}]{pic cs:item-1}) --
([shift={(-2pt,-20pt)}]{{pic cs:item-1}|-{pic cs:end}});
\foreach \Valor in {1,2,3}
\node[fill=white,draw=black!80,line width=2pt,minimum size=2em,font=\sffamily\large]
at ([shift={(0.2em,4pt)}]{pic cs:item-\Valor})
{\Valor};
\end{tikzpicture}
\end{document}
我用了tcolorbox
用于彩色框架;TikZ
及其tikzmark
库来绘制箭头并放置框架数字和tabularx
对于表格材料。
更新
对于三列设置:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{fourier}
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\usetikzlibrary{arrows.meta,tikzmark}
\newcounter{myrowa}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcolumntype{Z}{>{\raggedright\arraybackslash}X}
\newtcolorbox[auto counter]{FrameBox}[2]{
enhanced,
width=0.6\textwidth,
arc=0pt,
outer arc=0pt,
colback=white,
boxrule=1pt,
top=0.4cm,
bottom=0.4cm,
before=\vskip20pt\noindent,
fontupper=\sffamily\Large,
overlay unbroken={
\node[inner sep=0pt] at ([xshift=-2pt]frame.west) {\tikzmark{item-\thetcbcounter}\phantom{A}};
\node[anchor=south west,font=\sffamily] at (frame.north west) {Goal:~#2};
},
colframe=#1,
}
\newcommand\TableRow[3]{%
\renewcommand\arraystretch{1.4}
\par\noindent
\begin{tabularx}{\textwidth}{
| >{\stepcounter{myrowa}\arabic{myrowa}.}p{1.5em}@{}Z
| >{\Alph{myrowa}.}p{1.5em}@{}Z |
| >{\Alph{myrowa}.}p{1.5em}@{}Z |
}
\hline & #1 & & #2 & & #3\\\hline\end{tabularx}\vskip1.5pt
}
\newcommand\TableHead{%
\renewcommand\arraystretch{1.4}
\par\noindent
\begin{tabularx}{\textwidth}{YYY}
Activités à réaliser & Patrons & Exigences
\end{tabularx}\vskip1.5pt
}
\begin{document}
\begin{FrameBox}{cyan}{Identify best surrogate candidates}
Identification
\end{FrameBox}
\TableHead
\TableRow{Identify software functions}{Functional decomposition}{example}
\TableRow{\tikzmark{end}Identify software functions}{Functional decomposition}{example}
\begin{tikzpicture}[remember picture,overlay]
\draw[gray,line width=3pt,-latex]
([shift={(-2pt,36pt)}]{pic cs:item-1}) --
([shift={(-2pt,-20pt)}]{{pic cs:item-1}|-{pic cs:end}});
\foreach \Valor in {1}
\node[fill=white,draw=black!80,line width=2pt,minimum size=2em,font=\sffamily\large]
at ([shift={(0.2em,4pt)}]{pic cs:item-\Valor})
{\Valor};
\end{tikzpicture}
\end{document}