I was just doing a project in sharelatex and from one time to another the white spaces shown in the figure appeared, the white spaces are the ones between subsections.

I've spent 20 minutes trying to trace the problem but have not managed to remove it, I'm a newbie in latex and I really don't know what could have caused it. The things that I have added (apart from the text, images and other things) are.
\usepackage{xcolor}
To use colors that color package couldn't handle.
\usepackage{moresize}
To use \ssmal
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{ %
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\footnotesize, % the size of the fonts that are used for the code
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{mygreen}, % comment style
deletekeywords={...}, % if you want to delete keywords from the given language
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
frame=single, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{blue}, % keyword style
language=Octave, % the language of the code
morekeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=0, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{mymauve}, % string literal style
tabsize=1, % sets default tabsize to 2 spaces
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
\lstdefinestyle{customc}{
belowcaptionskip=1\baselineskip,
breaklines=true,
frame=L,
xleftmargin=\parindent,
language=C,
showstringspaces=false,
basicstyle=\footnotesize\ttfamily,
keywordstyle=\bfseries\color{green!40!black},
commentstyle=\itshape\color{purple!40!black},
identifierstyle=\color{blue},
stringstyle=\color{orange},
}
\lstdefinestyle{customasm}{
belowcaptionskip=1\baselineskip,
frame=L,
xleftmargin=\parindent,
language=[x86masm]Assembler,
basicstyle=\footnotesize\ttfamily,
commentstyle=\itshape\color{purple!40!black},
}
\lstset{escapechar=@,style=customc}
To show source code on my PDF (source).
\setlength{\parindent}{0pt}
To remove the tab globally.
---------------------------- The complete code is here -----------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Source: http://en.wikibooks.org/wiki/LaTeX/Hyperlinks %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage[english]{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 'dedication' environment: To add a dedication paragraph at the start of book %
% Source: http://www.tug.org/pipermail/texhax/2010-June/015184.html %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{dedication}
{
\cleardoublepage
\thispagestyle{empty}
\vspace*{\stretch{1}}
\hfill\begin{minipage}[t]{0.66\textwidth}
\raggedright
}
{
\end{minipage}
\vspace*{\stretch{3}}
\clearpage
}
\setlength{\parindent}{0pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Chapter quote at the start of chapter %
% Source: http://tex.stackexchange.com/a/53380 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\renewcommand{\@chapapp}{}% Not necessary...
\newenvironment{chapquote}[2][2em]
{\setlength{\@tempdima}{#1}%
\def\chapquote@author{#2}%
\parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax%
\itshape}
{\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% First page of book which contains 'stuff' like: %
% - Book title, subtitle %
% - Book author name %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Book's title and subtitle
\title{\Huge \textbf{Lenguaje C} \footnote{This is a footnote.} \\ \huge Conociendo C a fondo \footnote{This is yet another footnote.}}
% Author
\author{\textsc{cursillosonline}\thanks{\url{www.example.com}}}
\begin{document}
\frontmatter
\maketitle
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Auto-generated table of contents, list of figures and list of tables %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tableofcontents
\mainmatter
%%%%%%%%%%%%%%%%
% NEW CHAPTER! %
%%%%%%%%%%%%%%%%
\chapter{Introduccion}
\section{Estandares del lenguaje}
Desde el desarrollo del lenguaje C, que empezo en 1969 en los laboratorios Bell de AT\&T el lenguaje a sufrido varios cambios, las principales transformaciones, a continuacion se puede ver un resumen de estas.
\subsection{K\&R C}
En 1978, cuando se publico la primera edición de "El Lenguaje de Programación C", esta fue considerada durante muchos años como una especificacion informal del lenguaje C, ya que en un principio no existia un estandar para el lenguaje, muchos programadores se referian a esta version de C como K\&R C.
\subsection{ANSI/ISO C}
Esta version propone la primera especificacion formal del lenguaje C, este estandar tambíen es conocido como ANSI C, C89 o C90, y en este estandar se definio el lenguaje C asi como sus bibliotecas estandares. El ANSI C original fue adoptado por el ANSI en 1989 y por la ISO en 1990, de alli vienen los nombres C89 y C90, aunque ambos terminos se refieren a exactamente el mismo lenguaje.
\subsection{C99}
El proceso de la estandarizacion del ANSI C hizo que la especificacion del lenguaje permaneciera estable por un tiempo, pero aun asi el lenguaje continuo bajo revision a finales de la decada del 90, lo que culmino en el estandar C99 que fue adoptado como un estandar ANSI en el año 2000. Este estandar propone nuevas caracteristicas, tales como el uso de funciones inline, nuevos tipos de datos, arreglos de largo variable y soporte para comentarios de una linea, entre otras cosas.
\subsection{C11}
El ultimo estandar a la fecha que remplaza al C99, agrega nuevas funcionalidades, tales como para el soporte de programacion multithread, un mejor soporte Unicode, entre otras cosas.
\section{Creando un programa ejecutable en C}
El proceso de convertir un codigo fuente a un programa ejecutable en C, a grandes razgos, se hace en dos pasos: Compilacion y enlazado, el proceso de compilacion es efectuada por el compilador que toma el codigo fuente y lo convierte a un codigo intermedio (generalmente a lenguaje de maquina en un archivo objeto), y aca es donde entra el enlazador, que combina este archivo compilado resultante de la compilacion con librerias precompiladas para crear el programa ejecutable.
Falta especificar lo del start-up code.
En la siguiente imagen se puede apreciar a grandes razgos el proceso de compilacion y enlazado.
\hfill \break
\includegraphics[width=\textwidth]{complinkc.png}
{\ssmall \textbf{Notas}
\begin{itemize}
\item{En algunos sistemas se debe de ejecutar el compilador y el enlazador separadamente, en otros el compilador automaticamente ejecuta el enlazador.}
\item{El archivo objecto es la traduccion del codigo fuente a lenguaje de maquina, pero no es un programa todavia.}
\end{itemize}}
\section{El primer programa en C}
\begin{lstlisting}
#include <stdio.h>
int main() {
int num;
num = 1;
printf("I am a simple ");
printf("computer.\n");
printf("My favorite number is %d.\n", num);
return 0;
}
\end{lstlisting}
Podemos ver en el codigo varias instrucciones que quizas no se entiendan a primera vista, pero no se preocupen, estas las explicare detalladamente a continuacion. \vspace{\baselineskip}
\textbf{Directiva de preprocesador include} \\
La directiva de preprocesador include incluye en nuestro codigo fuente otro archivo, lo que hace esta directiva es literalmente un copy-paste del archivo especificado a incluir. \vspace{\baselineskip}
{\ssmall \textbf{Nota}: Cuando incluimos archivos de la biblioteca estandar, se incluye informacion acerca de funciones, constantes, macros, entre otras cosas, pero el codigo real se encuentra en una libreria precompilada.} \vspace{\baselineskip}
\textbf{La funcion main} \\
La funcion main es la funcion principal del programa y es por donde se empieza la ejecucion de un programa en C (la gran mayoria de las veces), el int que esta antes de la palabra main nos esta diciendo que la funcion main va a retornar un valor de tipo entero. \vspace{\baselineskip}
Ademas de esto se tienen los parentesis () y las llaves \{\}, los parentesis sirven para definir los argumentos de la funcion main, en este caso no le hemos pasado ningun argumento, pero podriamos hacerlo, por ultimo tenemos las llaves que son para definir el bloque de instrucciones de la funcion main. En general, todas las funciones en C usan las llaves para delimitar el principio y fin de estas. \vspace{\baselineskip}
\textbf{Comentarios} \\
Los comentarios sirven para hacer mas legible el codigo fuente (para otras personas y para uno mismo) de un programa, por lo que son ignorados por el compilador, los comentarios en C se pueden hacer de do formas, una es usando /* */, donde todo lo escrito entre los simbolos /* y */ seran comentarios, ademas de esto tambien se pueden hacer comentarios usando dos slashs seguidos //, en donde todo lo que este escrito al lado derecho de los slashs sera considerado como un comentario hasta el fin de la linea. \vspace{\baselineskip}
{\ssmall \textbf{Nota}: El uso de doble slashs para hacer comentarios es una caracteristica que se definio en el c99.} \vspace{\baselineskip}
\textbf{Declaraciones} \\
La sentencia \textit{int num;} hace una declaracion (y mas correctamente una definicion) en donde le espicifica al compilador que el programa usara una variable que tendra un identificador (un nombre que identificara a la variable) que en este caso sera num, y que ademas esta variable sera de tipo int (el tipo int en C indica un numero entero). El compilador usara esta infomacion para almacenar de forma adecuada a la variable en la memoria.
Vale la pena mencionar que en contraste con otros lenguaje de programacion, en C es necesario declarar las variables (con su tipo e identificador correspondiente) antes de la ejecucion del programa. \vspace{\baselineskip}
\begin{itemize}
\item{\textbf{Identificador:} Al momento de elegir un nombre es recomendable usar uno que tenga un significado intuitivo y que uno pueda darse una idea de que para que se va a usar, esto es un principio basico de las buenas practicas de la programacion.
Ademas de esto, a las variables no se les puede dar cuaquier nombre, sino que hay reglas que seguir, por ejemplo el estandar de C especifica que solo se pueden usar letas (mayusculas o minusculas), numeros y el signo '\_', con la regla de que el primer termino del identificador no puede ser un numero.} \vspace{\baselineskip}
\textbf{Ejemplo}
\begin{center}
\begin{tabular}{ | p{5cm} | p{5cm} |}
\hline
\textbf{Identificadores validos} & \textbf{Identificadores invalidos} \\ \hline
camion & 1abc \\ \hline
juan\_01 & name? \\ \hline
numero\_estudiantes & dia-semana \\ \hline
\end{tabular}
\end{center}
\end{itemize}
\end{document}
\documentclassand missing graphics files. – cfr Dec 17 '14 at 00:06\includegraphics[..]{complinkc.png}). Since it won't fit on the page and your issue of\breakis not followed by an empty line, TeX want's to put it on the current page. Why not make it float? – Werner Dec 17 '14 at 00:09\raggedbottomdid the job. Thanks guys. – OiciTrap Dec 17 '14 at 00:15