![定义函数时如何绘制像这样的长对齐箭头?](https://linux22.com/image/469011/%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%E6%97%B6%E5%A6%82%E4%BD%95%E7%BB%98%E5%88%B6%E5%83%8F%E8%BF%99%E6%A0%B7%E7%9A%84%E9%95%BF%E5%AF%B9%E9%BD%90%E7%AE%AD%E5%A4%B4%EF%BC%9F.png)
答案1
以下有两种方法可以(几乎)实现此目的:
- 使用 amscd
- 使用 tikzcd
一些评论:
- 为了简单起见,我没有寻找 Z 的正确表示
- amscd 似乎没有提供可扩展的箭头本身,但标准可能不太难读
- 示例中的文本可能太长
- 排版文本和数学有点......
- tikzcd 使其尽可能简单(缺少 \text{} 功能?)
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amscd}
\usepackage{tikz-cd}
\begin{document}
\section{amscd, example from ch. 8 adapted}
\begin{equation}
\begin{CD}
\text{\{Elliptic curves\ } E \text{\ with a quasi-isogeny\ }\alpha \text{:\ } E \rightarrow E_0 \text{\}}
@>\cong>>
\text{\{} \hat Z \text{-lattices in\ } \hat V(E_0) := \text{\dots\}}\\
E @>>> \hat T(E)
\end{CD}
\end{equation}
\vspace{2cm}
\begin{equation}
\begin{CD}
S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\
(S\otimes T)/I @>>> (Z\otimes T)/J
\end{CD}
\end{equation}
\bigskip
\section{tikzcd, example from ch. 1.2 adapted}
\bigskip
\begin{tikzcd}
{\{Elliptic\ curves\ E\ with\ a\ quasi-isogeny\ \alpha:\ E\ \rightarrow\ E_0\}} \arrow[r, "\cong"] & {\{Z-lattices\ \dots\}}\\
E \arrow[r]& \hat T(E)
\end{tikzcd}
\end{document}
答案2
好的,因为你改变了你的草图,为了更容易地跟踪与代码相关或不相关的东西,这里有第三种方法可以做到:
- 使用
tikz
- 和一个
matrix
网格
你想要什么:
结果,带有小类型的:
提示:
- 根据需要调整行和列的矩阵分离
- 在节点中混合文本和数学
{ }
可能迟早会造成一些麻烦 \raisebox
当我使用排版指数时你可以看到这一点op
- 以及小括号;amsmath 的矩阵方程就可以了,但需要
\text{}
再次使用 - 根据需要引入节点等的样式(这里:多线和箭头)
代码:
\documentclass[10pt,a4paper]{article}
\usepackage{amssymb}% for the set symbols
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\section{tikz and matrix}
\begin{tikzpicture}[% multiline, change arrow tip
frm/.style={align=center},
>=Stealth
]
% ~~~ matrix puts \node s on a grid ~~~~~~~~~~~~~~
\matrix[column sep=15mm, row sep=14pt]{
% ~~~ just regular nodes with some text, w.o. coordinates
\node[frm] (A1) {\{Strongly convex rational\\
polyhedral cone in\\
$(\mathbb{Z}^n)^* \otimes \mathbb{R}$\}}; &
\node (A2) {\{Submonoids of $\mathbb{Z}^n$\}\raisebox{1.2ex}{op}}; &
\node (A3) {$\mathbf{Sch}_k$}; \\
\node (B1) {$\check \sigma$}; &
\node (B2) {$\sigma$}; &
\node (B3) {Spec $k[\sigma] =: U_{\check \sigma}$}; \\
};
% ~~~ let's draw some arrows
\draw[->] (A1) -- (A2);
\draw[->] (A2) -- (A3);
\draw[->] (B1) -- (B2);
\draw[->] (B2) -- (B3);
\end{tikzpicture}
\end{document}