\documentclass{artilce}
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{tikz}
\tikzset{
keep name/.style={
prefix after command={
\pgfextra{\let\fixname\tikzlastnode}
}
},
partialbox/.style={
keep name,
append after command={
([xshift=#1]\fixname.north west) --
(\fixname.north west) --
(\fixname.south west) --
([xshift=#1]\fixname.south west)
([xshift=-#1]\fixname.north east) --
(\fixname.north east) --
(\fixname.south east) --
([xshift=-#1]\fixname.south east)
}
},
partialbox/.default=15pt
}
\begin{document}
\begin{tikzpicture}
\path[draw,rounded corners]
node[partialbox,minimum height=30pt,align=center]
at (0,4) (A) {\TeX};
\path[draw,rounded corners]
node[partialbox=30pt,minimum height=30pt,align=center]
at (0,2) (B) {\LaTeX};
\path[draw,rounded corners]
node[partialbox=30pt,minimum height=30pt,fill=cyan!20]
at (0,-1)
(C)
{PostScript};
\path[draw,rounded corners]
node[partialbox=30pt,minimum height=30pt,fill=cyan!20]
at (-3,-1)
(D)
{PDF};
\path[draw,rounded corners]
node[partialbox=20pt,minimum height=30pt,fill=cyan!20]
at (3,-1)
(E)
{DVI};
%\path[draw,rounded corners,dashed]
%node[partialbox,minimum height=30pt,align=center]
% at (4,-4)
% (C)
% {Some gffggfg};
\draw[-latex]
(A.east) -- ++(0pt,0pt) -| (E.north);
\draw[-latex]
(A.west) -- ++(0pt,0pt) -| (D.north);
\draw[-latex]
(B.east) -- ++(0pt,0pt) -| (E.north);
\draw[-latex]
(B.west) -- ++(0pt,0pt) -| (D.north);
\draw[latex-latex]
(D.east) -- ++(10pt,0pt) |- (C.west);
\draw[latex-]
(C.east) -- ++(10pt,0pt) |- (E.west);
\draw[latex-]
(D.south) -- ++(0pt,-25pt) -| (E.south);
\end{tikzpicture}
\end{document}
答案1
像这样?
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{backgrounds}
\tikzset{
partialbox/.style={draw,rounded corners,fill=white,text=red,
minimum height=30pt,align=center},
el/.style={text=blue,font=\sffamily\bfseries,align=center},
ml/.style={font=\tiny,text=green!70!black,align=left,
inner sep=0pt,outer sep=0.5pt,minimum height=0pt,}
}
\begin{document}
\begin{tikzpicture}[thick]
\path[nodes=partialbox,local bounding box=upper]
(0,4) node (A) {\TeX}
(0,2) node (B) {\LaTeX};
\path[nodes=partialbox,local bounding box=lower] (0,-1) node (C) {PostScript}
(-4,-1)
node[label={[ml,anchor=north east]south west:(pdf\\ \hphantom{(}png\\ \hphantom{(}jpg)}] (D) {PDF}
(4,-1)
node[label={[ml,anchor=north west]south east:(eps)}] (E) {DVI};
\begin{scope}[on background layer]
\draw[fill=gray!20] ([xshift=-2em,yshift=2em]upper.north west)
rectangle ([xshift=2em,yshift=-2em]upper.south east)
node[anchor=south east,font=\tiny]{Source formats};
\draw[fill=gray!20] ([xshift=-2em,yshift=2em]lower.north west)
rectangle ([xshift=2em,yshift=-2em]lower.south east)
([yshift=2em]lower.north) node[anchor=north west,font=\tiny]{Output formats};
\end{scope}
\draw[-latex]
(A.east) -| ([xshift=1ex]E.north) node[el,pos=0.25,above]{tex};
\draw[-latex]
(A.west) -| ([xshift=-1ex]D.north)node[el,pos=0.25,above]{luatex,\\ xetex,\\ pdftex};
\draw[-latex]
(B.east) -| ([xshift=-1ex]E.north)node[el,pos=0.25,above]{latex};
\draw[-latex] (B.west)-| ([xshift=1ex]D.north)node[el,pos=0.25,above]{lualatex,\\ xelatex,\\ pdflatex};
\draw[latex-latex]
(D.east) -- node[el,pos=0.5,above]{ps2pdf}
node[el,pos=0.5,below]{pdf2ps} (C.west);
\draw[latex-]
(C.east) -- node[el,pos=0.5,above]{dvips} (E.west);
\draw[latex-]
(D.south) -- ++(0pt,-25pt) -| (E.south)
node[el,pos=0.25,above]{dvipdfm};
\end{tikzpicture}
\end{document}