![我们可以在 LaTeX 中旋转符号吗?我们应该如何制作此图表?](https://linux22.com/image/404102/%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%9C%A8%20LaTeX%20%E4%B8%AD%E6%97%8B%E8%BD%AC%E7%AC%A6%E5%8F%B7%E5%90%97%EF%BC%9F%E6%88%91%E4%BB%AC%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E5%88%B6%E4%BD%9C%E6%AD%A4%E5%9B%BE%E8%A1%A8%EF%BC%9F.png)
答案1
两种解决方案,一种使用“标准”工具,一种使用tikz-cd
LaRiFaRi 的代码。
\documentclass{article}
\usepackage{amsmath,amssymb} % for both solutions
\usepackage{graphicx} % for the first solution
\usepackage{tikz-cd} % for the second solution
% for the first solution
\newcommand{\overiso}[2]{%
\overset{\substack{\textstyle #1\\[0.5ex]\rotcong\\[0.5ex]}}{#2}%
}
\newcommand{\rotcong}{\rotatebox[origin=c]{90}{$\cong$}}
% ===
% for the second solution, see https://tex.stackexchange.com/a/216042/4427
\tikzset{
symbol/.style={
draw=none,
every to/.append style={
edge node={node [sloped, allow upside down, auto=false]{$#1$}}}
}
}
% ===
% general commands
\newcommand{\numberset}[1]{\mathbb{#1}}
\newcommand{\Z}{\numberset{Z}}
\begin{document}
\[
\dots
\xrightarrow{\cong}
\overiso{\Z}{C_3(*)}
\xrightarrow{0}
\overiso{\Z}{C_2(*)}
\xrightarrow{\cong}
\overiso{\Z}{C_1(*)}
\xrightarrow{0}
\overiso{\Z}{C_0(*)}
\rightarrow
0
\]
\[
\begin{tikzcd}[row sep=1em]
& \Z & \Z & \Z & \Z \\
\dotsb \arrow[r,"\cong"] &
C_3(*) \arrow[r,"0"] \arrow[u,symbol=\cong] &
C_2(*) \arrow[r,"\cong"] \arrow[u,symbol=\cong] &
C_1(*) \arrow[r,"0"] \arrow[u,symbol=\cong] &
C_0(*) \arrow[r] \arrow[u,symbol=\cong] &
0
\end{tikzcd}
\]
\end{document}
答案2
解决方案如下stackengine
:
\documentclass{article}
\usepackage{amsmath, amssymb, graphicx}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\[ \stackMath
\dotsm
\xrightarrow{\enspace\cong\enspace}
\Shortstack{\mathbb{Z} \\ \rotatebox[origin=c]{90}{$\cong$} \\ C_3(*)}
\xrightarrow{\enspace 0\enspace}
\Shortstack{\mathbb{Z} \\ \rotatebox[origin=c]{90}{$\cong$} \\ C_2(*)}
\xrightarrow{\enspace\cong\enspace}
\Shortstack{\mathbb{Z} \\ \rotatebox[origin=c]{90}{$\cong$} \\ C_1(*)}
\xrightarrow{\enspace 0\enspace}
\Shortstack{\mathbb{Z} \\ \rotatebox[origin=c]{90}{$\cong$} \\ C_0(*)}
\xrightarrow{\hspace{1.25em}}0
\]
\end{document}
答案3
使用 Ti 的解决方案钾Z(手动放置):
\documentclass[border=3.14,tikz]{standalone}
\usetikzlibrary{positioning}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}
\node at (0,0) (d) {\ldots};
\node[right=of d] (c3) {$C_3(*)$};
\node[right=of c3] (c2) {$C_2(*)$};
\node[right=of c2] (c1) {$C_1(*)$};
\node[right=of c1] (c0) {$C_0(*)$};
\node[right=of c0] (0) {$0$};
\draw[->] (d) --node[above]{$\cong$} (c3);
\draw[->] (c3) --node[above]{$0$} (c2);
\draw[->] (c2) --node[above]{$\cong$} (c1);
\draw[->] (c1) --node[above]{$0$} (c0);
\draw[->] (c0) -- (0);
\foreach\x in {0,...,3}
{
\node[node distance=0.5cm,above=of c\x] (z\x) {$\mathbb{Z}$};
\path (c\x) --node[rotate=90]{$\cong$} (z\x);
}
\end{tikzpicture}
\end{document}
钛钾Z 使用graphs
和quotes
语法:
\documentclass[border=3.14,tikz]{standalone}
\usetikzlibrary{graphs,quotes,positioning}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}
\graph[grow right=2cm]
{
d [as=\ldots] ->["$\cong$"]
c3 [as=$C_3(*)$] ->["$0$"]
c2 [as=$C_2(*)$] ->["$\cong$"]
c1 [as=$C_1(*)$] ->["$0$"]
c0 [as=$C_0(*)$] ->
0 [as=$0$]
};
\foreach\x in {3,...,0}
{
\node[node distance=0.5cm,above=of c\x] (z\x) {$\mathbb{Z}$};
\path (c\x) --node[rotate=90]{$\cong$} (z\x);
}
\end{tikzpicture}
\end{document}
答案4
如果您使用tikz-cd
,则不必引入人为的行。毕竟tikz-cd
是基于 的,其中有s 用于此目的。 因此,如果您想在上面有一个 Z 和 a,您只需添加到该单元格,其中只是该标签的简写。tikz
label
\cong
|[la]|
la
\documentclass{article}
\usepackage{amsmath,amsfonts}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[row sep=1em,/tikz/la/.style={label={[rotate=90,anchor=west,inner
sep=1pt,label={right:\mathbb{Z}}]:\cong}}]
\dotsb \arrow[r,"\cong"] &
|[la]| C_3(*) \arrow[r,"0"] &
|[la]| C_2(*) \arrow[r,"\cong"] &
|[la]| C_1(*) \arrow[r,"0"] &
|[la]| C_0(*) \arrow[r] &
0
\end{tikzcd}
\]
\end{document}