我想从 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/.style
或description/.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
箭头后面,否则标签将被放置在边缘下方。