这里我附上了代码
\documentclass[11pt]{amsart}
\usepackage[dvips]{epsfig}
\usepackage[all,cmtip]{xy}
\usepackage{graphicx}
\usepackage{tikz-cd}
\usepackage{tikz}
\usetikzlibrary{cd}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}
\usepackage{pst-node}
\usepackage{pstricks}
\usepackage{amsgen, amstext,amsbsy,
amsopn, amsthm, amsfonts,amssymb,
amscd,amsmath,euscript,enumerate,url,
verbatim,calc,xypic}
\usepackage{amscd}
\textwidth6.5in
\textheight9in
\oddsidemargin.2in
\evensidemargin.2in
\topmargin-1cm
\renewcommand{\baselinestretch}{1.2}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{definition}[theorem]{Definition}%[theorem]
\newtheorem{defn}[theorem]{Definition}
\newtheorem{exercise}[theorem]{Exercise}
\newtheorem{problem}[theorem]{Problem}
\newtheorem{qns}[theorem]{Question}
\newtheorem{obs}[theorem]{Observation}
\newtheorem{example}[theorem]{Example}%[section]
%\newtheorem{Exam}{Example}[section]
%\newtheorem{prop}{proposition}[section]
%\newtheorem{exer}{Exercise}[section]
\newtheorem{proposition}[theorem]{Proposition}%[section]
%\newtheorem{theorem}{Theorem}[section]
\newtheorem{remark}[theorem]{Remark}%[section]
\newtheorem{corollary}[theorem]{Corollary}%[section]
\newtheorem{lemma}[theorem]{Lemma}%[section]
\newcommand{\QQ}{\mathbb Q}
\newcommand{\ZZ}{\mathbb Z}
\newcommand{\CC}{\mathbb C}
\newcommand{\FF}{\mathbb F}
\newcommand{\RR}{\mathbb R}
\newcommand{\NN}{\mathbb N}
\newcommand{\ra}{\rightarrow}
%\operatorname{deg}{{\deg}}
\newcommand{\irr}{\;\text{irr}\;}
\newcommand{\disc}{\:\text{disc}\;}
\newcommand{\ov}{\overline}
\newcommand{\sign}{\mbox{ sign }}
\newcommand{\gs}{\sigma}
\newcommand{\gt}{\tau}
\newcommand{\m}{\mathfrak m}
\newcommand{\Hom}{\mbox { Hom }}
\newcommand{\ga}{\alpha}
\newcommand{\gb}{\beta}
%\newcommand{\gg}{\gamma}
%\newcommand{\char}{\mbox{ char }}
\title[]{Algebra}
\author[]{Ripan Das}
\begin{document}
\maketitle
\newpage
\begin{tikzcd}
\cdots \arrow[r] & M_1 \arrow[r] \arrow[d] & M_2 \arrow[r] \arrow[d] & M_3 \arrow[d] \arrow[r] & \cdots \arrow[r] & M_n \arrow[d] \arrow[r] & {} \\
\cdots \arrow[r] & N_1 \arrow[r] & N_2 \arrow[r] & N_3 \arrow[r] & \cdots \arrow[r] & N_n \arrow[r] & {}
\end{tikzcd}
\[\begin{tikzcd}
G & {G'} \\
{G/H} & {}
\arrow["f"', from=1-1, to=1-2]
\arrow["\pi"', from=1-1, to=2-1]
\arrow["g"', from=2-1, to=1-2]
\end{tikzcd}\]
\end{document}
该代码在 overleaf 中运行并生成一个漂亮的交换图,但在 texmaker 中它无法生成并且只显示节点而不显示箭头。
答案1
您有不兼容的软件包,除非你选择了这latex-dvips-ps2pdf
条路线(我相信在 Overleaf 上是可行的)。你的环境中还有空行tikzcd
,这是不允许的。
首先,你的序言很乱。你正在加载
epsfig
,仅用于兼容 1995 年之前编写的文档pstricks
,这需要使用latex+dvips+ps2pdf
您还会多次加载包。例如,amsmath
出现两次,它会自动加载、和amsgen
。amstext
此外,还会由类自动加载,以及的内部版本。amsbsy
amsopn
amsmath
amsart
amsthm
如今,使用enumitem
比 更受欢迎enumerate
:您真的在使用它的功能吗?在这种情况下,翻译enumitem
并不困难。
加载tikz
和库cd
与加载相同tikz-cd
。
我不明白为什么要加载amscd
:它提供的是非常基本的图表,用 可以更好地制作。如果您只需要其交换图功能,tikz-cd
那么也没有理由加载xy
(而不是)。xypic
\xymatrix
设置\textheight
等amsart
,但此类设置必须紧随其后\calclayout
。
的正确语法\mathbb
是\mathbb{A}
,不是\mathbb A
,类似地\mathfrak
。我还更改了一些定义以实现更好的间距统一性,特别是\irr
:\disc
注意\mathrm
和 不是\text
,因为您希望在任何情况下都具有直立形状。
顺便说一句,LaTeX 提供了\to
的简写\rightarrow
。无需定义\ra
,那样就不那么透明了。
\documentclass[11pt]{amsart}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{cd,matrix,arrows,decorations.pathmorphing}
% for these you need latex+dvips+ps2pdf
% the last one with the -dALLOWTRANSPARENCY option
%\usepackage{pstricks}
%\usepackage{pst-node}
\usepackage{
%amsmath,
%amsthm,
amssymb,
euscript,
%enumerate,% better enumitem
url,
verbatim,
calc,
}
\setlength{\textwidth}{6.5in}
\setlength{\textheight}{9in}
\calclayout
\linespread{1.2}
%\oddsidemargin.2in % wrong
%\evensidemargin.2in % wrong
%\topmargin-1cm % wrong
\newtheorem{theorem}{Theorem}[section]
\newtheorem{definition}[theorem]{Definition}%[theorem]
\newtheorem{defn}[theorem]{Definition}
\newtheorem{exercise}[theorem]{Exercise}
\newtheorem{problem}[theorem]{Problem}
\newtheorem{qns}[theorem]{Question}
\newtheorem{obs}[theorem]{Observation}
\newtheorem{example}[theorem]{Example}%[section]
%\newtheorem{Exam}{Example}[section]
%\newtheorem{prop}{proposition}[section]
%\newtheorem{exer}{Exercise}[section]
\newtheorem{proposition}[theorem]{Proposition}%[section]
%\newtheorem{theorem}{Theorem}[section]
\newtheorem{remark}[theorem]{Remark}%[section]
\newtheorem{corollary}[theorem]{Corollary}%[section]
\newtheorem{lemma}[theorem]{Lemma}%[section]
\newcommand{\QQ}{\mathbb{Q}}
\newcommand{\ZZ}{\mathbb{Z}}
\newcommand{\CC}{\mathbb{C}}
\newcommand{\FF}{\mathbb{F}}
\newcommand{\RR}{\mathbb{R}}
\newcommand{\NN}{\mathbb{N}}
\newcommand{\ra}{\rightarrow} % isn't \to better than \ra?
\newcommand{\irr}{\mathrel{\mathrm{irr}}}
\newcommand{\disc}{\mathrel{\mathrm{disc}}}
\newcommand{\ov}{\overline}
\DeclareMathOperator{\sign}{sign}
\newcommand{\ga}{\alpha}
\newcommand{\gb}{\beta}
%\newcommand{\gg}{\gamma}
\newcommand{\gs}{\sigma}
\newcommand{\gt}{\tau}
\newcommand{\m}{\mathfrak{m}}
\DeclareMathOperator{\Hom}{Hom}
\title[]{Algebra}
\author[]{Ripan Das}
\begin{document}
\maketitle
\begin{tikzcd}
\cdots \arrow[r] & M_1 \arrow[r] \arrow[d] & M_2 \arrow[r] \arrow[d] & M_3 \arrow[d] \arrow[r] & \cdots \arrow[r] & M_n \arrow[d] \arrow[r] & {} \\
\cdots \arrow[r] & N_1 \arrow[r] & N_2 \arrow[r] & N_3 \arrow[r] & \cdots \arrow[r] & N_n \arrow[r] & {}
\end{tikzcd}
\[\begin{tikzcd}
G & {G'} \\
{G/H} & {}
\arrow["f", from=1-1, to=1-2]
\arrow["\pi"', from=1-1, to=2-1]
\arrow["g"', from=2-1, to=1-2]
\end{tikzcd}\]
\end{document}
答案2
首先,您的代码无法编译,因为环境中不能有空行tikzcd
。但即使删除了这些空行,您也无法在 Overleaf 或其他地方获得所需的结果。问题在于您正在加载的所有包。
您加载的许多包都是不必要的。例如,您用来tikz-cd
制作图表的包。您也不需要cd
、amscd
或xypic
。一般来说,不要加载您不使用的包。
在这种情况下,您是否使用epsfig
包?如果是,则必须加载它后 tikz-cd
以避免意想不到的后果。如果您不使用它,请将其删除。正如@egreg 指出的那样,epsfig
很长时间以来它都是不必要的。
\documentclass[11pt]{amsart}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\cdots \arrow[r] & M_1 \arrow[r] \arrow[d] & M_2 \arrow[r] \arrow[d] & M_3 \arrow[d] \arrow[r] & \cdots \arrow[r] & M_n \arrow[d] \arrow[r] & {} \\
\cdots \arrow[r] & N_1 \arrow[r] & N_2 \arrow[r] & N_3 \arrow[r] & \cdots \arrow[r] & N_n \arrow[r] & {}
\end{tikzcd}
\[\begin{tikzcd}
G & {G'} \\
{G/H} & {}
\arrow["f"', from=1-1, to=1-2]
\arrow["\pi"', from=1-1, to=2-1]
\arrow["g"', from=2-1, to=1-2]
\end{tikzcd}\]
\end{document}