我正在尝试使用新的 Tikz 功能绘制子图和 DAG,但是在将子图的文本移动到不重叠的地方时遇到了问题。
理想情况下,在下面的例子中,我想将“in(S)”文本向右移动,但我不知道如何做到这一点
\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{layered}
\begin{document}
\tikzstyle{input}=[circle, thick,draw=blue!75,fill=blue!20,minimum size=5mm]
\tikzstyle{fixed}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=6mm]
\tikzstyle{bitwise}=[fixed, draw=green!75, fill=green!20]
\tikzstyle{sub}=[draw, rectangle, fill=red!30, opacity=.2]
\tikz \graph [layered layout, nodes={bitwise}, level sep=1cm] {
{{{a[input], b[input]} -> 1, c[input]} -> 3, {{c, {d[input], e[input]} -> 2} -> 4}} -> 6;
{f[input], 2 -> 5[fixed]} -> 7;
{5, g[input]} -> 8;
S[sub] // {3, 4, 6};
$in(S)$[sub] // {1, c, 2}
};
\end{document}
感谢您的帮助 !
答案1
使用$in(S)$[sub] // {1, c, 2}
,您可以指定一个子图,该子图在钛钾Z 手册(版本 3.0.1a)。如图所示,绘制了一个子图
// [layout options]{sublayout}
您可以使用以下任一方式指定子图文本的位置(在您的情况下$in(S)$
)
subgraph text top=<text alignment options>
(将文本放在子图的顶部)。subgraph text bottom=<text alignment options>
(将文本放在子图的底部)”。
这里<text alignment options>
可以是你在 Ti 中使用的任何对齐方式钾Z,例如
subgraph text top={align=right}
subgraph text top=text centered
有了text centered
,子图标题放置得相当好:
答案2
我本来打算将此作为评论发布,但从您的 MWE 生成示例非常简单。您还可以标记子图,将标签放在边界框之外,如下所示。
\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{layered}
\begin{document}
\tikzstyle{input}=[circle, thick,draw=blue!75,fill=blue!20,minimum size=5mm]
\tikzstyle{fixed}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=6mm]
\tikzstyle{bitwise}=[fixed, draw=green!75, fill=green!20]
\tikzstyle{sub}=[draw, rectangle, fill=red!30, opacity=.2]
\tikz \graph [layered layout, nodes={bitwise}, level sep=1cm]
{
{{{a[input], b[input]} -> 1, c[input]} -> 3, {{c, {d[input], e[input]} -> 2} -> 4}} -> 6;
{f[input], 2 -> 5[fixed]} -> 7;
{5, g[input]} -> 8;
/ [label = left:S,sub] // {3, 4, 6};
/ [label = left:$in(S)$,sub] // {1, c, 2}
};
\end{document}