I'm looking for a way to solve the diffusion equation with a non-linear source term, Equation 1 in the attached document, using the Crank-Nicolson method.
Using an implicit time integration method leads to a non-linear problem which has been solved at each time step as the one given in the attached document. For this purpose, a linearization is usually considered as Pr Filippo Maria Denaro mentioned in his answer. For example, Newton-like iteration approaches can be used when a second-order time accurate scheme is considered for the time integration.
For a number of reasons, an interesting second order alternative to Crank Nicolson which in spite of its apparent greater complexity is both more accurate and more efficient in many cases is the TR-BDF2 method, see for example
Hosea, M. E., and L. F. Shampine. "Analysis and implementation of TR-BDF2." Applied Numerical Mathematics 20.1-2 (1996): 21-37
Bonaventura, Luca, and A. Della Rocca. "Unconditionally strong stability preserving extensions of the TR-BDF2 method." Journal of Scientific Computing 70.2 (2017): 859-895.
In all these methods, nonlinear systems have to be solved by Newton iteration. Methods intrinsically based on linearization (so that NO Newton iterations are performed while keeping e.g. second order) are usually called Rosenbrock methods in the literature, see e.g.
Shampine, Lawrence F. "Implementation of Rosenbrock methods." ACM Transactions on Mathematical Software (TOMS) 8.2 (1982): 93-113.
I would use a Newton method to linearize the problem. It would require knowing the derivatives of your source function though. If that is a problem, there are other types of linearizations which could be applied, such as quasi-Newton methods.
Now, regarding the Crank-Nicholson scheme, there is an alternative way to applying it when your source function is very complicated. Have a look at: Conference Paper An efficient two-stage form of the Crank- Nicolson scheme wi...