Reduce line spacing in user defined environment

Having lots of figures and tables in my document, I have created two commands \source and \notes to format the source of the figure/table and add any notes (see MWE). The body text has double line spacing, how can I reduce the line spacing to one-half or single line spacing in my newly defined \notes environment?

\documentclass[a4paper, 12pt]{report}

\usepackage[english,frenchb]{babel}
\usepackage{graphicx}
\usepackage{subcaption}

\linespread{1.6} %Setting double spacing for document

%---- Create 'source' and 'notes' commands ----%
\newcommand{\source}[1]{\vspace{-1.5em}
\captionsetup{justification=justified} \caption*{\raggedright\textnormal{\footnotesize{\textit{#1}}}}}

\newcommand{\notes}[1]{\vspace{-0.5em}
% Would like 1.5 spacing for 'notes' environment
\captionsetup{justification=justified} \caption*{\textnormal{\scriptsize{\textit{#1}}}}}

\begin{document}

\begin{figure}[h!]
\begin{center}
\caption{A figure}
\resizebox{!}{70mm}{\includegraphics{{example-image-a}}}
\end{center}
\source{Source : source of figure.}
\notes{Notes : Some very long notes spread over several lines of which I would like to reduce linespacing. Some very long notes spread over several lines of which I would like to reduce linespacing. Some very long notes spread over several lines of which I would like to reduce linespacing. Some very long notes spread over several lines of which I would like to reduce linespacing.}
\end{figure}

Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text. Lots and lots of text.

\end{document}


Just add \linespread{0.0} (for single-spacing, or any other number as you like) to your definition of the \notes macro.

\documentclass{report}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{lipsum}

\newcommand{\source}[1]{%
\vspace{-1.5em}%
\captionsetup{justification=justified}%
\caption*{\raggedright\footnotesize\textit{#1}}%
}

\newcommand{\notes}[1]{%
\captionsetup{justification=justified}%
\caption*{\scriptsize\textit{#1}}%
}

\begin{document}

\begin{figure}[h!]
\begin{center}
\caption{A figure}
\includegraphics[height=70mm]{example-image-a}
\end{center}
\source{Source : source of figure.}
\notes{Notes : \lipsum[1]}
\end{figure}

\lipsum[2]

\end{document}


• While this is a quick solution using the approach you used in the question, you should really have a look at egreg's solution - there he shows the better way of choosing the line spacing. – Tiuri Aug 18 '17 at 9:17

Add the formatting instructions to \captionsetup and use setspace. Note that \linespread{1.6} is essentially the same as \doublespacing.

\documentclass[a4paper, 12pt]{report}

\usepackage[english,frenchb]{babel}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{setspace}

\doublespacing

%---- Create 'source' and 'notes' commands ----%
\newcommand{\source}[1]{%
\begingroup
\captionsetup{justification=raggedright,font={footnotesize,it,onehalfspacing}}%
\caption*{#1}%
\endgroup
}

\newcommand{\notes}[1]{%
\begingroup
\captionsetup{justification=justified,font={scriptsize,it,onehalfspacing}}%
\caption*{#1}%
\endgroup
}

\begin{document}

\begin{figure}[htp!]
\centering
\caption{A figure}
\includegraphics[width=70mm]{example-image-a}

\source{Source : source of figure.}
\notes{Notes : Some very long notes spread over several lines of which
I would like to reduce linespacing. Some very long notes spread over
several lines of which I would like to reduce linespacing. Some very
long notes spread over several lines of which I would like to reduce
linespacing. Some very long notes spread over several lines of which
I would like to reduce linespacing.}
\end{figure}

Lots and lots of text. Lots and lots of text. Lots and lots of text.
Lots and lots of text. Lots and lots of text. Lots and lots of text.
Lots and lots of text. Lots and lots of text. Lots and lots of text.
Lots and lots of text. Lots and lots of text. Lots and lots of text.
Lots and lots of text. Lots and lots of text. Lots and lots of text.
Lots and lots of text. Lots and lots of text. Lots and lots of text.
Lots and lots of text.

\end{document}


Doing this in a group will make the setting local.