我想在表格单元格之间绘制一些简单的斜箭头。这两个单元格几乎可以位于表格中的任意位置。
例如给出下表:
我如何修改它以获得:
另一个带有垂直箭头的例子:
理想情况下,我想避免使用 Tikz,因为使用它tabular
来绘制这种图表非常简单,但如果没有其他办法,那么我会接受 Tikz 解决方案。
该表的 MWE 代码:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{figure}[H]
\begin{tabular}{cccccccc}
((\textbf{N} & $\Rightarrow$ & \textbf{N}) & $\Rightarrow$ & \textbf{N})& $\Longrightarrow$ & \textbf{N} & \\
& & & & & & $q$ & $O$ \\
& & & & $q$ & & & $P$ \\
& & $q$ & & & & & $O$ \\
& & & & $q$ & & & $P$ \\
& & $q$ & & & & & $O$ \\
$q$ & & & & & & & $P$ \\
& & & $\vdots$ & & & & \\
\end{tabular}
\end{figure}
\end{document}
答案1
使用\xymatrix
来自xypic
包(有关其使用的正确介绍,请参阅优秀的XY-pic 用户指南)。该\ar[d]
命令按照可选参数指定的方向排版箭头,因此\ar[r]
向右移动一个单元格,\ar[ur]
向上移动一个单元格,向右移动一个单元格等等。您可以使用\ar@2{->}[r]
表示双箭头,\ar@2/^/[u]
使用\ar@2/_/[u]
表示弯曲箭头。
第一个版本使用的代码与您的表格非常相似,第二个版本\Rightarrow
用 的箭头替换所有的 s xy
,第三个版本展示了斜箭头的使用。
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\xymatrix@=2pt{
((\textbf{N} & \Rightarrow & \textbf{N}) & \Rightarrow & \textbf{N}) & \Longrightarrow & \textbf{N} & \\
& & & & & & q & O\\
& & & & q \ar[urr] & & & P\\
& & q \ar[urr] & & & & & O\\
& & & & q \ar[uuurr] & & & P\\
& & q \ar[urr] & & & & & O\\
q \ar[urr] & & & & & & & P\\
& & & \vdots & & & & }
\xymatrix@R=2pt{
((\textbf{N} \ar@2{->}[r] & \textbf{N}) \ar@2{->}[r] & \textbf{N}) \ar@2{->}[r] & \textbf{N} & \\
& & & q & O\\
& & q \ar[ur] & & P\\
& q \ar[ur] & & & O\\
& & q \ar[uuur] & & P\\
& q \ar[ur] & & & O\\
q \ar[ur] & & & & P\\
& \vdots & & & }
\xymatrix@R=2pt{
(\textbf{N} \ar@2{->}[r] & \textbf{N} \ar@2{->}[r] & \textbf{N}) \ar@2{->}[r] & \textbf{N} \\
& & & q \\
& & q \ar[ur] & \\
q \ar[urr] & & & \\
\ar@/^1pc/[u]0 & q \ar[uur] & & \\
& \ar@/^1pc/[u]1 & & \\
& & n\ar[uuuu] & \\
& & & n\ar[uuuuuu]}
\end{document}
编辑
居中xy
图表很容易,您可以用(替代方案或任何适合您需要的方案) 将其包装xymatrix
在显示数学环境中,也可以将其包装在 中。\[.....\]
\begin{equation*}...\end{equation*}
\centerline{...}
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\begin{figure}
\centerline{\xymatrix@R=2pt{
((\textbf{N} \ar@2{->}[r] & \textbf{N}) \ar@2{->}[r] & \textbf{N}) \ar@2{->}[r] & \textbf{N} & \\
& & & q & O \\
& & q \ar[ur] & & P \\
& q \ar[ur] & & & O \\
& & q \ar[uuur] & & P \\
& q \ar[ur] & & & O \\
q \ar[ur] & & & & P \\
& \vdots & & & }}
\caption{A very interesting diagram with \texttt{centerline}}
\end{figure}
\begin{figure}
\[
\xymatrix@R=2pt{
(\textbf{N} \ar@2{->}[r] & \textbf{N} \ar@2{->}[r] & \textbf{N}) \ar@2{->}[r] & \textbf{N} \\
& & & q \\
& & q \ar[ur] & \\
q \ar[urr] & & & \\
\ar@/^1pc/[u]0 & q \ar[uur] & & \\
& \ar@/^1pc/[u]1 & & \\
& & n\ar[uuuu] & \\
& & & n\ar[uuuuuu]}
\]
\caption{A very interesting diagram with displaymath}
\end{figure}
\end{document}
对于不同长度的箭头,您可以使用\Rightarrow
并\Longrightarrow
查看第一个例子。在矩阵中的单元格之间xypic
绘制xymatrix
箭头,因此为了获得不同长度的箭头,您将需要相距较远的单元格(这是通过空单元格实现的),但这会在图表的其余部分移动。