标点符号和 tikz 图表

标点符号和 tikz 图表

我正在使用 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}

在此处输入图片描述

相关内容