我正在使用 Ti 制作一个简单的图表钾Z。
我目前拥有的代码是:
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{graphs,graphs.standard}
\begin{document}
\begin{center}
\begin{tikzpicture}
\graph[clockwise, n=3, V={i,j,k}, edge={bend left=45, -stealth}] { subgraph C_n };
\end{tikzpicture}
\end{center}
\end{document}
这输出编译上述代码时我收到的是:
我唯一想做的更改是显示$\mathbf{i}$
而不是 i、$\mathbf{j}$
而不是 j 和$\mathbf{k}$
而不是 k。当我尝试这样做时,编译不起作用,并且我收到以下错误消息:
Undefined control sequence.
答案1
您为钥匙V
用于名称节点。这些类型的名称不允许“特殊”宏,例如\mathbf
。(节点名称在 PGF 内部用作宏名称,这些名称需要完全可扩展为文本。\mathbf
因此,一切都变得一团糟。)
然而,graphs
图书馆提供了typeset
钥匙您可以访问某些宏,主要是\tikzgraphnodename
和\tikzgraphnodetext
宏(在这个简单情况下它们是相同的):
\graph[
clockwise,
n=3,
V={i,j,k},
edge={bend left=45, -stealth},
typeset=$\mathbf{\tikzgraphnodetext}$ % !or $\mathbf{\tikzgraphnodename}$
] { subgraph C_n };
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{graphs,graphs.standard}
\begin{document}
\tikz\graph[clockwise, n=3, V={i,j,k}, edge={bend left=45, -stealth}, % no typeset
] { subgraph C_n };
\tikz\graph[clockwise, n=3, V={i,j,k}, edge={bend left=45, -stealth}, % typeset with text
typeset=$\mathbf{\tikzgraphnodetext}$] { subgraph C_n };
\tikz\graph[clockwise, n=3, V={i,j,k}, edge={bend left=45, -stealth}, % typeset with name
typeset=$\mathbf{\tikzgraphnodename}$] { subgraph C_n };
\tikz\graph[clockwise, n=3, edge={bend left=45, -stealth}, % for fun
typeset=$v_{\tikzgraphnodetext}$,
nodes={text=red!\the\numexpr\tikzgraphnodetext00/3\relax!blue}
] { subgraph C_n };
\end{document}
感谢Henri Menke 的评论subgraph I_n
,对(由 内部使用)进行小修复后,subgraph C_n
您可以使用\graph
指定顶点的方式的全部力量。
但是,由于它使用\foreach
循环,因此在使用节点文本或选项时需要进行保护,
(或者在节点名称中,但这不是一个好主意)。
V={ i / $\mathbf{i}$, j / $\mathbf{j}$, k / $\mathbf{k}$ [{red, fill=green}]}
或者
V={ i / $\mathbf{i}$, j / $\mathbf{j}$, {k / $\mathbf{k}$ [red, fill=green]}}
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{graphs,graphs.standard}
\makeatletter
\tikzgraphsset{
declare={subgraph I_n}{
\foreach \tikz@lib@graph@node@num in \tikzgraphV
{[parse/.expand once=\tikz@lib@graph@node@num]}}}
\makeatother
\begin{document}
\tikz\graph[clockwise, n=3,
V={ i / $\mathbf{i}$, j / $\mathbf{j}$, k / $\mathbf{k}$ },
edge={bend left=45, -stealth}] { subgraph C_n };
\end{document}