将节点样式从 tikz 转换为 tikz-cd

将节点样式从 tikz 转换为 tikz-cd

我想从 tikz 切换到 tikz-cd 来绘制箭头图(我刚开始练习,所以我了解不多),但我不知道如何转换以下节点样式:

\documentclass[a4paper,11pt]{article}

\usepackage{tikz}
\usetikzlibrary{matrix,arrows}

\begin{document}

\begin{tikzpicture}
[grade/.style={sloped,fill=white,inner sep=1pt,font=\tiny}]
\matrix (m) [matrix of math nodes, 
             row sep=2.5em, column sep=3em,
             text height=1.5ex, text depth=0.25ex]
{\cdot &       \\
       & \cdot \\};
\path[->,font=\scriptsize]
(m-1-1) edge node[auto] {$f$} (m-2-2)
        edge node[grade] {$[1]$} (m-2-2);
\end{tikzpicture}

\end{document}

在此处输入图片描述

我尝试了一些基本的解决方案,但看起来不正确:

\documentclass[a4paper,11pt]{article}

\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}
\cdot \ar[dr,"f", "(1)" description, sloped, font=\tiny] & \\
& \cdot
\end{tikzcd}

\end{document}

在此处输入图片描述

主要问题有:

  • 我不知道如何改变标签的字体大小;

  • 标签重叠;

  • 这些选项会影响两个标签。

另外,不能在标签中直接输入方括号也非常烦人。

有什么建议吗?

答案1

两个图表进行比较:

在此处输入图片描述

第一个图是原始图,使用了matrix of math nodes。第二个图使用了tikz-cd

代码:

\documentclass[a4paper,11pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{matrix,arrows}

\tikzset{
grade/.style={sloped,fill=white,inner sep=1pt,font=\tiny}
}

\begin{document}

\begin{tikzpicture}
\matrix (m) [matrix of math nodes, 
             row sep=2.5em, column sep=3em,
             text height=1.5ex, text depth=0.25ex]
{\cdot &       \\
       & \cdot \\};
\path[->,font=\scriptsize]
(m-1-1) edge node[auto] {$f$} (m-2-2)
        edge node[grade] {$[1]$} (m-2-2);
\end{tikzpicture}

\begin{tikzcd}[
  row sep=2.5em,
  column sep=3em,
  description/.append style={grade},
]
\cdot\ar[dr,phantom,"f" above right=1pt]\ar[dr,"{[1]}" description] & \\
& \cdot
\end{tikzcd}

\end{document}

回答问题末尾的具体问题:

  • 您可以使用description/.styledescription/.append style来更改 的样式description。特别是,我description/.append style={grade}在第二张图中使用了 。

  • 对于带括号的嵌套表达式,你需要为内层表达式添加一对额外的括号,例如

    \ar[dr,"{[1]}" description];
    

    否则,第一个]将被视为 中第一个括号的闭括号\ar[

  • 而不是像下面这样带有两个标签的一个箭头

    \ar[dr,"f", "(1)" description, sloped, font=\tiny]
    

    您可以使用两个箭头;这样,您就可以单独控制元素:

    \ar[dr,phantom,"f" above right=1pt]\ar[dr,"{[1]}" description]
    

    由于第一个箭头是样式phantom,因此无法有效绘制。

  • 您可以使用left=<length>、 或right=<length>(或类似)来移动标签。我使用了

    \ar[dr,"{f}" above right=1pt]
    

答案2

我发现使用\tikzcdset该问题可以以更紧凑的方式解决:

\documentclass[a4paper,11pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{matrix,arrows}

\tikzcdset{diagrams={row sep=2.5em, column sep=3em},
grade/.style={description,sloped,fill=white,inner sep=1pt,font=\tiny}}
\newcommand{\gar}[1]{\ar[#1,phantom,"{[1]}" grade]}

\begin{document}

\begin{tikzcd}
\cdot \ar[dr,"f"] \gar{dr} &       \\
                           & \cdot
\end{tikzcd}

\end{document}

在此处输入图片描述

只需小心地将标签放在\gar箭头后面,否则标签将被放置在边缘下方。

相关内容