Я тоже потратил много времени на эту фигурку и пробовал разные типы пакетов tikz, pstricks и multido use. Я хотел бы создать фигурку, которая выглядит так:
Я написал следующее:
\documentclass{article}
\usepackage{MinionPro}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (10,0) ellipse (1.7cm and 0.9cm);
\draw (5,0) ellipse (1.7cm and 0.9cm);
\draw (2,-3) ellipse (1.7cm and 0.9cm);
\draw (2,3) ellipse (1.7cm and 0.9cm);
\end{tikzpicture}
\end{document}
Выглядит это так:
Мне нужно поместить текст в центре многоточий и линий к каждому из них. Может кто-нибудь подскажет, как это сделать?
Огромное спасибо!
решение1
Решение 1, как было предложено в первой версии OP:
Я оставляю тонкую настройку вам. Просто адаптируйте высоту и ширину эллипсов и установите \begin{tikzcd}[column sep=xxx, row sep=xxx]...
по своему усмотрению. Если вы хотите изменить наконечники стрелок, вам нужно будет поискать на этом сайте здесь. Повсюду дается много помощи.
% arara: pdflatex
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzcd}[cells={nodes={%
,ellipse
,minimum width=4cm
,minimum height=1cm
,draw
,align=center
}}]
Expectations
\arrow[<->, bend right,start anchor=190,end anchor=170]{dd}{D}
\arrow{dr}[swap]{A}
\arrow{drr}{F}
&[-2cm] & \\
& Disconfirmation \arrow{r}{C} & Satisfaction\\
Performance
\arrow{ur}{B}
\arrow{urr}[swap]{E}
& &
\end{tikzcd}
\end{document}
Решение 2, как указано в версии 3 OP:
% arara: pdflatex
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzcd}[cells={nodes={%
,ellipse
,minimum width=4.5cm
,minimum height=1.5cm
,draw
,align=center
}}
,every arrow/.append style={-LaTeX, >=LaTeX}
,row sep=2cm
,column sep=2cm
]
Expectations
\arrow[<->, bend right=50,start anchor=185,end anchor=175]{dd}{D(+)}
\arrow{dr}[swap]{A(-)}
\arrow{drr}{F(\pm)}
&[-4cm] & \\
& (Dis)confirmation \arrow{r}{C(+)} & Satisfaction\\
\begin{tabular}{@{}c@{}}General\\ Performance\end{tabular}
\arrow{ur}{B(+)}
\arrow{urr}[swap]{E(+)}
& &
\end{tikzcd}
\end{document}
решение2
Предлагаемое решение исходного вопроса:
\documentclass[tikz,border=2mm]{standalone}
%\usepackage{MinionPro}
\usepackage{tikz}
\usetikzlibrary{positioning, shapes.geometric, arrows.meta}
\begin{document}
\begin{tikzpicture}[ball/.style={ellipse, minimum width=2cm, minimum height=1cm, draw}, >=LaTeX]
\node[ball] (dis) {Disconfirmation};
\node[ball, below left=2cm and 5mm of dis] (per) {Performance};
\node[ball, above left=2cm and 5mm of dis] (exp) {Expectations};
\node[ball, right=2cm of dis] (sat) {Satisfaction};
\draw[->] (exp) -- node [below] {A} (dis);
\draw[->] (exp) -- node [above] {F} (sat);
\draw[->] (per) -- node [above] {B} (dis);
\draw[->] (per) -- node [below] {E} (sat);
\draw[->] (dis) -- node [above] {C} (sat);
\draw[<->] (per) to [in=200,out=160] node [right] {A} (exp);
\end{tikzpicture}
\end{document}
Обновлять:
nodes
могут быть эллипсы, загружающие библиотеку shapes.geometric. Если minimum width
и minimum height
достаточно велики, чтобы вместить самое большое содержимое, все узлы будут иметь одинаковый размер. Если align
опция определена, \\
может использоваться внутри содержимого узла для разрыва строк. Другим вариантом может быть определение определенного, text width
который будет автоматически разрывать строки, хотя его все еще можно принудительно выполнить с помощью \\
.
\documentclass[tikz,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, shapes.geometric, arrows.meta}
\begin{document}
\begin{tikzpicture}[ball/.style={ellipse, minimum width=4.5cm,
minimum height=1cm, align=center, draw}, >=LaTeX]
\node[ball] (dis) {Disconfirmation(Dis)confirmation};
\node[ball, below left=2cm and 5mm of dis] (per) {General Performance};
\node[ball, above left=2cm and 5mm of dis] (exp) {Expectations};
\node[ball, right=2cm of dis] (sat) {Satisfaction};
\draw[->] (exp) -- node [below][below left] {A $(-)$} (dis);
\draw[->] (exp) -- node [above][above right] {F $(\pm)$} (sat);
\draw[->] (per) -- node [above][above left] {B $(+)$} (dis);
\draw[->] (per) -- node [below][below right] {E $(+)$} (sat);
\draw[->] (dis) -- node [above] {C $(+)$} (sat);
\draw[<->] (per) to [in=200,out=160] node [right] {AD $(+)$} (exp);
\end{tikzpicture}
\end{document}