%20%EB%85%B8%EB%93%9C%20%EC%A0%95%EB%A0%AC.png)
텍스트 상자와 좌표를 살펴보기 전에 tikzlibrary만으로 얼마나 멀리까지 갈 수 있는지 알고 싶습니다 positioning
.
- 샘플에서 상자의 하단 라인 및 정렬되어야 합니다
n4
.n6
n8
(사실인 것 같습니다. 이로 인한 작은 추가 높이/깊이는 중요하지 않습니다.p
)g
n5
, ,n7
및 와 동일합니다n9
. - 또한 의 왼쪽 테두리는 다음
n4
과 같은 수직선에 있어야 합니다.n5
(이미 그렇습니다), 동일n6-n7
(좋다n7
:node[right = of n5, below = of n6
)그리고n8-n9
. n10
와 높이가 같아야 합니다n3
.n5
내가 해본 적은 없지만 좀 더 낮게 설정하는 것은 문제가 되지 않습니다.
으로 이 중 일부를 달성할 수 있나요 positioning
?
% -*- mode: latex; TeX-engine: luatex; coding: utf-8; -*-
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, positioning}
\usepackage{luatextra}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, shape=rectangle,
rounded corners , node distance = 2em ,
align=left]
\node[anchor=center] (n1) {n1 Erheblicher Stress\\
in fruher Kindheit\\
oder spater};
\node[right = of n1] (n2) {n2 Anpassung der\\
Ausbildung von\\
Cortisolrezeptoren};
\node[right = of n2, anchor=west] (n3) {n3 langfristig\\
erhohte Cortisol-\\
freisetzung};
\node[base right = of n3.north east] (n4) {n4 langfristig\\
verminderte\\
Neurogenese};
\node[ right = of n3.south east] (n5) {n5 verringerte\\
Serotonon-\\
wirkung an\\
5-HT\textsubscript{1A}-\\
Rezeptoren} ;
\node[base right = of n4] (n6) {n6 verringertes\\
Volumen von\\
Hippocampus und\\
Basalganglien};
\node[base right = of n5] (n7) {n7 erhohte Aktivitat\\
im limbischen\\
Cortexbereich};
\node[base right = of n6] (n8) {n8 verringerte\\
Fahigkeit zu\\
Integration neuer\\
Informationen};
\node[base right = of n7] (n9) {n9 erhöhte Ten-\\
denz, an Emotionen\\
festzuhalten};
\node[right = of n8.south east] (n10) {n10 Depressive\\
Episode};
\end{tikzpicture}
\end{document}
답변1
당신은 원하는 정렬을 달성할 수 있는지 묻고 있습니다 positioning
. 대답은 '예'입니다. 하지만 당신은 IMHO의 삶을 불필요하게 복잡하게 만듭니다. matrix
이 위에 라이브러리를 사용하면 상황이 훨씬 더 간단해집니다 . 그런 다음 원하는 정렬은 노드 앵커가 있는 행렬입니다 south
. 이를 위해서는 튜닝이 훨씬 덜 필요하며( text widths
수동 줄 바꿈을 고집하는 경우에만 열에 종속되게 만들 필요가 있음) 출력도 IMHO 더 설득력이 있습니다.
\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{matrix, positioning}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, shape=rectangle,
rounded corners }, node distance = 2em ,
align=left,mymat/.style={matrix of nodes,
draw=none,nodes={draw,rounded corners,align=left,text width=10em,
anchor=south},column 1/.style={nodes={text width=8em}},
row sep=2em,column sep=2em}]
\node[anchor=center] (n1) {n1 Erheblicher Stress\\
in fruher Kindheit\\
oder spater};
\node[right = of n1] (n2) {n2 Anpassung der\\
Ausbildung von\\
Cortisolrezeptoren};
\node[right = of n2] (n3) {n3 langfristig\\
erh\"ohte Cortisol-\\
freisetzung};
\matrix[right = of n3,mymat] (m1) {{n4 langfristig\\
verminderte\\
Neurogenese} &
{n6 verringertes\\
Volumen von\\
Hippocampus und\\
Basalganglien}&
{n8 verringerte\\
F\"ahigkeit zu\\
Integration neuer\\
Informationen}
\\
{n5 verringerte\\
Serotonon-\\
wirkung an\\
5-HT\textsubscript{1A}-\\
Rezeptoren}&
{n7 erh\"ohte Aktivitat\\
im limbischen\\
Cortexbereich}&
{n9 erh\"ohte Ten-\\
denz, an Emotionen\\
festzuhalten}
\\
};
\node[right = of m1] (n10) {n10 Depressive\\
Episode};
\end{tikzpicture}
\end{document}
부록matrix horizontal arrows
: 재미를 위해: 매트릭스 노드 사이에 자동으로 수평 화살표를 그리는 스타일입니다 . (수직 화살표의 스타일은 완전히 유사합니다.)
\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{matrix, positioning}
\tikzset{matrix horizontal arrows/.style={execute at end matrix={
\foreach \Y in {1,...,\the\pgfmatrixcurrentrow}
{\foreach \X in {2,...,\the\pgfmatrixcurrentcolumn}
{\path (\tikzmatrixname-\Y-\the\numexpr\X-1\relax.east)
-- (\tikzmatrixname-\Y-\X.west) coordinate[midway](maux);
\draw[->,#1] (\tikzmatrixname-\Y-\the\numexpr\X-1\relax.east|-maux)
-- (\tikzmatrixname-\Y-\X.west|-maux); }
}}}}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, shape=rectangle,
rounded corners }, node distance = 2em ,
align=left,mymat/.style={matrix of nodes,
draw=none,nodes={draw,rounded corners,align=left,text width=6em,
anchor=south},
row sep=2em,column sep=2em,
matrix horizontal arrows={-latex}}]
\node[anchor=center] (n1) {Erheblicher Stress\\
in fr\"uher Kindheit\\
oder spater};
\node[right = of n1] (n2) {Anpassung der\\
Ausbildung von\\
Cortisolrezeptoren};
\node[right = of n2] (n3) {langfristig\\
erh\"ohte Cortisol-\\
freisetzung};
\matrix[right = of n3,mymat] (m1) {{langfristig
verminderte
Neurogenese} &
{verringertes
Volumen von
Hippocampus und
Basalganglien}&
{n8 verringerte
F\"ahigkeit zu
Integration neuer
Informationen}
\\
{verringerte
Serotonon
wirkung an
5-HT\textsubscript{1A}-Rezeptoren}&
{n7 erh\"ohte Aktivitat
im limbischen
Cortexbereich}&
{n9 erh\"ohte Tendenz, an Emotionen
festzuhalten}
\\
};
\node[right = of m1] (n10) {Depressive Episode};
\foreach \X in {2,3}
{\draw[-latex] (n\the\numexpr\X-1) -- (n\X);}
\draw[-latex] (n3.45) |- (m1-1-1.west);
\draw[-latex] (n3.-45) |- (m1-2-1.west);
\draw[latex-] (n10.135) |- (m1-1-3.east);
\draw[latex-] (n10.-135) |- (m1-2-3.east);
\end{tikzpicture}
\end{document}
답변2
이와 같이?
이를 위해서는 코드에 대한 수동 간섭이 필요합니다.
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, positioning}
\usepackage{luatextra}
\begin{document}
\begin{tikzpicture}[
node distance = 1ex and 2em,
every node/.style = {draw, shape=rectangle, rounded corners,
align=left}
]
\node (n1) {n1 Erheblicher Stress\\
in fruher Kindheit\\
oder spater};
\node (n2) [right = of n1] {n2 Anpassung der\\
Ausbildung von\\
Cortisolrezeptoren};
\node (n3) [right = of n2] {n3 langfristig\\
erhohte Cortisol-\\
freisetzung};
\node (n4) [above right = of n3.east]{n4 langfristig\\
verminderte\\
Neurogenese};
\node (n5) [below right = of n3.east] {n5 verringerte\\
Serotonon-\\
wirkung an\\
5-HT\textsubscript{1A}-\\
Rezeptoren} ;
\node (n6) [right = of n4] {n6 verringertes\\
Volumen von\\
Hippocampus und\\
Basalganglien};
\node (n7) [right = of n5 -| n4.east] {n7 erhohte Aktivitat\\
im limbischen\\
Cortexbereich};
\node (n8) [right = of n6] {n8 verringerte\\
Fahigkeit zu\\
Integration neuer\\
Informationen};
\node (n9) [right = of n7 -| n6.east] {n9 erhöhte Ten-\\
denz, an Emotionen\\
festzuhalten};
\node (n10) [right = of n3-| n8.east] {n10 Depressive\\
Episode};
\end{tikzpicture}
\end{document}
그러나 질문 아래 @AndréC 주석을 고려하면 코드가 매우 간단해집니다.
편집하다: 귀하의 의견에 따르면 다음과 같은 노드 위치 지정 디자인을 찾고 있는 것 같습니다.
이를 위해서는 코드를 약간 변경해야 합니다.
\documentclass[border=1cm]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{calc, positioning}
\usepackage{luatextra}
\begin{document}
\begin{tikzpicture}[
node distance = 0ex and 2em,
every node/.style = {draw, shape=rectangle, rounded corners,
anchor=south west,
text width=11em, align=left}
]
\node (n1) {n1 Erheblicher Stress in fruher Kindheit oder spater};
\node (n2) [above right = of n1.south east] {n2 Anpassung der Ausbildung von Cortisolrezeptoren};
\node (n3) [above right = of n2.south east] {n3 langfristig erhohte Cortisol freisetzung};
\node (n4) [above right = 2ex of n3.east]{n4 langfristig verminderte Neurogenese};
\node (n5) [below right = 2ex of n3.east] {n5 verringerte Serotonon wirkung an 5-HT\textsubscript{1A}- Rezeptoren} ;
\node (n6) [above right = of n4.south east] {n6 verringertes Volumen von Hippocampus und Basalganglien};
\node (n7) [above right = of n5.south east] {n7 erhohte Aktivitat im limbischen Cortexbereich};
\node (n8) [above right = of n6.south east] {n8 verringerte Fahigkeit zu Integration neuer Informationen};
\node (n9) [above right = of n7.south east] {n9 erhöhte Tendenz, an Emotionen festzuhalten};
\node (n10) [right = of n3 -| n8.east] {n10 Depressive Episode};
\end{tikzpicture}
\end{document}
답변3
여러분의 도움으로 -- AndréC, Schrödinger의 고양이 및 Zarko 덕분에 이것이 이렇게 보일 것입니다(Zelda의 세계에서는 더 많은 화살표가 정확히 수직이지만 이는 포함되지 않습니다). 내가 필요한 것은 tikzlibrary matrix
이고 수정되었습니다 text width
.
\begin{tikzpicture}[every node/.style = {draw, shape=rectangle,
rounded corners, text width = 9em, inner sep = 4pt },
node distance = 2em, align=left,
mymat/.style={matrix of nodes,
draw=none,nodes={draw,rounded corners,align=left,
text width=6em, anchor=south},
column 1/.style={nodes={text
width=6em}}, row sep=2em,column sep=2em}]
\node[anchor=center] (n1) {% n1
Erheblicher Stress
in früher Kindheit
oder später};
\node[right = of n1] (n2) {% n2
Anpassung der
Ausbildung von
Cortisol"|rezeptoren};
\node[right = of n2] (n3) {% n3
langfristig
erhöhte Cortisol"|freisetzung};
\matrix[right = of n3,yshift=1.5ex, mymat] (m1) {%
{% n4
langfristig
verminderte
Neuro"|genese} &
{% n6
verringertes
Volumen von
Hippo"|campus und
Basal"|ganglien}&
{% n8
verringerte
Fähigkeit zu
Integration neuer
Informationen}\\
{% n5
verringerte
Serotonin"|wirkung an
5-HT\textsubscript{1A}-%
Rezeptoren}&
{% n7
erhöhte Aktivität
im limbischen
Cortexbereich}&
{% n9
erhöhte Tendenz,
an Emotionen
festzuhalten}\\
};
\node[right = of m1] (n10) {% n10
Depressive
Episode};
\draw[->] (n1) -- (n2);
\draw[->] (n2) -- (n3);
\draw[->] (n3) -- (m1-1-1);
\draw[->] (n3) -- (m1-2-1);
\draw[->] (m1-1-1) -- (m1-1-2);
\draw[->] (m1-1-2) -- (m1-1-3);
\draw[->] (m1-1-3) -- (n10);
\draw[->] (m1-2-1) -- (m1-2-2);
\draw[->] (m1-2-2) -- (m1-2-3);
\draw[->] (m1-2-3) -- (n10);
\end{tikzpicture}