I tried to use tikz and https://tex.stackexchange.com/a/270007/161413 to color arrows with several colors.
But I was also using mathtools, and found out that tikz and mathtools are not compatible as they both change the definition of :.
I applied the solution in https://tex.stackexchange.com/a/89470/161413 but still it does not work.
Here is my MWE (I am using XeLaTeX):
\documentclass{article}
\usepackage[
a4paper,
margin=30mm
]{geometry}
\usepackage{amsmath, amssymb, amsthm}
\usepackage{tikz}
\usepackage{mathtools} % commenting this line works
\usepackage{etoolbox}
\makeatletter
\AtEndPreamble{
\ifnum\mathcode\:=\string"8000 \begingroup\lccode~=\: \lowercase{\endgroup\let\math@colon@meaning~} \else \expandafter\let\expandafter\math@colon@meaning\string: \fi } \AtBeginDocument{ \ifnum\catcode:=\active
\letcs\text@colon@meaning{active@char\string:}
\else
\expandafter\let\expandafter\text@colon@meaning\string:
\fi
\protected\def\tikz@nonactivecolon{%
\ifmmode
\expandafter\math@colon@meaning
\else
\expandafter\text@colon@meaning
\fi}
\begingroup\lccode\~=:
\lowercase{\endgroup\let~\tikz@nonactivecolon}
}
\makeatother
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\usetikzlibrary{intersections}
\usetikzlibrary{decorations.markings}
\newlength\mylen
\tikzset{
bicolor/.style n args={2}{
decoration={
markings,
mark=at position 0.5 with {
\node[draw=none,inner sep=0pt,fill=none,text width=0pt,minimum size=0pt] {\global\setlength\mylen{\pgfdecoratedpathlength}};
},
},
draw=#1,
dash pattern=on 0.5\mylen off 0.5\mylen,
preaction={decorate},
postaction={
draw=#2,
dash pattern=on 0.5\mylen off 0.5\mylen,dash phase=0.5\mylen
},
}
}
\begin{document}
\begin{tikzpicture}
\node (bbb) at (0,0) {bbb};
\node (baa) at (150:3) {baa};
\draw[->, bicolor={cyan}{red!80!black}]
(baa) to[out=-80,in=150] (bbb);
\end{tikzpicture}
\end{document}


:but compatibility withcalcpackage? – Jaehyeon Seo Jul 23 '20 at 14:05