我正在使用 tikz 在数学文本中创建交换图。但是,图表是文本/句子的一部分,因此有时我想用逗号或句号结尾。
我使用的标准布局如下:
\documentclass[a4paper, reqno, 14pt]{amsart}
\usepackage{amsthm,amsfonts,amssymb,amsmath}
%\tikz
\usepackage{tikz}
%%%<
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{5pt}%
\usetikzlibrary{arrows,chains,matrix,positioning,scopes}
\makeatletter
\tikzset{join/.code=\tikzset{after node path={%
\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)%
edge[every join]#1(\tikzchaincurrent)\fi}}}
\makeatother
\tikzset{>=stealth',every on chain/.append style={join},
every join/.style={->}}
\tikzstyle{labeled}=[execute at begin node=$\scriptstyle,
execute at end node=$]
%------------------------------------------------------
\begin{document}
\noindent\hspace*{\fill}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, row sep=3em, column sep=3em]
{ 0 & M & M & M/fM & 0 \\
0 & M_B & M_B & (M/fM)_B & 0 \\ };
{ [start chain] \chainin (m-1-1);
\chainin (m-1-2);
{ [start branch=A] \chainin (m-2-2)
[join={node[right,labeled] {}}];}
\chainin (m-1-3) [join={node[above,labeled] {\cdot f}}];
{ [start branch=B] \chainin (m-2-3)
[join={node[right,labeled] {}}];}
\chainin (m-1-4) [join={node[above,labeled] {}}];
{ [start branch=C] \chainin (m-2-4)
[join={node[right,labeled] {}}];}
\chainin (m-1-5); }
{ [start chain] \chainin (m-2-1);
\chainin (m-2-2);
\chainin (m-2-3) [join={node[above,labeled] {\cdot f \otimes \operatorname{id}}}];
\chainin (m-2-4) [join={node[above,labeled] {}}];
\chainin (m-2-5); }
\end{tikzpicture}
\hspace{\fill} \\
\end{document}
如果我只是在第二行的最后一个条目中写入(在上面的例子中)“0。”,第二行的最后一个箭头会更短 - 看起来很糟糕。用句号结束此图的预期方式是什么?
答案1
您可以使用不占用任何物理空间的句号。添加
\newcommand{\nospaceperiod}{\makebox[0pt][l]{\,.}}
到你的文档序言和类型
0\nospaceperiod
您想要标点符号的位置。您可能希望对其他标点符号也使用相同的方法,因此也许使用不同的命令会更好:
\newcommand{\nospacepunct}[1]{\makebox[0pt][l]{\,#1}}
然后你输入
0\nospacepunct{.}
或\nospacepunct{,}
表示逗号。
有一种更简单的方法可以用tikz-cd
包来实现相同的图表。
\documentclass{amsart}
\usepackage{tikz-cd}
\newcommand{\nospaceperiod}{\makebox[0pt][l]{\,.}}
\begin{document}
\[
\begin{tikzcd}
0 \arrow{r} &
M \arrow{r}{f} \arrow{d} &
M \arrow{r} \arrow{d} &
M/fM \arrow{r} \arrow{d} &
0
\\
0 \arrow{r} &
M_B \arrow{r}{f\otimes\mathrm{id}} &
M_B \arrow{r} &
(M/fM)_B \arrow{r} &
0\nospaceperiod
\end{tikzcd}
\]
\end{document}