在序列变换的文献中,一些算法可以很好地表示为菱形图,例如
或者以扩展形式,
我可能会作弊并使用matrix
或array
类似的构造,但是否有更好的方法在 LaTeX 中呈现它们?
答案1
我会用蒂克兹绘制此类图表。下面是绘制图表的一个小示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, row sep=2em, column sep=2em] {%
& \varepsilon_k^{(n)} & \\
\varepsilon_{k-1}^{(n+1)} & & \varepsilon_{k+1}^{(n)} \\
& \varepsilon_k^{(n+1)} & \\ };
\path[-stealth] (m-2-1) edge (m-1-2) edge (m-3-2) ;
\path[stealth-] (m-2-3) edge (m-3-2) edge (m-1-2) ;
\end{tikzpicture}
\end{document}
输出:
有关更多 TikZ 示例,请访问TikZ 示例库或这个博客 TikZ 类别。
对于扩展图,矩阵就足够了。但你可以使用 TikZmatrix of math nodes
功能,就像第一个示例中一样,这样你就可以受益于 TikZ 的所有功能,如箭头、标签、定位等等。
答案2
我同意 Stefan 的观点,TikZ
最好的方法如下:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows,scopes}
\usepackage{ifthen}
\begin{document}
\begin{tikzpicture}[x={(2cm,-0.5cm)},y={(0cm,-1cm)}]
\foreach \x in {-1,...,3}
{ \foreach \y in {0,...,3}
{ \ifthenelse{\x=-1}{\xdef\more{=0}}{\ifthenelse{\x=0}{\xdef\more{=S_\y}}{\xdef\more{}}}
\node[right] at (\x,\y) {$\epsilon_{\x}^{(\y)}\more$};
\ifthenelse{\x=3}{\draw[dotted] (\x+0.5,\y) -- (\x+1,\y);}{}
\ifthenelse{\y=3}{\draw[dotted] (\x+0.2,\y+0.5) -- (\x+0.2,6-\x/2);}{}
}
}
\end{tikzpicture}
\begin{tikzpicture}[x={(2cm,-1cm)},y={(0cm,-2cm)}]
\node (l) at (0,0) {$\epsilon^{n+1}_{k-1}$};
\node (b) at (2,0) {$\epsilon^{n+1}_{k-1}$};
\node (t) at (2,-2) {$\epsilon^{n+1}_{k-1}$};
\node (r) at (4,-2) {$\epsilon^{n+1}_{k-1}$};
\draw[-latex] (l.20) -- (t.200);
\draw[-latex] (l.340) -- (b.160);
\draw[-latex] (t.340) -- (r.160);
\draw[-latex] (b.20) -- (r.200);
\end{tikzpicture}
\end{document}
答案3
对于第一个图表,您可以使用任何用于绘制交换图的包。我通常使用蒂克兹(也可以看看使用 TikZ 的交换图)。
第二张图可以这样排版:
\documentclass{article}
\usepackage{amsmath}
\renewcommand\epsilon\varepsilon
\begin{document}
\[
\begin{matrix}
\epsilon_{-1}^{(0)} = 0 & & & & \\
& \epsilon_{0}^{(0)} = S_0 & & & \\
\epsilon_{-1}^{(1)} = 0 & & \epsilon_{1}^{(0)} & & \\
& \epsilon_{0}^{(1)} = S_1 & & \epsilon_{2}^{(0)} & \\
\epsilon_{-1}^{(2)} = 0 & & \epsilon_{1}^{(1)} & & \ddots \\
\vdots & \epsilon_{0}^{(2)} = S_2 & & \epsilon_{2}^{(1)} & \\
\vdots & \vdots & \epsilon_{1}^{(1)} & & \ddots \\
\vdots & \vdots & \vdots & \epsilon_{2}^{(2)} & \\
\vdots & \vdots & \vdots & \vdots & \ddots \\
\end{matrix}
\]
\end{document}