我使用 tikz-cd 包来构建数学图。代码如下:
\documentclass[12pt, a4 paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{mathdots}
\begin{document}
\begin{tikzcd}[column sep = tiny, row sep = small]
& & & & & &M \arrow[hookleftarrow]{dr} & & & & &\\
& & & & &M_{n-1} \arrow[hookrightarrow]{ur} \arrow[hookleftarrow]{dr} & &N_{p-1} \arrow[hookleftarrow]{dr} & & & & \\
& & & &M_{n-2} \arrow[hookrightarrow]{ur} \arrow[hookleftarrow]{dr} & &M'_{n-1} \arrow[hookrightarrow]{ur} & &N_{p-2} \arrow[hookleftarrow]{dr} & & & \\
& & & \iddots \arrow[hookrightarrow]{ur} & &M'_{n-2} \arrow[hookrightarrow]{ur} & & & & \ddots \arrow[hookleftarrow]{dr} & & \\
& &M_1 \arrow[hookrightarrow]{ur} \arrow[hookleftarrow]{dr} & & \iddots \arrow[hookrightarrow]{ur} & & & & & & N_1 \arrow[hookleftarrow]{dr} & \\
& M_0 \arrow[hookrightarrow]{ur} \arrow[equal]{dr} & & M'_1 \arrow[hookrightarrow]{ur} & & & & & & & & N_0 \\
& &M'_0 \arrow[hookrightarrow]{ur} & & & & & & & & &
\end{tikzcd}
\end{document}
看起来不太好。我尝试了很多方法让图片看起来更好,但没有得到相关的结果。最大的问题是那些对角点。有人能帮我改进我的代码吗?谢谢!另外,我想给这个图贴上标签,让它下面是“图 1”。我提到这个图必须出现在证明的中间(在证明环境中)。
答案1
问题在于单元格宽度不同。您可以使用between origins
来修复此问题。
我还将圆点改为“旋转\cdots
”。命令\updots
和\downdots
有一个可选参数,用于针对不同情况微调角度(默认为 45)。
\documentclass[12pt, a4paper]{article}
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{graphicx}
\newcommand\updots[1][45]{%
\makebox[1em]{\smash{\rotatebox[origin=c]{#1}{$\cdots\!$}}\vphantom{$|$}}%
}
\newcommand\downdots[1][45]{%
\makebox[1em]{\smash{\rotatebox[origin=c]{-#1}{$\cdots\!$}}\vphantom{$|$}}%
}
\begin{document}
\begin{tikzcd}[column sep ={2.75em,between origins}, row sep = {2.75em,between origins}]
& & & & & &M \arrow[hookleftarrow]{dr} & & & & &\\
& & & & &M_{n-1} \arrow[hookrightarrow]{ur} \arrow[hookleftarrow]{dr} & &N_{p-1} \arrow[hookleftarrow]{dr} & & & & \\
& & & &M_{n-2} \arrow[hookrightarrow]{ur} \arrow[hookleftarrow]{dr} & &M'_{n-1} \arrow[hookrightarrow]{ur} & &N_{p-2} \arrow[hookleftarrow]{dr} & & & \\
& & & \updots \arrow[hookrightarrow]{ur} & &M'_{n-2} \arrow[hookrightarrow]{ur} & & & & \downdots \arrow[hookleftarrow]{dr} & & \\
& &M_1 \arrow[hookrightarrow]{ur} \arrow[hookleftarrow]{dr} & & \updots \arrow[hookrightarrow]{ur} & & & & & & N_1 \arrow[hookleftarrow]{dr} & \\
& M_0 \arrow[hookrightarrow]{ur} \arrow[equal]{dr} & & M'_1 \arrow[hookrightarrow]{ur} & & & & & & & & N_0 \\
& &M'_0 \arrow[hookrightarrow]{ur} & & & & & & & & &
\end{tikzcd}
\end{document}