我是 LaTeX 新手。如果有人能给我提供下图的简单 LaTeX 代码,那将很有帮助
这里的问题是:我知道只有当有水平箭头时,这种通勤图的代码才有效。但在这个图中没有水平箭头。
答案1
箭头是可选的。不要忘记这个cmtip
选项,因为 Xy-pic 的标准箭头尖实在太糟糕了。
\documentclass{article}
\usepackage{amsmath}
\usepackage[all,cmtip]{xy}
\begin{document}
\begin{gather}
\begin{gathered}
\xymatrix{
V \ar[d] \ar[r] & W \ar[d] \\
\mathcal{C}(G,K)^m \ar[r] & \mathcal{C}(G,K)^n
}
\end{gathered}
\\
\begin{gathered}
\xymatrix{
V \ar[d] & W \ar[d] \\
\mathcal{C}(G,K)^m \ar[r] & \mathcal{C}(G,K)^n
}
\end{gathered}
\\
\begin{gathered}
\xymatrix{
V \ar[d] & W \ar[d] \\
\mathcal{C}(G,K)^m & \mathcal{C}(G,K)^n
}
\end{gathered}
\end{gather}
\end{document}
环境gathered
用于根据方程编号将图表居中。如果不需要编号,则不需要。
答案2
这里有两种可能性,带有pst-node
和带有tikz-cd
:
\documentclass[pdf]{article}
\usepackage{mathtools}
\usepackage{pst-node}
\usepackage{tikz-cd}
\newcommand{\dvarprojlim}[1]{\mathop{\mathstrut\varprojlim\limits_{#1}}}
\begin{document}
\texttt{psmatrix solution: }
\[ \psset{arrows=->, arrowinset=0.25, linewidth=0.6pt, nodesep=3pt,mnode =R, rowsep=1cm, colsep = 1cm}
\begin{psmatrix}
%%% nodes
V & W\\%
\mathcal C(G; K)^m & \mathcal C(G; K)^n
%%% horizontal arrows
\ncline{2,1}{2,2}
%%% vertical arrows
\ncline{1,1}{2,1}\ncline{1,2}{2,2}
\end{psmatrix}
\]
\vskip 1cm
\texttt{tikz-cd solution: }
\[ \begin{tikzcd}\
V \arrow{d}& W\arrow{d} \\%
\mathcal C(G; K)^m \arrow{r}& \mathcal C(G; K)^n
\end{tikzcd}
\]
\end{document}
答案3
两种不同的做法MetaPost, 使用boxes
和MetaObj
包,并产生相同的结果。通过 LuaLaTeX 程序包含在luamplib
包装以方便排版。
\documentclass[border=2mm, multi=mplibcode]{standalone}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
input boxes
beginfig(1);
boxit.V("$V$");
boxit.W("$W$");
boxit.Cm("$\mathcal{C}(G;K)^m$");
boxit.Cn("$\mathcal{C}(G;K)^n$");
Cn.w - Cm.e = (cm, 0);
V.s - Cm.n = (0, cm) = W.s - Cn.n;
drawunboxed(V, W, Cm, Cn);
drawarrow V.s -- Cm.n;
drawarrow W.s -- Cn.n;
drawarrow Cm.e -- Cn.w;
endfig;
\end{mplibcode}
\begin{mplibcode}
input metaobj
beginfig(1);
mat = new_Matrix_(2,2)(
new_Box_("$V$")("framed(false)"),
new_Box_("$W$")("framed(false)"),
new_Box_("$\mathcal{C}(G;K)^m$")("framed(false)"),
new_Box_("$\mathcal{C}(G;K)^n$")("framed(false)"))
("hsep(1cm)", "vsep(1cm)");
mcline.Obj(mat)(1,1, 2,1);
mcline.Obj(mat)(1,2, 2,2);
mcline.Obj(mat)(2,1, 2,2);
Obj(mat).c = origin;
draw_Obj(mat);
endfig;
\end{mplibcode}
\end{document}