名为“目的”的节点没有停留在左侧中心。
我希望它自动对齐到正确的点而不是手动对齐。
\documentclass[tikz]{standalone}
\usepackage{ctex}%引入中文
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{mathrsfs}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{comment}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usetikzlibrary{mindmap,trees,graphs,arrows,positioning} % this is to allow the fork right path
\begin{document}
\begin{tikzpicture}
%目前的困难1实现箭头的弯曲,2实现根节点居中,3实现变量代替具体的文本,集中管理,让树的结构清晰
\graph [grow right sep, left anchor=east, right anchor=west,nodes=draw,edge=thick] {
{"目的"}-> {
{"证明否命题为假,即要得到结果"} -> {
{"$\exists I\in\mathscr{I}(A\subset I)$"} ->
{为真}
},
{"如何表示$A\subset I$,即$A$在$I$的内部?"} ->{
{"$A$中所有的点到$I$内一点的距离,小于该点到$I$外点的最短距离"} ,
{"$\exists a\in B,\forall x\in A, \forall y \in B^c(sup|a-x|<inf|a-y|\Rightarrow A\subset B)$"}
}
}
};
\end{tikzpicture}
\end{document}
答案1
首先要说的是,我很抱歉,我无法复制您的角色。除此之外,我建议你forest
完成这项任务。对齐可以通过tier
s 实现。我还添加了一个带圆角的分叉边缘版本。
\documentclass{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{mathrsfs}
\usepackage[edges]{forest}
\usetikzlibrary{backgrounds}
\definecolor{bgreen}{RGB}{230,240,224}
\definecolor{fgreen}{RGB}{246,250,238}
\begin{document}
\begin{forest}
for tree={grow'=0,
fill=fgreen,
rounded corners,
edge={thick,fgreen},
edge path={
\noexpand\path[\forestoption{edge}]
let \noexpand\p1=($(!u.parent anchor)-(.child anchor)$),
\noexpand\n1={int(ifthenelse(abs(\noexpand\y1)>2pt,2,0))} in
(!u.parent anchor)
\noexpand\ifdim\noexpand\n1>1pt
-- ++(5pt,0) [rounded corners] |-(.child anchor)
\noexpand\else
--(.child anchor|-!u.parent anchor)
\noexpand\fi
\forestoption{edge label};
},
child anchor=west,
parent anchor=east,
anchor=base west,
tier/.wrap pgfmath arg={#1}{level}
}
[AB
[ABC
[$\exists I\in\mathscr{I}(A\subset I)$
[ABCD]
]
]
[BCD $A\subset I$
[BCD AB]
[{$\exists a\in B,\forall x\in A, \forall y \in B^c(\sup|a-x|<\inf|a-y|\Rightarrow A\subset B)$}]
]
]
\scoped[on background layer]{
\path[fill=bgreen] ([yshift=-1ex,xshift=-1ex]current bounding box.south west) rectangle
([yshift=1ex,xshift=1ex]current bounding box.north east);}
\end{forest}
\end{document}
答案2
一个非常基本的方法是yshift=
向上或向下。
但forest
看起来好多了。
平均能量损失
\documentclass[tikz,border=6pt]{standalone}
\usepackage{ctex}%引入中文
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{mathrsfs}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{comment}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usetikzlibrary{mindmap,trees,graphs,arrows,positioning} % this is to allow the fork right path
\begin{document}
\begin{tikzpicture}
%目前的困难1实现箭头的弯曲,2实现根节点居中,3实现变量代替具体的文本,集中管理,让树的结构清晰
\graph [grow right sep,left anchor=east, right anchor=west,nodes=draw,edge=thick] {
{"目的"[yshift=-2em]}-> {
{"证明否命题为假,即要得到结果"} -> {
{"$\exists I\in\mathscr{I}(A\subset I)$"} ->
{为真}
},
{"如何表示$A\subset I$,即$A$在$I$的内部?"[yshift=-1.5em]} ->{
{"$A$中所有的点到$I$内一点的距离,小于该点到$I$外点的最短距离"} ,
{"$\exists a\in B,\forall x\in A, \forall y \in B^c(sup|a-x|<inf|a-y|\Rightarrow A\subset B)$"}
}
}
};
\end{tikzpicture}
\end{document}