I would appreciate some help with several issues I'm experiencing with a diagram. I'm building this diagram in LaTeX/TikZ for my dissertation defense slides (Beamer); the diagram reproduces my original adapted version of the updated DeLone and McLean model of information systems success, which appearance I don't like and find the LaTeX quality much more pleasing to eyes.
Above is the original model diagram I'm trying to reproduce. Below is my current LaTeX/TikZ version.
Here's the corresponding LaTeX code that I came up with:
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{mindmap, trees, shadows, shapes, calc, fadings, positioning, decorations.pathreplacing, intersections}
\usepackage{palatino}
\usetheme{Boadilla}
\usecolortheme{orchid}
\useinnertheme{rectangles}
\beamertemplateshadingbackground{gray!5}{gray!20}
\setbeamertemplate{navigation symbols}{}
\begin{document}
\begin{frame}{\small{IS Success: Updated DeLone \& McLean's (2003) Model*}}
\centering
\scalebox{0.8}{
\begin{tikzpicture}[node distance = 1cm] % , auto
% Styles (TODO/LoPri: switch from 'tikzstyle' to 'tikzset')
\tikzstyle{construct} = [rectangle,
ultra thick, rounded corners,
draw=blue, fill=blue!20, minimum height=1.25cm, minimum width=3.2cm, align=center, inner sep=0.5em]
\tikzstyle{smallconstruct} = [rectangle,
ultra thick, rounded corners,
draw=blue, fill=blue!20, minimum height=1.25cm, align=center, inner sep=0.5em] \tikzstyle{arrow} = [ultra thick, ->, >=stealth]
% Nodes
\node[construct, anchor=mid] (InformationQuality) {Information\\Quality};
\node[construct, anchor=mid] (SystemQuality) [below =1cm of InformationQuality] {System\\Quality};
\node[construct, anchor=mid] (ServiceQuality) [below =1cm of SystemQuality] {Service\\Quality};
\node[construct, anchor=mid] (UserSatisfaction) [above right =-0.10cm and 1cm of ServiceQuality] {User Satisfaction};
\node[smallconstruct, anchor=north west] (IntentionToUse) [above =1cm of UserSatisfaction] {Intention to\\Use};
\node[smallconstruct, anchor=mid] (Use) [right =0cm of IntentionToUse] {Use};
\node[construct, anchor=mid] (NetBenefits) [right =6cm of SystemQuality] {Net Benefits};
% Arrows
\draw[arrow] (InformationQuality.east) -- (IntentionToUse.west);
\draw[arrow] (InformationQuality.east) -- (UserSatisfaction.west);
\draw[arrow] (SystemQuality.east) -- (IntentionToUse.west);
\draw[arrow] (SystemQuality.east) -- (UserSatisfaction.west);
\draw[arrow] (ServiceQuality.east) -- (IntentionToUse.west);
\draw[arrow] (ServiceQuality.east) -- (UserSatisfaction.west);
\draw[arrow] (UserSatisfaction) -- (IntentionToUse);
\draw[arrow] (Use.south) -- (UserSatisfaction);
\draw[arrow] (Use) -- (NetBenefits);
\draw[arrow] (UserSatisfaction) -- (NetBenefits);
\draw[arrow] (NetBenefits) |- (IntentionToUse);
\draw[arrow] (NetBenefits) |- (UserSatisfaction);
\end{tikzpicture}
} % end \scalebox
% old way
%\includegraphics[scale=0.98]{images/DeLoneMcLeanUpdatedModel}
\vfill
\flushleft \tiny *Adapted from “The DeLone and McLean model of information systems success: A ten-year update.”,\\ by DeLone and McLean, 2003, \emph{Journal of Management Information Systems, 19}(4), p. 24.\\ Copyright 2003 by M.E. Sharpe, Inc. Adapted with permission.
\end{frame}
\end{document}
I need help with / advice on the following issues (thank you in advance):
I'm not sure how to specify a complex (more than one turn) path for arrows from Net Benefits to Use (north, west, south) and User Satisfaction (south, west, north), correspondingly (I've tried things like '|-|', but TikZ didn't "like" it);
I'm not sure what directive/command could I use to force arrows, originating from first column's boxes, arrive to second column boxes' sides not to a single place (in other words, I want to spread the ending tips of those arrows along the left/west side of corresponding boxes);
What is the reason of a horizontal shift between Intention to Use/Use and User Satisfaction boxes and how to fix that? A bonus would be a more elegant, but simple, way to ensure the same width of those boxes - as you see, I hardcoded the value; I've tried some approaches, hence
construct
andsmallconstruct
styles I've created, but haven't succeeded so far.
\documentclass{beamer}...\begin{document}...\end{document}
and it should compile.