% \iffalse meta-comment
%
% Copyright (C) 2019 by Henrik Skov Midtiby <henrikmidtiby@gmail.com>
% -------------------------------------------------------
% 
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{todonotes.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{todonotes}
%<*package>
    [2024/01/05 v1.1.7 Todonotes source and documentation.]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{wrapfig}
\usepackage[colorlinks, linkcolor=black, urlcolor=blue]{hyperref}
\usepackage[colorinlistoftodos, loadshadowlibrary]{todonotes}[2024/01/05]
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{soul}
\setcounter{tocdepth}{2}
\EnableCrossrefs         
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{todonotes.dtx}
%\iffalse
%  \PrintChanges
%  \PrintIndex
%\fi
\end{document}
%</driver>
% \fi
%
% \CheckSum{766}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \changes{0.1}{2008/04/17}{The first version of the package}
% \changes{0.2}{2008/05/15}{Updated the option handling of the package}
% \changes{0.2.1}{2008/05/16}{Slightly modified by Kjell Magne Fauske to 
%             support notes in the left margin (for documentstyle book).}
% \changes{0.2.2}{2008/05/28}{Added a missingfigure command}
% \changes{0.2.3}{2008/06/10}{Made a dependency on the calc package}
% \changes{0.3}{2008/07/11}{Delayed the requirements for the hyperref package
%             untill begin document and added an optional argument
%             to the todo command for adding inline todonotes (Idea
%             from Patrick Toche)}
% \changes{0.3.1}{2008/07/15}{Added some options to the todo macro (Idea: Patrick
%             Toche) and made the \\listoftodos point at the inserted
%             todos and not only the current / previous section, 
%             subsection or figure using the \\phantomsection macro.}
% \changes{0.4}{2008/07/28}{Modified the behaviour of the inline todonotes, to
%             avoid empty lines around the inline todonotes.}
% \changes{0.4.1}{2008/07/28}{
%             Added the option colorinlistoftodos which inserts a
%             small box with the used fillcolor of the todonotes in
%             the list of todos.}
% \changes{0.4.2}{2008/07/30}{Fixed a bug with the disable option to the
%             package.}
% \changes{0.5}{2008/08/05}{Created a dtx file containing both source
%             code and documentation of the package}
% \changes{0.5.1}{2008/09/15}{Updated the documentation}
% \changes{0.5.2}{2008/10/20}{Fixed a bug that prevented the usage
%             of the option french for babel. Bug report by Thomas
%             Braun.}
% \changes{0.6}{2008/10/24}{Added the caption option to the todo
%             command.}
% \changes{0.6.1}{2008/11/07}{Added a new usecase with decreased line
%             spacing.}
% \changes{0.6.2}{2008/11/13}{Added a usecase by Fabrice Niessen.}
% \changes{0.7}{2008/11/22}{Added language options on request from
%             Peter Zimmermann.}
% \changes{0.7.1}{2008/12/07}{Reworked the color options for both
%             the whole package and the todo command. General code
%             clean up. Added the prependcaption package option.}
% \changes{0.7.2}{2008/12/27}{Avoid to change the fontsize inside
%             the list of todos, fixing a bug revealed by Vladimir
%             Zhuravlev.}
% \changes{0.7.3}{2008/12/30}{The localization options (danish and
%             german) and the disable options, were all flawed by
%             naming inconsistencies that made then break the
%             package. This have been fixed.}
% \changes{0.7.4}{2008/12/30}{Fixed a bug related to the caption
%             option for the todo command. Introduced a counter of
%             the number of inserted todos.}
% \changes{0.7.5}{2009/01/02}{Fixed a typo in a macroname.}
% \changes{0.7.6}{2009/01/04}{Added a textsize option for the
%             package and the prepend / noprepend option for the
%             todo command.}
% \changes{0.8}{2009/01/09}{Added three new translations french,
%             spanish and catalan thanks to Richard Dominique and
%             Joan Queralt. Improved the visual appearence of the
%             inserted notes (rounded corners and optional shadows) 
%             with code from Joan Queralt. Found an untranslated
%             textstring ''Figure'' in the source. Added a figwidth
%             option to the missingfigure command, patch by Paul
%             Ivanov.}
% \changes{0.8.1}{2009/01/12}{Added a space between the colored
%             square and the text in the list of todos. Added a new
%             usecase for marking old / new sections. Made the name
%             of listoftodos changeable.}
% \changes{0.8.2}{2009/02/04}{Italian translation by Gustavo
%             Cevolani. Removed the dependence on the hyperref
%             package.}
% \changes{0.8.3}{2009/03/31}{Added a use case for linking to the 
%             list of todos, idea from Andreas Plank. Introduced a
%             package option for listening to the draft option given
%             to the document class.}
% \changes{0.8.4}{2009/04/02}{Fixed a bug related to the obeyDraft
%             option.} 
% \changes{0.8.5}{2009/08/01}{Added two new usecases (enumeration of 
%             inserted todonotes and how to set custom default values). 
%             Changed the order of the use case examples.}
% \changes{0.8.6}{2009/08/05}{Added a portuguese translation by Og DeSouza.}
% \changes{0.8.7}{2009/10/24}{Updated portuguese translation. Added a ngerman 
%             alias for the german translation suggested by Michael Niedermair.}
% \changes{0.8.8}{2009/12/07}{Added a new usecase from Vitaly. Fixed a 
%             bug reported by Oscar Gustafsson. Explained why the placement
%             of todonotes in the margin fails in certain custom document classes.}
% \changes{0.8.9}{2009/12/25}{Added a dutch translation by Ruben Ruben Vermeersch.}
% \changes{0.9.0}{2010/09/13}{Added a english option as suggested by Marco Berghoff.}
% \changes{0.9.1}{2010/09/13}{Added the todototoc command by idea from Sven Augustin.}
% \changes{0.9.2}{2010/09/13}{Use chapter (if available) for the list of todos heading.}
% \changes{0.9.3}{2010/09/13}{Make an internal definition of the todo command, 
%             for easing redefinition of the command behaviour.}
% \changes{0.9.4}{2010/09/26}{Make the disable option work on a local scale.}
% \changes{0.9.5}{2010/09/26}{Code simplification by extracting functionality to 
%             smaller macros.}
% \changes{0.9.6}{2010/11/04}{Give fontsize to TikZ. Align notes with line where note 
%             is set. Added new option fancyline. Patches by Benjamin Kellermann.}
% \changes{0.9.7}{2011/03/07}{Updated documentation.}
% \changes{0.9.8}{2011/04/21}{Suppress warnings about underfull / overful boxes 
%             generated by the inserted todonotes. Patch by Peter M Schuler.}
% \changes{0.9.9}{2011/10/22}{Added author option, implementation provided by 
%             Xavier Alameda-Pineda. Example of modifying the 
%             listoftodos removing some protect commands with no effect.}
% \changes{1.0.0}{2012/07/25}{Mention trouble with the classicthesis style. 
%             Refer to some alternatives to the package.
%             Added todoin command as suggested by Stefan Pinnow.
%             Described how to use tikz externalize with todonotes.
%             Added obeyDraft and obeyFinal options.}
% \changes{1.0.1}{2012/11/24}{Fix spacing issues reported by Jonathan Zachhuber and 
%             Brent Longborough.
%             Added figheight option to the missingfigure command as suggested by Kim Albertsson.}
% \changes{1.0.2}{2014/07/14}{Added Swedish translation by Emil Lundberg. 
%             Added usecase by Tobias Winchen.
%             Mentioned that default arguments can be set using the presetkeys command.
%             Updated list of alternatives to the todonotes package.
%             Draw borders around coloured boxes in the list of todos, patch by Ze Loff.}
% \changes{1.0.3}{2014/10/21}{Added the option figcolor to missing figure, patch by Pascal Hebbeker.
%             Added Croatian translation by Ican Kokan.
%             Changed default with of missingfigure.
%             Removed some underfull box warnings, solution by Ernst Blecha.} 
% \changes{1.0.4}{2015/07/09}{Restructured documentation and placed some examples in the 
%             doc/examples subdirectory.}
% \changes{1.0.5}{2016/11/02}{Example of how to change the space eating behaviour 
%             added by Anselm Wagner. 
%             Reduced the width of missingfigure to avoid bad box warnings.}
% \changes{1.0.6}{2018/07/09}{Changed how whitespaces are handled around inserted 
%             todos to better mimick macros like index (Suggestion by Frank Mittelbach). 
%             Fix missing character warnings using patch by Niels Anders Danielsson. 
%             Use the specified textsize for missingfigure, patch by Johannes Twittmann. 
%             Added new options for inline todonotes based on code from Daniel Krenn. 
%             Added warning message when marginparwidth is less than 2cm, as 
%             suggested by ErikBoesen.}
% \changes{1.0.7}{2018/07/09}{Changed the warning about marginparwidth to a 
%             proper warning message.} 
% \changes{1.0.8}{2018/09/08}{Improved spacing behaviour so it mimics the index macro, 
%             patch by Frank Mittelbach. 
%             Center graphics vertically in missingfigure, patch by Philipp Allgeuer.
%             Added new option tickmarkheight as suggested by Richard Niland.}
% \changes{1.1.0}{2018/10/17}{Many improvements to the user interface by Frank Mittelbach.
%             Added the command setuptodonotes. Added textcolor as an option.
%             Marked the insertion point of notes with tickmarks with a customizable height.
%             Steamline which options that are accepted to size commands 
%             (both commands (backslash tiny) and text (tiny) are now supported).} 
% \changes{1.1.1}{2018/11/22}{Implemented shadow and noshadow options for the todo command.}
% \changes{1.1.2}{2019/01/24}{Fix issue 36 and 37.}
% \changes{1.1.3}{2020/08/18}{Fix issue 48 and make colors used in the last todo 
%             globally available.}
% \changes{1.1.4}{2021/04/26}{Fix issue 51 by avoid loading the tikz shadows 
%             library by default.}
% \changes{1.1.5}{2021/06/04}{Fix issue 54 related to additional spacing around todos with 
%             shadows. Actually use the tickmarkheight option as suggested by 
%             José Francisco Loff library by default. Described a workaround for using 
%             the standalone document class.}
% \changes{1.1.6}{2023/01/31}{Fix issue 64 by adding the command definetodostyle and 
%             the format option to the todo and missingfigure commands. 
%             Pull request by rzach.}
% \changes{1.1.7}{2024/01/05}{Fix issue 73 by providing default values for parameters 
%             needed to typeset the list of todos.}
% \GetFileInfo{todonotes.dtx}   
%
% \DoNotIndex{\newcommand,\newenvironment}
%
% \iffalse
% A macro for marking things todo before the next relase
% (typically update of documentation).
% \fi
% \newcommand{\donow}[1]{\todo[color=blue]{#1}}
% 
%
% \title{The \textsf{todonotes} package\thanks{This document
%   corresponds to \textsf{todonotes}~\fileversion, dated \filedate.}}
% \author{Henrik Skov Midtiby \\ \texttt{henrikmidtiby@gmail.com}}
%
% \maketitle
%
% \begin{abstract}
% The |todonotes| package allows you to insert to--do items in your
% document. At any point in the document a list of all the inserted
% to--do items can be listed with the |\listoftodos| command.
% \end{abstract}
%
% \tableofcontents
%
% \newpage
% \section{Introduction}
%
% The |todonotes| package makes four commands available to the
% user: |\todo[]{}|, |\missingfigure{}| and |\listoftodos|.
% |\todo[]{}| and |\missingfigure{}| makes it possible to insert
% notes in your document about things that has to be done later
% (todonotes \ldots). 
% The |\todostyle| command allows the user to 
% define named custom styles as abbreviations for lists of other
% options that can be given to the |\todo| command.
% I developed the basic functionality of the package while I worked
% on my bachelor project.
% 
% Some alternatives for the todonotes package are:
% \begin{itemize}
% \item \href{http://ctan.org/pkg/easy-todo}{easy-todo}\\
% Depends on |color|, |tocloft| and |ifthen|, small feature set.
% \item \href{http://ctan.org/pkg/fixmetodonotes}{fixmetodonotes}\\
% Depends on |graphicx|, |color|, |transparent|, |watermark|,|fix-cm|, |ulem| and |tocloft|, small feature set.
% \item \href{http://ctan.org/pkg/todo}{todo}\\
% Depends on |amssymb|, medium feature set.
% \item \href{http://ctan.org/pkg/fixme}{fixme}\\
% Large package with a lot of features.
% \end{itemize}
% The main reason for considering other packages is that the todonotes 
% package is quite large and relies heavily on tikz.
% This can slow down compilation of large documents significantly.
% The mentioned alternatives have a different feature set and does not 
% rely on tikz, which makes them require fewer resources.
%
%
% \subsection{Usage}
%
% \DescribeMacro{\todo}
% My \index{\todo}most common usage of the todonotes package, is to 
% insert an todonotes somewhere in a latex document. 
% An example of this usage is the command 
%
% |\todo{Make a cake \ldots}|, 
% 
% \noindent
% which renders like\todo{Make a cake \ldots}.
% The |\todo| command has this structure: 
% |\todo|\oarg{options}\marg{todo text}.
% The |todo text| is the text that will be shown in the todonote and
% in the list of todos. The optional argument |options|, allows the
% user to customize the appearance of the inserted todonotes.
% For a description of all the options see section
% \ref{subsecTodoOptions}.
%
%
% \DescribeMacro{\missingfigure}
% The |\missingfigure| command inserts an image containing an 
% attention sign and the given text.
% The command takes only one argument
% |\missingfigure|\marg{text}, a text string that could
% describe what the figure should consist of.
% An example of its usage could be 
%
% |\missingfigure{Make a sketch of the structure of a trebuchet.}| 
%
% \noindent
% which renders like.
%
% \missingfigure{Make a sketch of the structure of a trebuchet.}
%
%
% \DescribeMacro{\listoftodos}
% The |\listoftodos| command inserts a list of all the todos in the
% current document. |\listoftodos| takes no arguments.
% For this document the list of to--do's looks like.
% \listoftodos
% \vspace{0.5cm}
%
% \DescribeMacro{\todototoc}
% The |\todototoc| command adds an entry to the table of contents for 
% list of todos. The command should be placed right before the 
% |\listoftodos| command.
%
% \DescribeMacro{\todostyle\marg{name}\marg{style}}
% The |\todostyle| command defines a new optional argument to the
% |\todo| command \meta{name} which sets the options given by
% \meta{style}. For instance, after issuing
% \begin{verbatim}
% \todostyle{red}{color=red,shadow}\end{verbatim}
% the command |\todonote[red]{Stuff}| has the same effect as:
% \begin{verbatim}
% \todonote[color=red,shadow]{Stuff}\end{verbatim}
% Defined styles should be used
% as the first optional argument to |\todo|, as they reset all
% predefined options to their defaults.
%
% \subsection{Package options}
% \label{subsecPackageOptions}
% \DescribeMacro{disable}
% If the option |disable| is passed to the package, the macros
% usually defined by the package (|\todo|, |\listoftodos| and
% |\missingfigure|) are defined as macros with no effect, and thus
% all inserted notes are removed.
%
% \DescribeMacro{obeyDraft, obeyFinal}
% When the option |obeyDraft| is given, the package checks
% if the one of the options |draft|, |draftcls| or |draftclsnofoot| 
% is given (this option is usually given to
% the documentclass). If the |draft| option is given, the
% functionality of the package is enabled and otherwise the effect
% of the package is disabled.
% The option |obeyFinal| does something similar, except that the 
% todonotes package is only disabled if the |final| option given.
%
% \DescribeMacro{danish, german, ngerman, english, french, swedish}
% \DescribeMacro{spanish, catalan, italian}
% \DescribeMacro{portuguese, dutch, croatian}
% Use translations of the text strings 
% ''List of todos'' and ''Missing figure''.
% The default is to use none of these options, which results in
% english text strings.
% Currently the following languages are supported: 
% catalan,
% croatian,
% danish,
% dutch,
% english, 
% french,
% german,
% ngerman,
% italian,
% portuguese,
% spanish and
% swedish.
% 
% \DescribeMacro{colorinlistoftodos}
% Adds a small colored square in front of all items in the Todo
% list. The color of the square is the same as the fill color of the
% inserted todonote.
% This can be useful if there are different types of todos 
% (insert reference, explain in detail, \ldots) where the color of
% the inserted todonote marks the type of todo.
%
% \DescribeMacro{color}
% \DescribeMacro{backgroundcolor}
% \DescribeMacro{textcolor}
% \DescribeMacro{linecolor}
% \DescribeMacro{bordercolor}
% These options sets the default colors for the todo command.
% There are four colors that can be specified. The border color
% (default |bordercolor=black|) around the inserted text, the color
% behind the inserted text (default |backgroundcolor=orange|), the 
% color of the inserted text (default |textcolor=black|) and
% the color of the line connecting the inserted textbox with the
% current location in the text (default |linecolor=orange|). 
% Setting the |color| option to |val| passes this value on to the 
% background and line color options.
% The specified colors must be valid according to the 
% |xcolor| package.
% 
% \DescribeMacro{tickmarkheight}
% |tickmarkheight=length| set the height of the tickmark at
% the location where the todo is inserted, the default value is |0pt|.
%
% \DescribeMacro{textwidth}
% |textwidth=length| sets the width of a todo item in the margin to
% |length|. The width of inline todonotes defaults to the width of the 
% current |\linewidth| but can be adjusted using the 
% |inlinewidth| option.
%
% \DescribeMacro{textsize}
% |textsize=value| sets the default text size of the inserted
% todonotes to the given value.
% Value is the ''name'' of the used font size, eg. if the desired
% fontsize is |\tiny| use |textsize=tiny|. The default value is 
% |textsize=normalsize|.
%
% \DescribeMacro{prependcaption}
% The |prependcaption| option triggers a special behaviour of the
% |caption=val| option for the todo command, where the given value
% |val| is inserted in the inserted todonote.
% 
% \DescribeMacro{loadshadowlibrary}
% If given, the |shadows| tikz library will be loaded. This is required 
% for adding shadows to the inserted todonotes.
%
% \DescribeMacro{shadow}
% If the |shadow| option is given, the inserted todonotes will by 
% default be displayed with a gray shadow.
% For this to work, the package option |loadshadowlibrary| must be 
% provided.
% I expect that the option will trigger problems with tikz versions
% prior to 2.0.
%
% \DescribeMacro{dvistyle}
% When a document with todonotes is compiled with plain latex (to a
% dvi-file), there is an issue with the visual
% appearance\footnote{The problem is placement of text inside the
% colored boxes.}.
% The option |dvistyle| changes the appearance of the inserted
% todonotes to avoid this problem.
%
% \DescribeMacro{figwidth}
% The |figwidth=length| option sets the default width of the figure
% inserted by the |\missingfigure| command. 
% The default value is |\linewidth|.
%
% 
%
% \subsection{Options for the todo command}
% \label{subsecTodoOptions}
% There are several options that can be given to the |\todo|
% command. All the options are described here and often I have
% included examples of the change in visual appearance.
% Default values for these options can be set using the setuptodonotes 
% command.
% \begin{verbatim}
% \setuptodonotes{fancyline, color=blue!30}
% \end{verbatim}
%
% \DescribeMacro{disable}
% The |disable| option can be given directly to the todo command.
% If given the command has no effect.
%
% \DescribeMacro{color}
% \DescribeMacro{backgroundcolor}
% \DescribeMacro{textcolor}
% \DescribeMacro{linecolor}
% \DescribeMacro{bordercolor}
% These options set the color that is used in the current todo
% command.
% The color classes is the same as used in the color package
% options, see section \ref{subsecPackageOptions}.
% Default values can be set by the color
% options when the todonotes package is loaded.
% \todo[color=green!40]{And a green note}
% The todo notes inserted in this paragraph is created with the
% command
% |\todo[color=green!40]{And a green note}|.
% The color of the inserted note could be used to mark different
% types of tasks (insert references, explain something in detail,
% \ldots), this could be streamlined by defining new commands like
% below.
% \begin{verbatim}
% \newcommand{\insertref}[1]{\todo[color=green!40]{#1}}
% \newcommand{\explainindetail}[1]{\todo[color=red!40]{#1}}
% \end{verbatim}
% An example that uses all of the color options is given
% below\todo[linecolor=green!70!white, backgroundcolor=blue!20!white,
% bordercolor=red, textcolor=yellow]{Anything but default colors}.
% \begin{verbatim}
% \todo[linecolor=green!70!white, backgroundcolor=blue!20!white,
% bordercolor=red, textcolor=yellow]{Anything but default colors}.
% \end{verbatim}
%
%
% \DescribeMacro{shadow / noshadow}
% If the package is loaded with the |shadow| option, 
% a shadow is added to all notes, otherwise no shadows are shown.
% This global setting can be overwritten by the |shadow| and |noshadow|
% \todo[noshadow]{A note without a shadow}
% options to the todo command.
% To insert a note with and without shadows, use the |shadow| 
% \todo[shadow]{A note with a shadow}
% and |noshadow| options as shown here:
% \begin{verbatim}
% \todo[shadow]{A note with a shadow}
% \todo[noshadow]{A note without a shadow}
% \end{verbatim}
%
% \DescribeMacro{tickmarkheight}
% |tickmarkheight=length| set the height of the tickmark at
% the location where the todo is inserted.
% An example of the option in use is shown here.
% \todo[tickmarkheight=0.1cm]{Test of option.}
% \begin{verbatim}
% \todo[tickmarkheight=0.1cm]{Test of option.}
% \end{verbatim}
%
%
% \DescribeMacro{line / noline}
% If you want to get rid of the line connecting the inserted note
% with the place in the text where the note occurs in the latex
% code, the option |noline| can be used.
% \todo[noline]{A note with no line connecting it to the placement
% in the original text.}
% |\todo[noline]{A note with no line ...}|
% \vspace{1.0cm}
% 
%
% \DescribeMacro{inline / noinline}
% It is possible to place a todonote inside the text instead of
% placing it in the margin, this could be desirable if the text in
% the note has a considerable length.
% |\todo[inline]{A todonote placed in the text}|
% \todo[inline]{A todonote placed in the text}

% \begin{wrapfigure}[1]{r}[20mm]{40mm}
% \begin{tikzpicture}
% \draw[red] (0, 0) circle(0.45);
% \draw[green] (1, 0) circle(0.45);
% \draw[blue] (2, 0) circle(0.45);
% \end{tikzpicture}
% \caption{A text explaining the image.
% \todo[inline]{Fill those circles \ldots}}
% \end{wrapfigure}
% Another usage for the inline option is when you want to add a
% todonote to a figure caption.
%
% \begin{verbatim}
% \begin{wrapfigure}{r}[20mm]{40mm}
% \begin{tikzpicture}
% \draw[red] (0, 0) circle(0.45);
% \draw[green] (1, 0) circle(0.45);
% \draw[blue] (2, 0) circle(0.45);
% \end{tikzpicture}
% \caption{A text explaining the image.
% \todo[inline]{Fill those circles \ldots}}
% \end{wrapfigure}
% \end{verbatim}
%
% \DescribeMacro{size}
% |size=val| changes the size of the text inside the todonote.
% The commands used to create the notes below are \\ \noindent
% |\todo[size=\Large]{A note with a large font size.}|
% and \\ \noindent
% |\todo[inline, size=\tiny]{Note with very small font size.}|.
% \todo[size=\Large]{A note with a large font size.}
% \todo[inline, size=\footnotesize]{Note with very small font size.}
%
% \DescribeMacro{list / nolist}
% When the option |nolist| is given, the todo item will not appear in
% the list of todos.
%
% \DescribeMacro{caption}
% The |caption| option enables the user to specify a short
% description of the todonote that are inserted in the list of
% todos instead of the full todonote text.
% \todo[caption={Short note}]{A very long and tedious note that
% cannot be on one line in the list of todos.}
% \begin{verbatim}
% \todo[caption={Short note}]{A very long and tedious note that
% cannot be on one line in the list of todos.}.
% \end{verbatim}
% The effect of this option is altered with the package option
% |prependcaption| or the |prepend| / |noprepend| option for the
% todo command.
%
% \DescribeMacro{prepend / noprepend}
% The options |prepend| and |noprepend| can be used for setting
% whether a given caption should be prepended to the todonote or
% not.
% Globally this can be set using the |prependcaption| option for the
% package.~\todo[prepend, caption={Short note with prepend}]{A very
% long and tedious note that cannot be on one line in the list of
% todos.} Below is the effect of the option shown using the code:
% \todo[noprepend, caption={Short note with noprepend}]{A very long
% and tedious note that cannot be on one line in the list of
% todos.}
% \begin{verbatim}
% \todo[prepend, caption={Short note with prepend}]{A very long and tedious 
% note that cannot be on one line in the list of todos.}.
% \todo[noprepend, caption={Short note with noprepend}]{A very long and 
% tedious note that cannot be on one line in the list of todos.}.
% \end{verbatim}
%
% \DescribeMacro{fancyline}
% The |fancyline| option inserts a curved arrow, pointing from the inserted 
% note to the insertion point.
% \todo[fancyline]{Testing.}
% The option is used like this:
% \begin{verbatim}
% \todo[fancyline]{Testing.}
% \end{verbatim}
%
%
% \DescribeMacro{author}
% The |author| option takes a parameter, the name of the author.
% The given name is inserted in the todonote.
% \todo[author=Xavier]{Testing author option.}
% \todo[author=Xavier, inline]{Testing author option.}
% \begin{verbatim}
% \todo[author=Xavier]{Testing author option.}
% \todo[author=Xavier, inline]{Testing author option.}
% \end{verbatim}
%
%
% \DescribeMacro{inlinewidth}
% The |inlinewidth| option makes it possible to alter the width
% of inline todos.
% \todo[inline, inlinewidth=5cm]{Testing the option inlinewidth.}
% \begin{verbatim}
% \todo[inline, inlinewidth=5cm]{Testing the option inlinewidth.}
% \end{verbatim}
%
%
% \DescribeMacro{inlinepar / noinlinepar}
% The options |inlinepar| and |noinlinepar| (default) determine whether the inserted inline 
% todonote is sorrounded with \texttt{par} macros that enforce new lines
% prior to and after inserted inline todonotes.
% \todo[inline, inlinewidth=5cm, noinlinepar]{Testing the option inlinepar.}
% This is a line after the inserted todonote.
% \begin{verbatim}
% \todo[inline, inlinewidth=5cm, noinlinepar]{Testing the option inlinepar.}
% \end{verbatim}
%
%
% \subsection{Options for the missingfigure command}
%
% \DescribeMacro{figwidth}
% The |figwidth=length| option sets the width of the figure inserted by the
% |\missingfigure| command.
% Length values below $6cm$ might trigger some problems with the
% visual appearance.
% Try to compare the default of the missing figure command, when the
% option is given or not. 
% \begin{verbatim}
% \missingfigure[figwidth=6cm]{Testing a long text string}
% \end{verbatim}
% \missingfigure[figwidth=6cm]{Testing a long text string}
% \begin{verbatim}
% \missingfigure{Testing a long text string}
% \end{verbatim}
% \missingfigure{Testing a long text string}
% \begin{wrapfigure}[1]{r}[2cm]{6cm}
% \missingfigure[figwidth=6cm]{Add an image \ldots}
% \end{wrapfigure}
% Another usage of the option is when |\missingfigure| is used in
% the wrapfigure environment.
% \begin{verbatim}
% \begin{wrapfigure}[1]{r}[2cm]{6cm}
% \missingfigure[figwidth=6cm]{Add an image \ldots}
% \end{wrapfigure}
% \end{verbatim}
% \vspace{2cm}
% 
% \DescribeMacro{figheight}
% The |figheight=length| option changes the height of the inserted 
% missing figure.
% The default height is 4cm and using values lower than this might 
% cause the warning sign to pop out of the gray area.
% \begin{verbatim}
% \missingfigure[figheight=6cm]{Testing a long text string}
% \end{verbatim}
% \missingfigure[figheight=6cm]{Testing}
%
%
% \DescribeMacro{figcolor}
% The |figcolor=color| options sets the background color of 
% inserted missing figures.
% The default color is |black!40|.
% \begin{verbatim}
% \missingfigure[figcolor=white]{Testing figcolor}
% \end{verbatim}
% \missingfigure[figcolor=white]{Testing figcolor}
%
%
% \subsection{Options for the listoftodos command}
% The |\listoftodos| command takes one optional argument, that
% defines the name of the inserted list of todos.
% \begin{verbatim}
% \listoftodos[I can be called anything]
% \end{verbatim}
% 
%
%
% \subsection{Known issues}
% \subsubsection{Package loading order}
% The todonotes package requires the following packages.
% \begin{multicols}{2}
% \begin{itemize}
% \item ifthen
% \item xkeyval
% \item xcolor
% \item tikz
% \item calc
% \item graphicx (is loaded via the tikz package)
% \end{itemize}
% \end{multicols}
% \noindent
% When todonotes are loaded in the preamble, the package checks
% if these packages all are loaded. If that is not the case it loads
% the missing packages with no options given.
% If you want to give some specific options to some of these
% packages, you have to load them \emph{before} the todonotes
% package, otherwise you will get an ''Option clash'' error when
% latex works on the document.
% 
% If both the menukeys and the xcolor (with the option \verb!table!) 
% package should be loaded, the following order must be used.
% \begin{verbatim}
%\usepackage[table]{xcolor}
%\usepackage{todonotes}
%\usepackage{menukeys}
% \end{verbatim}
%
% The following packages must be loaded before the todonotes
% package:
% \begin{itemize}
% \item polyglossia
% \end{itemize}
%
%
% \subsubsection{Wrapping of long lines in list of todos}
% When a document is compiled with latex (and not pdflatex) long
% items in the list of todos are not wrapped into several lines, and
% do instead continue to the right out of the page.
%
%
% \subsubsection{Conflicts with the amsart documentclass}
% The |amsart| document class redefines some internal commands that
% is used by the todonotes package, this will cause an malfunctioning
% |\listoftodos| command.
% The following code to circumvent the problem was given by Dan
% Luecking on comp.text.tex
% \begin{verbatim}
% \makeatletter
%   \providecommand\@dotsep{5}
% \makeatother
% \listoftodos\relax 
% \end{verbatim}
%
% NOT TESTED
% NOT TESTED
% NOT TESTED
%
% Dominique suggests the following workaround.
% \begin{verbatim}
% \makeatletter
% \providecommand\@dotsep{5}
% \def\listtodoname{List of Todos}
% \def\listoftodos{\@starttoc{tdo}\listtodoname}
% \makeatother
% \end{verbatim}
%
%
%
% \subsubsection{Unknown option ''remember picture''}
% If latex throws the error
% \begin{verbatim}
% Package tikz Error: I do not know what to do with the option ``remember picture''.
% \end{verbatim}
% It probably means that your latex installation is outdated, as
% only newer versions of latex driver for tikz supports the
% |remember picture| option.
% For additional info consult 
% ''Section 9.2.2 Producing PDF Output'' in the tikz manual. 
% \url{http://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf}
%
%
% \subsubsection{Todonotes wrongly placed in the margin}
% When using some document classes or packages, the todonotes inserted in the 
% page margin can be placed quite oddly.
% This is often caused by a wrong value of the |\marginparwidth| lenght.
% Try using the code below in your preamble to see if this cures the problem.
% \begin{verbatim}
% \setlength{\marginparwidth}{2cm}
% \end{verbatim}
%
% If the todonotes are inserted in the wrong margin, the solution is the 
% |\reversemarginpar| command.
% When this command is issued the following marginpars (which todonotes 
% relies on) is inserted in the other margin.
%
% \subsubsection{Reduce number of warnings}
% If the width of the inserted todonotes is forced to be larger than the 
% available space in the margin, a lot of warnings are issued.
% This can be reduced with the following code.
% \begin{verbatim}
% \usepackage[textwidth=3.7cm]{todonotes}
% \setlength{\marginparwidth}{3.7cm}
% \end{verbatim}
%
%
% \subsubsection{Todonotes in footnotes}
% Placing todonotes in footnotes throws a lot of errors.
% However inline notes seems to work fine, as shown here
% \footnote{Note \todo[inline]{description}}:
% \begin{verbatim}
% \footnote{Note \todo[inline]{description}}
% \end{verbatim}
% Richard Stanton comes with the following work around.
% \begin{verbatim}
% \renewcommand{\marginpar}{\marginnote}
% \end{verbatim}
%
%
% \subsubsection{Trouble with classicthesis.sty}
% \href{http://tex.stackexchange.com/questions/33423/todonotes-produces-double-inline-notes-instead-of-single-margin-note-with-class}{Problem description on tex.stackexchange.com}.
% 
% Solution by Stefan Kottwitz. 
% The problem is caused by the redefinition of |\marginpar| in 
% classicthesis.sty. |\marginpar| is used by todonotes. 
% It can be fixed by restoring the original meaning, if you don't 
% need the classicthesis marginpar style. 
% Just add this to your document preamble:
% |\let\marginpar\oldmarginpar|
%
%
% \subsubsection{Todos in math and floating environments}
% It is not possible to insert todonotes into math environments or 
% floating environments like \verb!figure! or \verb!table!.
% By replacing the marginpar command with a marginnote this
% can be enabled. 
% For todos inside math environments the todo must be placed in an 
% \verb!mbox! or \verb!\textrm! command.
%
% \begin{verbatim}
% \documentclass{article}
% \usepackage{todonotes}
% \usepackage{marginnote}
% \let\marginpar\marginnote
%
% \begin{document}
% \begin{equation}
% a^2=b^2+c^2  \textrm{\todo{Test}}
% \end{equation}
% \begin{figure}
% \centering
% \caption{Caption\todo{tests}.}
% \label{fig}
% \end{figure}
% 
% \end{verbatim}
%
%
% \subsubsection{Conflict between marginpar and the standalone class}
%
% The \verb!standalone! document class is not compatible with the 
% \verb!\marginpar! command, which is used in the todonotes package
% to insert contents in the side margins.
% A workaround is to replace the \verb!\marginpar! with \verb!\marginnote!.
% This is demonstrated here:
% \begin{verbatim}
% \documentclass[crop=false]{standalone}
% \usepackage{todonotes}
% \usepackage{marginnote}
% \let\marginpar\marginnote
% \begin{document}
% Lorem ipsum
% \todo{Bug}
% \end{document}
% \end{verbatim}
%
% \subsubsection{Issues with user-defined styles}
%
% Using an option defined using |\todostyle| will reset all predefined
% options to their defaults. For instance,
% |\todo[inline,newstyle]{Stuff}| will not be inline; however
% |\todo[newstyle,inline]{Stuff}| will be.
%
% |\todostyle| does not check if the name of the defined style is
% already one of the defined options, so, e.g.,
% |\todostyle{inline}{color=red}| will redefine the |inline| option
% to produce red marginal notes.
%
% \subsection{Things to improve}
% This is a list of things I consider to improve sometime in the
% future. It have not been done yet as I lack the time or skills to
% implement them.
% Patches with implementations of these tasks will be appreciated
% and might be included in the package if it will improve the
% package quality.
%
%
% \subsubsection{Owner information}
% Option for the todo command.
% \begin{verbatim}
% \todo[owner={Fabrice}]{Stuff}
% \end{verbatim}
% Add info on who ''owns'' the current todo. 
% Idea: Fabrice Niessen
%
%
% \subsubsection{Due date}
% Option for the todo command.
% \begin{verbatim}
% \todo[due=2008-12-07]{Stuff}
% \end{verbatim}
% Add info on when the current todo is due.
% Might be enhanced by a time line of the todos that have a due date
% assigned.
% Idea: Fabrice Niessen
%
%
% \subsubsection{Mark accomplished todos}
% \begin{verbatim}
% \todo[done]{Stuff}
% \end{verbatim}
% Idea: Fabrice Niessen
%
%
%
% 
% 
% \subsection{Usage methods}
% In this section I have collected some different methods to use the
% |todonotes| package.
%
%
% \subsubsection{Define new commands with fixed options}
% Often there is a need for marking different classes of things to
% do (add reference, rewrite, \ldots).
% One way to do this, is to define some new commands as shown below
% (idea from Florent B.).
% \begin{verbatim}
% \newcommand{\addref}{\todo[color=red!40]{Add reference.}}
% \newcommand{\rewrite}[1]{\todo[color=green!40]{#1}}
% \end{verbatim}
% To distinguish between the different types of todos, the
% |todonotes| package can be loaded with the |colorinlistoftodos|
% option, which adds small colored squares to the list of todos.
% \begin{verbatim}
% \usepackage[colorinlistoftodos]{todonotes}
% \end{verbatim}
% 
%
% \subsubsection{Define new commands with arbitrary default options}
% If you do not like the default values of the standard todo command, 
% it is possible to define a new command with the similar 
% functionality of |\todo| with custom default values.
% \begin{verbatim}
% \newcommand{\todoredefined}[2][]
% {\todo[color=red, #1]{#2}}\end{verbatim}
% \newcommand{\todoredefined}[2][]
% {\todo[color=red, #1]{#2}}
% The \todoredefined{Test of newly defined command.}
% new command can now be used like shown below
% \begin{verbatim}
% \todoredefined{Test of newly defined command.}
% \todoredefined[color=green]{Test of newly defined command, requesting a green color.} \end{verbatim}
% This \todoredefined[color=green]{Test of newly defined command, requesting a green color.}
% can be done with all the accepted options for the |\todo| command.
% 
% If only available options to the |\todo| command are desired in the
% defined command, a similar effect can be achieved by defining a new style.
% For instance, 
% \begin{verbatim}
% \todostyle{red}{color=red}
% \todo[red,inline]{A red to do}\end{verbatim}
% \todostyle{red}{color=red}%
% will produce a note like this:\todo[red,inline]{A todo with user-defined
% style \emph{red}}
%
%
% \subsubsection{Enumerate todonotes}
%
% If the inserted todonotes should be enumerated, it is possible to define 
% a new command with the desired behaviour.
% \begin{verbatim}
% \newcounter{todocounter}
% \newcommand{\todonum}[2][]
% {\stepcounter{todocounter}\todo[#1]{\thetodocounter: #2}}
% \end{verbatim}
% \newcounter{todocounter}
% \newcommand{\todonum}[2][]
% {\stepcounter{todocounter}\todo[#1]{\thetodocounter: #2}}
% The idea is to define a new counter |todocounter|, and insert the 
% \todonum{A numbered todonote.}
% value of the counter in each todonote.
% The new command can be used like
% \todonum{Another numbered todonote.}
% \begin{verbatim}
% \todonum{A numbered todonote.}
% \todonum{Another numbered todonote.}
% \end{verbatim}
%
%
% 
% \subsubsection{Comments ''a la Word''}
%
% Fabrice Niessen sent me the following use case.
% The idea is to define a new command |\mycomment| which adds a
% counter and optionally the initials of the author to the inserted
% todonote.
% 
% \begin{verbatim}
% \newcounter{mycomment}
% \newcommand{\mycomment}[2][]{%
%    % initials of the author (optional) + note in the margin
%    \refstepcounter{mycomment}%
%    {%
%        \setstretch{0.7}% spacing
%        \todo[color={red!100!green!33},size=\small]{%
%            \textbf{Comment [\uppercase{#1}\themycomment]:}~#2}%
%    }}
% \end{verbatim}
% \newcounter{mycomment}
% \newcommand{\mycomment}[2][]{%
%    \refstepcounter{mycomment}%
%    {%
%        \setstretch{0.7}%
%        \todo[color={red!100!green!33},size=\small]{%
%            \textbf{Comment [\uppercase{#1}\themycomment]:}~#2}%
%    }}
% 
% The command |\mycomment[HSM]{Testing first time.}| is displayed
% \mycomment[HSM]{Testing first time.}%
% like shown in the left margin, and another call of the command is
% added below |\mycomment[HSM]{Testing second time.}|.
% \mycomment[HSM]{Testing second time.}%
%
%
%
% \subsubsection{Combination with the fixme package}
%
% Thomas Arildsen has mailed me this use case. Check the
% documentation for the |fixme| package, as the code below relies
% directly on it (the |\FDUser| command is augmented when
% |\begin{document}| is reached).
% \begin{verbatim}
% \usepackage[user,nomargin]{fixme}
% \usepackage{todonotes}
% \newcommand{\FXUser}[2]{\todo[inline,size=\small]{{\bfseries #1:} #2}}
% \end{verbatim}
%
%
%
% \subsubsection{Altering the line spacing of todonotes}
%
% The |setspace| package lets you alter the line spacing of smaller
% sections of your document. The primary construct is the
% |spacing| environment, which is demonstrated below.
% \begin{verbatim}
% \begin{spacing}{0.5}
% Some lines with a decreased line spacing. This is accomplished
% using the setspace package that is included in standard latex
% distributions.
% \end{spacing}
% \end{verbatim}
% \begin{spacing}{0.5}
% Some lines with a decreased line spacing. This is accomplished
% using the setspace package that is included in standard latex
% distributions.
% \end{spacing}
%
% \vspace{0.25cm}
% Using the |spacing| environment we can define a new todonote
% command using the code below:
% \begin{verbatim}
% \newcommand{\smalltodo}[2][]
%     {\todo[caption={#2}, #1]
%     {\begin{spacing}{0.5}#2\end{spacing}}}
% \end{verbatim}
% \newcommand{\smalltodo}[2][]
%     {\todo[caption={#2}, #1]
%     {\begin{spacing}{0.5}#2\end{spacing}}}
% Todonotes with decreased line spacing can now be inserted as
% follows
% \smalltodo[size=\footnotesize]{
% Some lines with a decreased line spacing. This is accomplished
% using the setspace package that is included in standard latex
% distributions.}
% \begin{verbatim}
% \smalltodo[size=\footnotesize]{
% Some lines with a decreased line spacing. This is accomplished
% using the setspace package that is included in standard latex
% distributions.}
% \end{verbatim}
%
% \noindent
% A different approach is given by Vitaly.
% \newcommand{\tinytodo}[2][]
%   {\todo[caption={#2}, size=\small, #1]{\renewcommand{\baselinestretch}{0.5}\selectfont#2\par}}
% \begin{verbatim}
% \newcommand{\tinytodo}[2][]
%   {\todo[caption={#2}, size=\small, #1]{\renewcommand{\baselinestretch}{0.5}\selectfont#2\par}}
% \end{verbatim}
% It looks like seen here.
% \tinytodo{
% Some lines with a decreased line spacing. This is accomplished
% without using any special packages.}
% \begin{verbatim}
% \tinytodo{
% Some lines with a decreased line spacing. This is accomplished
% without using any special packages.}
% \end{verbatim}
%
%
%
%
% \subsubsection{Marking new / old sections}
% Sometimes a whole section has to be marked by some means. You
% might want to try the following.
% \begin{verbatim}
% \todo[inline, caption={Some text}]{
% \begin{minipage}{\linewidth}
% Some text that might differ from the text given to the caption
% option.
% \end{minipage}
% }
% \end{verbatim}
% It is important to add the |caption={text}| option, otherwise
% latex will try to embed a minipage in the table of contents which
% triggers an error.
% Inside the minipage environment almost anything could be placed,
% except for other todo commands.
%
% To streamline use the following command was suggested by Stefan Pinnow.
% \newcommand\todoin[2][]{\todo[inline, caption={2do}, #1]{
% \begin{minipage}{\textwidth-4pt}#2\end{minipage}}}
% \begin{verbatim}
% \newcommand\todoin[2][]{\todo[inline, caption={2do}, #1]{
% \begin{minipage}{\textwidth-4pt}#2\end{minipage}}}
% \end{verbatim}
% This example renders like
% \begin{verbatim}
% \todoin{
% Some text.
% \begin{align}
% \sin(\theta)^2 + \cos(\theta)^2 = 1
% \end{align}
% A formula and a list
% \begin{itemize}
% \item	An item
% \end{itemize}
% }
% \end{verbatim}
% 
% \todoin{
% Some text.
% \begin{align}
% \sin(\theta)^2 + \cos(\theta)^2 = 1
% \end{align}
% A formula and a list
% \begin{itemize}
% \item	An item
% \end{itemize}
% }
%
%
%
% \subsubsection{Link to list of todos}
%
% Using the |hyperref| package it is possible to add a link from
% the inserted todonotes to the list of todos.
% The example were supplied by Andreas Plank.
% \begin{verbatim}
% % Define a counter for the inserted todonotes.
% \newcounter{todoListItems}
% \newcommand{\todoTrans}[2][ ]{
%   % Increment counter
%   \addtocounter{todoListItems}{1}
%   \todo[%
%     caption={\protect\hypertarget{todo\thetodoListItems}{}Translation},
%     #1]
%   {
%     #2 \hfill
%     \hyperlink{todo\thetodoListItems}{$\uparrow$}
%   }
% }
% \end{verbatim}
%
% \newcounter{todoListItems}
% \newcommand{\todoTrans}[2][ ]{
%   \addtocounter{todoListItems}{1}
%   \todo[
%     caption={\protect\hypertarget{todo\thetodoListItems}{}Translation},
%     #1]{
%    #2 \hfill
%    \hyperlink{todo\thetodoListItems}{$\uparrow$}
%  }
% }
%
% The idea behind the code is to embed a |hypertarget| in each entry
% in the list of todos. In the todonotes a link to the entry in the
% list of todos is inserted as an arrow that points upwards.
% Using the |\todoTrans| command like below, the following two notes
% have been inserted.
% \begin{verbatim}
% \todoTrans{papirsflyver}
% \todoTrans[inline]{damplokomotiv}
% \end{verbatim}
% \todoTrans{papirsflyver}
% \todoTrans[inline]{damplokomotiv}
%
%
% \subsubsection{Numbered todonotes}
% 
% The inserted todonotes can be argumented with the current subsubsection number.
% The code is shown below.
% \newcommand{\ntodo}[2][]{\todo[#1]{\thesubsubsection{}. #2}}
% \begin{verbatim}
% \newcommand{\ntodo}[2][]{\todo[#1]{\thesubsubsection{}. #2}}
% \end{verbatim}
% By changing |\thesubsubsection| to |\thesection|, the current section number 
% can be inserted instead of the subsubsection number.
% The result looks \ntodo{A numbered todo.} like. 
% Which were generated by the code
% \begin{verbatim}
% \ntodo{A subsection numbered todo.}. 
% \end{verbatim}
%
%
% \subsubsection{Combining several modifications}
%
% \newcommand{\sstodo}[2][]
% {\addtocounter{todoListItems}{1}
% \todo[caption={\protect\hypertarget{todo\thetodoListItems}{}\thesection. #2}, #1]
% {\begin{spacing}{1} \hfill \hyperlink{todo\thetodoListItems}{#2} \end{spacing} }}
%
% Manduca have combined several of the modifications above into a highly specialized 
% todo command. 
% \sstodo{Small notes with links back to the list of todos.}
% She uses the code:
% \sstodo{Smart notes with links back to the list of todos.}
%
% \begin{verbatim}
% \newcounter{todoListItems}
% \newcommand{\sstodo}[2][]
% {\addtocounter{todoListItems}{1}
% \todo[caption={\protect\hypertarget{todo\thetodoListItems}{}\thesection. #2}, #1]
% {\begin{spacing}{1} \hfill \hyperlink{todo\thetodoListItems}{#2} \end{spacing} }}
% \end{verbatim}
% 
% Using this approach it is possible to customize the behavior of the inserted notes
% to a very high degree.
%
% 
% \subsubsection{Alter the appearance of the list of todos}
% Marco Daniel gives the following example of how to add section 
% numbers to the elements in the list of todos.
% The code is slightly modified from 
% \url{http://tex.stackexchange.com/questions/18838/replacing-page-number-with-other-counter-in-listoftodos}.
% An example of the modified list of todos is shown below, the complete 
% code example is given in the example directory.\\
% \noindent
% \begin{tikzpicture}
% \draw node[shape=rectangle, fill=black!30, inner sep=1mm]{\includegraphics[width=\linewidth-2mm]{img/AlteredAppearenceOfListOfTodos.png}};
% \end{tikzpicture}
% 
% 
% \subsubsection{Tikz externalization issues}
% 
% Using the tikz externalization framework together with todonotes 
% can lead to some problems.
% One solution is to disable the externalization just before the \verb!todo! 
% command is issued and then reactivate externalization afterwards.
% The \verb!ruggedtodo! handles this deactivation and reactivation.
% \begin{verbatim}
% \usetikzlibrary{external}
% \tikzexternalize
% \newcommand{\ruggedtodo}[2][]{\tikzexternaldisable\todo[#1]{#2}\tikzexternalenable}
% \end{verbatim}
% 
% 
% \subsubsection{Highligt text to fix}
% Tobias Winchen provides the following example on how to highlight
% text related to the inserted todonote.
% \makeatletter
% \if@todonotes@disabled
% \newcommand{\hlfix}[2]{#1}
% \else
% \newcommand{\hlfix}[2]{\texthl{#1}\todo{#2}}
% \fi
% \makeatother
% Example \hlfix{wrong text}{fix text}~continues here. 
% Notice that the code relies on the \verb!soul! package.
% \begin{verbatim}
% \makeatletter
% \if@todonotes@disabled
% \newcommand{\hlfix}[2]{#1}
% \else
% \newcommand{\hlfix}[2]{\texthl{#1}\todo{#2}}
% \fi
% \makeatother
% Example \hlfix{wrong text}{fix text}~continues here. 
% \end{verbatim}
% 
% 
% \subsubsection{Adding color coded levels of todos}
% 
% Sometimes it can be beneficial to be able to distinguish
% between different types of todos.
% For this I would suggest the following approach:
% \begin{verbatim}
% \newcommand{\todoerror}[2][]{\todo[color=red!70, #1]{#2}}
% \newcommand{\todowarn}[2][]{\todo[color=orange, #1]{#2}}
% \newcommand{\todoremark}[2][]{\todo[color=yellow!80!black, #1]{#2}}
% \newcommand{\todohint}[2][]{\todo[color=green!20, #1]{#2}}
% \newcommand{\tododone}[2][]{\todo[color=blue!50, #1]{#2}}
%
% \todoerror[inline]{Testing}
% \todoremark{Testing}
% \todowarn[inline]{Testing}
% \todohint{Testing}
% \tododone[disable]{Testing}
% \end{verbatim}
% 
% \newcommand{\todoerror}[2][]{\todo[color=red!70, #1]{#2}}
% \newcommand{\todowarn}[2][]{\todo[color=orange, #1]{#2}}
% \newcommand{\todoremark}[2][]{\todo[color=yellow!80!black, #1]{#2}}
% \newcommand{\todohint}[2][]{\todo[color=green!20, #1]{#2}}
% \newcommand{\tododone}[2][]{\todo[color=blue!50, #1]{#2}}
%
% \todoerror[inline]{Testing}
% \todoremark{Testing}
% \todowarn[inline]{Testing}
% \todohint{Testing}
% \tododone[disable]{Testing}
% 
% 
% \subsubsection{Notes in both left and right margin}
% 
% If you want to add many todonotes in your document, it can be beneficial to 
% use both the left and right margins for the inserted notes.
% This can be achieved by defining a helper function the following way.
% The main drawback is that notes inserted using the \verb!marginnote! 
% command does not float and thus they can get to overlap.
% This idea was suggested by 
% \href{https://github.com/henrikmidtiby/todonotes/issues/56}{FranzAtGithub}.
% 
% \begin{verbatim}
% \usepackage{marginnote}
% \usepackage{etoolbox}
% 
% \newtoggle{lmargin}
% \newcommand{\alternatingtodo}[2][]{%
%    \iftoggle{lmargin}%
%     {%
%         \todo[#1]{#2}
%         \togglefalse{lmargin}
%     }{%
%         {%
%             \let\marginpar\marginnote%
%             \reversemarginpar%
%             \todo[#1]{#2}%
%         }%
%         \toggletrue{lmargin}%
%     }%
% }%
% \end{verbatim}
% 
% 
%
% \iffalse
% \StopEventually{\PrintChanges\PrintIndex}
% \fi
% \StopEventually{\PrintChanges}
%
% \newpage
% \section{Implementation}
%
% Identifies the package and loads the packages dependences.
%    \begin{macrocode}
\ProvidesPackage{todonotes}[2024/01/05]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}
\RequirePackage{xcolor}
\RequirePackage{tikz}
\usetikzlibrary{positioning}
\RequirePackage{calc}
%    \end{macrocode}
% Implement a function for setting up the todonotes package.
%    \begin{macrocode}
\newcommand\setuptodonotes[1]{\presetkeys{todonotes}{#1}{}}
%    \end{macrocode}
% Some default values are set
%    \begin{macrocode}
\newcommand{\@todonotes@text}{}%
\newcommand{\@todonotes@backgroundcolor}{orange}
\newcommand{\@todonotes@textcolor}{black}
\newcommand{\@todonotes@linecolor}{orange}
\newcommand{\@todonotes@bordercolor}{black}
\newcommand{\@todonotes@tickmarkheight}{unused value}
\newcommand{\@todonotes@textwidth}{\marginparwidth}
\newcommand{\@todonotes@textsize}{\normalsize}
\newcommand{\@todonotes@figwidth}{\linewidth}
\newcommand{\@todonotes@figheight}{4cm}
\newcommand{\@todonotes@figcolor}{black!40}
%    \end{macrocode}
%    \begin{macrocode}
\AtBeginDocument{
\ifx\undefined\phantomsection
\newcommand{\phantomsection}{}
\fi
\ifdim \marginparwidth < 2cm 
\PackageWarning{todonotes}{The length marginparwidth is 
less than 2cm and will most likely cause issues with the 
appearance of inserted todonotes. 
The issue can be solved by adding a line like 
\setlength{\marginparwidth}{2cm} 
prior to loading the todonotes package.} \else\fi%
}
%    \end{macrocode}
%
% \subsection{Declaration of options for the package}
% In this part the various options for
% the package are defined.

% Define the default text strings and set localization options for
% the danish and german languages.
%    \begin{macrocode}
\newcommand{\@todonotes@todolistname}{Todo list}
\newcommand{\@todonotes@MissingFigureText}{Figure}
\newcommand{\@todonotes@MissingFigureUp}{Missing}
\newcommand{\@todonotes@MissingFigureDown}{figure}
\newcommand{\@todonotes@SetTodoListName}[1]
    {\renewcommand{\@todonotes@todolistname}{#1}}
\newcommand{\@todonotes@SetMissingFigureText}[1]
    {\renewcommand{\@todonotes@MissingFigureText}{#1}}
\newcommand{\@todonotes@SetMissingFigureUp}[1]
    {\renewcommand{\@todonotes@MissingFigureUp}{#1}}
\newcommand{\@todonotes@SetMissingFigureDown}[1]
    {\renewcommand{\@todonotes@MissingFigureDown}{#1}}
\newif{\if@todonotes@reverseMissingFigureTriangle}
\DeclareOptionX{catalan}{
    \@todonotes@SetTodoListName{Llista de feines pendents}%
    \@todonotes@SetMissingFigureText{Figura}%
    \@todonotes@SetMissingFigureUp{Figura}%
    \@todonotes@SetMissingFigureDown{pendent}%
}
\DeclareOptionX{croatian}{%
   \@todonotes@SetTodoListName{Popis obveza}%
   \@todonotes@SetMissingFigureText{Slika}%
   \@todonotes@SetMissingFigureUp{Nedostaje}%
   \@todonotes@SetMissingFigureDown{slika}%
}
\DeclareOptionX{danish}{%
    \@todonotes@SetTodoListName{G\o{}rem\aa{}lsliste}%
    \@todonotes@SetMissingFigureText{Figur}%
    \@todonotes@SetMissingFigureUp{Manglende}%
    \@todonotes@SetMissingFigureDown{figur}%
}
\DeclareOptionX{dutch}{%
   \@todonotes@SetTodoListName{Lijst van onafgewerkte taken}%
   \@todonotes@SetMissingFigureText{Figuur}%
   \@todonotes@SetMissingFigureUp{Ontbrekende}%
   \@todonotes@SetMissingFigureDown{figuur}%
}
\DeclareOptionX{english}{%
   \@todonotes@SetTodoListName{Todo list}%
   \@todonotes@SetMissingFigureText{Figure}%
   \@todonotes@SetMissingFigureUp{Missing}%
   \@todonotes@SetMissingFigureDown{figure}%
}
\DeclareOptionX{french}{%
    \@todonotes@SetTodoListName{Liste des points \`a traiter}%
    \@todonotes@SetMissingFigureText{Figure}%
    \@todonotes@SetMissingFigureUp{Figure}%
    \@todonotes@SetMissingFigureDown{manquante}%
    \@todonotes@reverseMissingFigureTrianglefalse
}
\DeclareOptionX{german}{%
    \@todonotes@SetTodoListName{Liste der noch zu erledigenden Punkte}%
    \@todonotes@SetMissingFigureText{Abbildung}%
    \@todonotes@SetMissingFigureUp{Fehlende}%
    \@todonotes@SetMissingFigureDown{Abbildung}%
}
\DeclareOptionX{italian}{
    \@todonotes@SetTodoListName{Elenco delle cose da fare}%
    \@todonotes@SetMissingFigureText{Figura}%
    \@todonotes@SetMissingFigureUp{Figura}%
    \@todonotes@SetMissingFigureDown{mancante}%
}
\DeclareOptionX{ngerman}{%
    \@todonotes@SetTodoListName{Liste der noch zu erledigenden Punkte}%
    \@todonotes@SetMissingFigureText{Abbildung}%
    \@todonotes@SetMissingFigureUp{Fehlende}%
    \@todonotes@SetMissingFigureDown{Abbildung}%
}
\DeclareOptionX{portuguese}{
    \@todonotes@SetTodoListName{Lista de tarefas pendentes}%
    \@todonotes@SetMissingFigureText{Figura}%
    \@todonotes@SetMissingFigureUp{Figura}%
    \@todonotes@SetMissingFigureDown{pendente}%
}
\DeclareOptionX{spanish}{
    \@todonotes@SetTodoListName{Lista de tareas pendientes}%
    \@todonotes@SetMissingFigureText{Figura}%
    \@todonotes@SetMissingFigureUp{Figura}%
    \@todonotes@SetMissingFigureDown{pendiente}%
}
\DeclareOptionX{swedish}{%
    \@todonotes@SetTodoListName{Att g\"{o}ra-lista}%
    \@todonotes@SetMissingFigureText{Figur}%
    \@todonotes@SetMissingFigureUp{Figur}%
    \@todonotes@SetMissingFigureDown{saknas}%
}
%    \end{macrocode}
% Define parameters for the list of todo if they are not defined by 
% the current document class.
%    \begin{macrocode}
\providecommand{\@tocrmarg}{2.55em}
\providecommand{\@dotsep}{4.5}
\providecommand{\@pnumwidth}{1.55em}
%    \end{macrocode}
% Create a counter, for storing the number of inserted todos.
%    \begin{macrocode}
\newcounter{@todonotes@numberoftodonotes}
%    \end{macrocode}
%
% Toggle whether the package should obey the global draft option.
%    \begin{macrocode}
\newif{\if@todonotes@obeyDraft}
\DeclareOptionX{obeyDraft}{\@todonotes@obeyDrafttrue}
\newif{\if@todonotes@isDraft}
\DeclareOptionX{draft}{\@todonotes@isDrafttrue}
\DeclareOptionX{draftcls}{\@todonotes@isDrafttrue}
\DeclareOptionX{draftclsnofoot}{\@todonotes@isDrafttrue}
\newif{\if@todonotes@obeyFinal}
\DeclareOptionX{obeyFinal}{\@todonotes@obeyFinaltrue}
\newif{\if@todonotes@isFinal}
\DeclareOptionX{final}{\@todonotes@isFinaltrue}
%    \end{macrocode}
% Make it possible to disable the functionality
% of the package. If this option is given, the
% commands  |\todo{}| and |\listoftodos| are defined
% as commands with no effect. (But you can still
% compile you document with these commands).
%    \begin{macrocode}
\newif{\if@todonotes@disabled}
\DeclareOptionX{disable}{\@todonotes@disabledtrue}
%    \end{macrocode}
% Show small boxes in the list of todos with the color of the
% inserted todonotes.
%    \begin{macrocode}
\newif{\if@todonotes@colorinlistoftodos}
\DeclareOptionX{colorinlistoftodos}{\@todonotes@colorinlistoftodostrue}
%    \end{macrocode}
% The default style behaves bad when compiled
% with latex (some text placement problems).
% The dvistyle option, changes the visual behavior
% to avoid this text placement problem.
%    \begin{macrocode}
\newif{\if@todonotes@dviStyle}
\DeclareOptionX{dvistyle}{\@todonotes@dviStyletrue}
%    \end{macrocode}
% Create a color option.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {color}{
        \renewcommand{\@todonotes@backgroundcolor}{#1}
        \renewcommand{\@todonotes@linecolor}{#1}}
%    \end{macrocode}
% Make the background color of the notes as
% an option.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {backgroundcolor}{\renewcommand{\@todonotes@backgroundcolor}{#1}}
%    \end{macrocode}
% Make the text color of the notes as
% an option.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {textcolor}{\renewcommand{\@todonotes@textcolor}{#1}}
%    \end{macrocode}
% Make the line color of the notes as
% an option.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {linecolor}{\renewcommand{\@todonotes@linecolor}{#1}}
%    \end{macrocode}
% Make the color of the notes box color as
% an option.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {bordercolor}{\renewcommand{\@todonotes@bordercolor}{#1}}
%    \end{macrocode}
% Make the height of the line start marking as
% an option.
%    \begin{macrocode}
\newcommand{\@todonotes@defaulttickmarkheight}{0cm}
\define@key{todonotes.sty}{tickmarkheight}{%
    \renewcommand{\@todonotes@defaulttickmarkheight}{#1}}%
%    \end{macrocode}
% Set whether short captions given as arguments to the todo command
% should be included in the inserted todonote.
%    \begin{macrocode}
\newif{\if@todonotes@prependcaptionglobal}
\@todonotes@prependcaptionglobalfalse
\DeclareOptionX{prependcaption}{\@todonotes@prependcaptionglobaltrue}
%    \end{macrocode}
% Make the text width as an option.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {textwidth}{\renewcommand{\@todonotes@textwidth}{#1}}
%    \end{macrocode}
% Make the formatting of a note an option.
% Notes are formatted using |\todoformat|, which by default does
% nothing.
% If the option |format=cmd| is given, notes are formatted using
% |\cmd| instead.
% Default formatting can also be changed by redefining |\todoformat|.
%    \begin{macrocode}
\newcommand{\todoformat}[1]{#1}
\define@key{todonotes.sty}%
    {format}{\renewcommand{\todoformat}{\@nameuse{#1}}}
%    \end{macrocode}
% Make the text size as an option, accept both |size| and |textsize|. 
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {textsize}{\renewcommand{\@todonotes@textsize}{#1}}
\define@key{todonotes.sty}%
    {size}{\renewcommand{\@todonotes@textsize}{#1}}
%    \end{macrocode}
% Add option for shadows behind the inserted notes
%    \begin{macrocode}
\newif\if@todonotes@shadowlibraryloaded
\@todonotes@shadowlibraryloadedfalse
\DeclareOptionX{loadshadowlibrary}{%
    \usetikzlibrary{shadows}%
    \@todonotes@shadowlibraryloadedtrue}
\newcommand{\@todonotes@shadowenabledbydefault}{noshadow}
\DeclareOptionX{shadow}{%
    \renewcommand{\@todonotes@shadowenabledbydefault}{shadow}}
%    \end{macrocode}
% Add option for the default width of the figure inserted with
% |\missingfigure|.
%    \begin{macrocode}
\define@key{todonotes.sty}%
    {figwidth}{\renewcommand{\@todonotes@figwidth}{#1}}
\define@key{todonotes.sty}%
    {figheight}{\renewcommand{\@todonotes@figheight}{#1}}
\define@key{todonotes.sty}%
    {figcolor}{\renewcommand{\@todonotes@figcolor}{#1}}
%    \end{macrocode}
% Make the text width as an option.
%    \begin{macrocode}
% Finally process the given options.
%    \begin{macrocode}
\ProcessOptionsX*
%    \end{macrocode}
% If the |obeyDraft| is given, check whether one of the |draft|, 
% |draftcls| or |draftclsnofoot|
% options are given and enable or disable the functionality of this
% package.
% If the |obeyFinal| option is given together with the |final| option
% the todonotes are disabled.
% The |disable| option will overrule the effect of |obeyDraft|.
%    \begin{macrocode}
\if@todonotes@disabled
\else
	\if@todonotes@obeyDraft
		\@todonotes@disabledtrue
		\if@todonotes@isDraft
			\@todonotes@disabledfalse
		\fi
	\fi
	\if@todonotes@obeyFinal
		\@todonotes@disabledfalse
		\if@todonotes@isFinal
			\@todonotes@disabledtrue
		\fi
	\fi
\fi
%    \end{macrocode}

% \subsection{Options for the todo command}
%
% In this part the various options for 
% commands in the package are defined.
% Set an arbitrarily fill color
%    \begin{macrocode}
\gdef\@todonotes@currentlinecolor{\@todonotes@linecolor}%
\gdef\@todonotes@currentbackgroundcolor{\@todonotes@backgroundcolor}%
\gdef\@todonotes@currenttextcolor{\@todonotes@textcolor}%
\gdef\@todonotes@currentbordercolor{\@todonotes@bordercolor}%
\define@key{todonotes}{color}{%
    \gdef\@todonotes@currentlinecolor{#1}%
    \gdef\@todonotes@currentbackgroundcolor{#1}}%
\define@key{todonotes}{linecolor}{%
    \gdef\@todonotes@currentlinecolor{#1}}%
\define@key{todonotes}{backgroundcolor}{%
    \gdef\@todonotes@currentbackgroundcolor{#1}}%
\define@key{todonotes}{textcolor}{%
    \gdef\@todonotes@currenttextcolor{#1}}%
\define@key{todonotes}{bordercolor}{%
    \gdef\@todonotes@currentbordercolor{#1}}%
%    \end{macrocode}
% Toggle whether there is a shadow behind the inserted notes.
%    \begin{macrocode}
\newif\if@todonotes@useshadow%
\define@key{todonotes}{shadow}[]{\@todonotes@useshadowtrue}%
\define@key{todonotes}{noshadow}[]{\@todonotes@useshadowfalse}%
%    \end{macrocode}
% Define height of the inserted tickmark.
%    \begin{macrocode}
\define@key{todonotes}{tickmarkheight}{%
    \renewcommand{\@todonotes@tickmarkheight}{#1}}%
%    \end{macrocode}
% Make formatting of notes a per-note option as well, by redefining
% the internal |\@todonotes@format| command, which is then used in
% formatting the actual note.
%    \begin{macrocode}
\newcommand{\@todonotes@format}{\todoformat}%
\define@key{todonotes}{format}{%
    \renewcommand{\@todonotes@format}{\@nameuse{#1}}}%
%    \end{macrocode}
% Set a relative font size
%    \begin{macrocode}
\newcommand{\@todonotes@sizecommand}{}%
\define@key{todonotes}{size}{\renewcommand{\@todonotes@sizecommand}{#1}%
}%
%    \end{macrocode}
% Should the todo item be disabled?
%    \begin{macrocode}
\newif\if@todonotes@localdisable%
\define@key{todonotes}{disable}[]{\@todonotes@localdisabletrue}%
\define@key{todonotes}{nodisable}[]{\@todonotes@localdisablefalse}%
%    \end{macrocode}
% Should the todo item be included in the list of todos?
%    \begin{macrocode}
\newif\if@todonotes@appendtolistoftodos%
\define@key{todonotes}{list}[]{\@todonotes@appendtolistoftodostrue}%
\define@key{todonotes}{nolist}[]{\@todonotes@appendtolistoftodosfalse}%
%    \end{macrocode}
% Should the todo item be displayed inline?
%    \begin{macrocode}
\newif\if@todonotes@inlinenote%
\define@key{todonotes}{inline}[]{\@todonotes@inlinenotetrue}%
\define@key{todonotes}{noinline}[]{\@todonotes@inlinenotefalse}%
%    \end{macrocode}
%    \begin{macrocode}
\newif\if@todonotes@prependcaption%
\define@key{todonotes}{prepend}[]{\@todonotes@prependcaptiontrue}%
\define@key{todonotes}{noprepend}[]{\@todonotes@prependcaptionfalse}%
%    \end{macrocode}
% Should the note in the margin be connected to the insertion point
% in the text?
%    \begin{macrocode}
\newif\if@todonotes@line%
\define@key{todonotes}{line}[]{\@todonotes@linetrue}%
\define@key{todonotes}{noline}[]{\@todonotes@linefalse}%
%    \end{macrocode}
% Should the connection between note and insertion point be drawn
% in a fancy way? (does only work if line=true)
%    \begin{macrocode}
\newif\if@todonotes@fancyline\@todonotes@fancylinefalse%
\define@key{todonotes}{fancyline}[]{\@todonotes@fancylinetrue}%
\define@key{todonotes}{nofancyline}[]{\@todonotes@fancylinefalse}%
%    \end{macrocode}
% Author option.
%    \begin{macrocode}
\newcommand{\@todonotes@author}{}%
\newif\if@todonotes@authorgiven%
\define@key{todonotes}{author}{%
    \renewcommand{\@todonotes@author}{#1}%
    \@todonotes@authorgiventrue}%
\define@key{todonotes}{noauthor}[]{\@todonotes@authorgivenfalse}%
%    \end{macrocode}
% Should the text in the list of todos be different from the text
% in the todonote?
%    \begin{macrocode}
\newcommand{\@todonotes@caption}{}%
\newif\if@todonotes@captiongiven%
\define@key{todonotes}{caption}%
    {\renewcommand{\@todonotes@caption}{#1}%
    \@todonotes@captiongiventrue}%
\define@key{todonotes}{nocaption}[]{\@todonotes@captiongivenfalse}%
%    \end{macrocode}
% Change the current figure width and height.
%    \begin{macrocode}
\newcommand{\@todonotes@currentfigwidth}{\@todonotes@figwidth}
\define@key{todonotes}%
    {figwidth}{\renewcommand{\@todonotes@currentfigwidth}{#1-2pt}}
\newcommand{\@todonotes@currentfigheight}{\@todonotes@figheight}
\define@key{todonotes}%
    {figheight}{\renewcommand{\@todonotes@currentfigheight}{#1-2pt}}
\newcommand{\@todonotes@currentfigcolor}{\@todonotes@figcolor}
\define@key{todonotes}%
    {figcolor}{\renewcommand{\@todonotes@currentfigcolor}{#1}}
%    \end{macrocode}
% Change the width of an inline note.
%    \begin{macrocode}
\newcommand{\@todonotes@inlinewidth}{\linewidth}%
\define@key{todonotes}%
    {inlinewidth}{\renewcommand{\@todonotes@inlinewidth}{#1}}
%    \end{macrocode}
% Change if inline note is written to a separate line or not.
%    \begin{macrocode}
\newif\if@todonotes@inlinepar
\@todonotes@inlinepartrue
\define@key{todonotes}{inlinepar}[]{\@todonotes@inlinepartrue}%
\define@key{todonotes}{noinlinepar}[]{\@todonotes@inlineparfalse}%
%    \end{macrocode}
% Preset values of the options
%    \begin{macrocode}
\presetkeys%
    {todonotes}%
    {linecolor=\@todonotes@linecolor,%
    backgroundcolor=\@todonotes@backgroundcolor,%
    textcolor=\@todonotes@textcolor,%
    bordercolor=\@todonotes@bordercolor,%
    format=todoformat,%
    tickmarkheight=\@todonotes@defaulttickmarkheight,%
    nofancyline,%
    nodisable,%
    noinline,%
    nocaption,%
    noauthor,%
    \@todonotes@shadowenabledbydefault,%
    figwidth=\@todonotes@figwidth,%
    figheight=\@todonotes@figheight,%
    figcolor=\@todonotes@figcolor,%
    line, list,%
    inlinewidth=\linewidth,
    inlinepar}{}%
\@temptokena\expandafter{\@todonotes@textsize}
\edef\next{\noexpand\presetkeys{todonotes}{size=\the\@temptokena}{}}
\next
%    \end{macrocode}
% \subsection{The main code part}
% Here is the actual macros defined.
% If the option "disable" was passed to the package
% define empty commands.
%    \begin{macrocode}
\if@todonotes@disabled%
    \newcommand{\listoftodos}[1][]{}
    \newcommand{\@todo}[2][]{}
    \newcommand{\missingfigure}[2][]{}
\else % \if@todonotes@disabled
%    \end{macrocode}
% Define the |\listoftodos| command and define the 
% appearance of the list of todos.
%    \begin{macrocode}
\newcommand{\listoftodos}[1][\@todonotes@todolistname]
    {\@ifundefined{chapter}{\section*{#1}}{\chapter*{#1}} \@starttoc{tdo}}
\newcommand{\l@todo}
    {\@dottedtocline{1}{0em}{2.3em}}
%    \end{macrocode}
% Define styles used by the todo command
%    \begin{macrocode}
\tikzstyle{notestyleraw} = [
    draw=\@todonotes@currentbordercolor, 
    fill=\@todonotes@currentbackgroundcolor,
    text=\@todonotes@currenttextcolor,
    line width=0.5pt,
    text width = \@todonotes@textwidth - 1.6 ex - 1pt, 
    inner sep = 0.8 ex,
    rounded corners=4pt]
%    \end{macrocode}
%
% \begin{macro}{\@todo}
% Define the |\@todo| command.
%    \begin{macrocode}
\newcommand{\@todo}[2][]{%
%    \end{macrocode}
% Use the global value for determining the default prepend behavior.
%    \begin{macrocode}
\if@todonotes@prependcaptionglobal%
	\@todonotes@prependcaptiontrue%
\else%
	\@todonotes@prependcaptionfalse%
\fi%
%    \end{macrocode}
% Store the original text for later usage and parse the given options.
%    \begin{macrocode}
\renewcommand{\@todonotes@text}{#2}%
\renewcommand{\@todonotes@caption}{#2}%
\setkeys{todonotes}{#1}%
%    \end{macrocode}
%
% Add shadows to the inserted todonotes.
%    \begin{macrocode}
\if@todonotes@useshadow%
\if@todonotes@shadowlibraryloaded%
\tikzstyle{notestyle} = [notestyleraw,%
    general shadow={shadow xshift=0.5ex, shadow yshift=-0.5ex,%
        opacity=1,fill=black!50}]%
\else%
\PackageWarning{todonotes}{Trying to put a shadow below a todonote,%
	but the loadshadowlibrary option was not given when loading%
	the todonotes package}%
\tikzstyle{notestyle} = [notestyleraw]%
\fi%
\else%
\tikzstyle{notestyle} = [notestyleraw]%
\fi%
%    \end{macrocode}
% Update notestyles
%    \begin{macrocode}
\tikzstyle{notestyleleft} = [%
    notestyle,%
    left]%
\tikzstyle{connectstyle} = [%
    thick,%
    draw=\@todonotes@currentlinecolor]%
\tikzstyle{inlinenotestyle} = [%
    notestyle,%
    text width=\@todonotes@inlinewidth - 1.6 ex - 1 pt]%
%    \end{macrocode}
% If the option |disable| is given to the command, no output is generated.
%    \begin{macrocode}
\if@todonotes@localdisable%
\else%
%    \end{macrocode}
% Add the item to the list of todos. When the option
% |colorinlistoftodos| is given to the package a small colored 
% square is added in front of the text.
%    \begin{macrocode}
\addtocounter{@todonotes@numberoftodonotes}{1}%
\if@todonotes@appendtolistoftodos%
    \phantomsection%
    \if@todonotes@captiongiven%
    \else%
        \renewcommand{\@todonotes@caption}{#2}%
    \fi%
    \@todonotes@addElementToListOfTodos%
\fi%
%    \end{macrocode}
% Prepend the short caption given if it is requested
%    \begin{macrocode}
\if@todonotes@captiongiven%
    \if@todonotes@prependcaption%
        \renewcommand{\@todonotes@text}{\@todonotes@caption: #2}%
    \fi%
\fi%
%    \end{macrocode}
% Place the todonote as indicated by the options (inline or in a
% marginpar), below is the code for the inline placement.
%    \begin{macrocode}
\if@todonotes@inlinenote%
    \@todonotes@drawInlineNote%
\else%
    \@todonotes@drawMarginNoteWithLine%
\fi%\if@todonotes@inlinenote
\fi%\if@todonotes@localdisable
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{drawMarginNoteWithLine}
% Define helper function |drawMarginNoteWithLine|.
%    \begin{macrocode}
\newcommand{\@todonotes@drawMarginNoteWithLine}{%
%    \end{macrocode}
% When the todonote should be placed inside a marginpar, the code
% below is applied.
% First is the current location in the document stored, this enables
% us later to connect this point with the inserted todonote. 
%    \begin{macrocode}
\ifvmode
  \vspace*{-\parskip}%   % backup if we are already in vertical mode
  \vskip-\baselineskip   % (and don't loose that space after a
                         %  pagebreak ...
  \noindent
\fi
\begin{tikzpicture}[remember picture, overlay, baseline=-0.75ex]%
    \node [coordinate] (inText) {};%
\end{tikzpicture}%
\marginpar[{% Draw note in left margin
    \@todonotes@drawMarginNote%
    \@todonotes@drawLineToLeftMargin%
%    \end{macrocode}
% In the book documentclass (which is a twoside layout), the
% |\marginpar| marginpar macro takes two arguments
% |\marginpar[left]{right}|.
% If both arguments are given, latex will decide in which side the
% margin note has to be inserted, and then use the corresponding
% commands.
%    \begin{macrocode}
}]{% Draw note in right margin
    \@todonotes@drawMarginNote%
    \@todonotes@drawLineToRightMargin%
}%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{addElementToListOfTodos}
% Define helper function |addElementToListOfTodos|.
%    \begin{macrocode}
\newcommand{\@todonotes@addElementToListOfTodos}{%
    \if@todonotes@colorinlistoftodos%
        \addcontentsline{tdo}{todo}{%
            \fcolorbox{\@todonotes@currentbordercolor}%
                {\@todonotes@currentbackgroundcolor}%
                {\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
            \ \@todonotes@caption}%
    \else%
        \addcontentsline{tdo}{todo}{\@todonotes@caption}%
    \fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{drawInlineNote}
% Define helper function |useSizeCommand|.
%    \begin{macrocode}
\newcommand{\@todonotes@useSizeCommand}{%
\ifcsname \expandafter\string\@todonotes@sizecommand\endcsname
\csname \expandafter\string\@todonotes@sizecommand\endcsname%
\else
\@todonotes@sizecommand
\fi%
}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{drawInlineNote}
% Define helper function |drawInlineNote|.
%    \begin{macrocode}
\newcommand{\@todonotes@drawInlineNote}{%
    \if@todonotes@dviStyle%
        {\if@todonotes@inlinepar\par\noindent\fi%
         \begin{tikzpicture}[remember picture]%
            \draw node[inlinenotestyle] {};
         \end{tikzpicture}%
         \if@todonotes@inlinepar\par\fi}%
            \if@todonotes@authorgiven%
                {\noindent \@todonotes@useSizeCommand \@todonotes@author:\,\@todonotes@format{\@todonotes@text}}%
            \else%
                {\noindent \@todonotes@useSizeCommand%
                    \@todonotes@format{\@todonotes@text}}%
            \fi
        {\if@todonotes@inlinepar\par\noindent\fi%
         \begin{tikzpicture}[remember picture]%
            \draw node[inlinenotestyle] {};
         \end{tikzpicture}%
         \if@todonotes@inlinepar\par\fi}%
    \else%
        {\if@todonotes@inlinepar\par\noindent\fi%
         \begin{tikzpicture}[remember picture]%
            \draw node[inlinenotestyle,font=\@todonotes@useSizeCommand]{%
                \if@todonotes@authorgiven%
                    {\noindent \@todonotes@author:\,%
                        \@todonotes@format{\@todonotes@text}}%
                \else%
                    {\noindent \@todonotes@format{\@todonotes@text}}%
                \fi};%
         \end{tikzpicture}%
         \if@todonotes@inlinepar\par\fi}%
    \fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{drawMarginNote}
% Define helper function |drawMarginNote|.
%    \begin{macrocode}
\newcommand{\@todonotes@drawMarginNote}{%
\if@todonotes@dviStyle%
    \begin{tikzpicture}[remember picture]%
        \draw node[notestyle] {};%
    \end{tikzpicture}\\%
    \begin{minipage}{\@todonotes@textwidth}%
    \if@todonotes@authorgiven%
      \@todonotes@useSizeCommand \@todonotes@author:\,
         \@todonotes@format{\@todonotes@text}%
    \else%
      \@todonotes@useSizeCommand\@todonotes@format{\@todonotes@text}%
    \fi%
    \end{minipage}\\%
    \begin{tikzpicture}[remember picture]%
        \draw node[notestyle] (inNote) {};%
    \end{tikzpicture}%
\else%
    \let\originalHbadness\hbadness%
    \hbadness 100000%
    \begin{tikzpicture}[remember picture,baseline=(X.base)]%
        \node(X){\vphantom{\@todonotes@useSizeCommand X}};%
        \if@todonotes@authorgiven%
            \draw node[notestyle,font=\@todonotes@useSizeCommand,anchor=north] (inNote) at (X.north)%
                {\@todonotes@author};%
            \node(Y)[below=of X]{};%
            \draw node[notestyle,font=\@todonotes@useSizeCommand,anchor=north] (inNote) at (X.south)%
                {\@todonotes@format{\@todonotes@text}};%
        \else%
            \draw node[notestyle,font=\@todonotes@useSizeCommand,anchor=north] (inNote) at (X.north)%
                {\@todonotes@format{\@todonotes@text}};%
        \fi%
    \end{tikzpicture}%
    \hbadness \originalHbadness%
\fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{drawLineToRightMargin}
% Define helper function |drawLineToRightMargin|.
%    \begin{macrocode}
\newcommand{\@todonotes@drawLineToRightMargin}{%
\if@todonotes@line%
	\if@todonotes@fancyline%
		\tikz[remember picture,overlay]{%
			\tikzstyle{both}=[line width=3pt, draw, opacity=0.15]%
			\tikzstyle{line}=[shorten >=5pt, line cap=round]%
			\tikzstyle{head}=[shorten >=-1pt, dash pattern=on 0pt off 1pt, ->]%
			\foreach \s in {line,head}{%
				\draw[both,\s]%
					(inNote.north west).. controls +(0:0) and +(90:1.5)..([yshift=1ex] inText);%
			}%
		}%
	\else%
		\begin{tikzpicture}[remember picture, overlay]%
			\draw[connectstyle]%
			([yshift=-0.2cm + \@todonotes@tickmarkheight] inText)%
			-| ([yshift=-0.2cm] inText)%
			-| ([xshift=-0.2cm] inNote.west)%
			-| (inNote.west);%
		\end{tikzpicture}%
	\fi%
\fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{drawLineToLeftMargin}
% Define helper function |drawLineToLeftMargin|.
%    \begin{macrocode}
\newcommand{\@todonotes@drawLineToLeftMargin}{%
\if@todonotes@line%
	\if@todonotes@fancyline%
		\tikz[remember picture,overlay]{%
			\tikzstyle{both}=[line width=3pt, draw, opacity=0.15]%
			\tikzstyle{line}=[shorten >=5pt, line cap=round]%
			\tikzstyle{head}=[shorten >=-1pt, dash pattern=on 0pt off 1pt,->]%
			\foreach \s in {line,head}{%
				\draw[both,\s]%
					(inNote.north east).. controls +(0:0) and +(90:1.5)..([yshift=1ex] inText);%
			}%
		}%
	\else%
		\begin{tikzpicture}[remember picture, overlay]%
			\draw[connectstyle]%
			([yshift=-0.2cm + \@todonotes@tickmarkheight] inText)%
			-| ([yshift=-0.2cm] inText)%
			-| ([xshift=0.2cm] inNote.east)%
			-| (inNote.east);%
		\end{tikzpicture}%
	\fi%
\fi}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\missingfigure}
% Defines the |\missingfigure| macro.
%    \begin{macrocode}
\newcommand{\missingfigure}[2][]{%
\setkeys{todonotes}{#1}%
\addcontentsline{tdo}{todo}{\@todonotes@MissingFigureText: #2}%
\par
\noindent
\hfill
\begin{tikzpicture}
\draw[fill=\@todonotes@currentfigcolor, draw = black!40, line width=2pt]
    (-2, -0.5*\@todonotes@currentfigheight-0.5cm)
    rectangle +(\@todonotes@currentfigwidth, \@todonotes@currentfigheight);
\draw (2, -0.5) node[right, text
    width=\@todonotes@currentfigwidth-4.5cm, font=\@todonotes@useSizeCommand] {#2};
\draw[red, fill=white, rounded corners = 5pt, line width=10pt] 
    (30:2cm) -- (150:2cm) -- (270:2cm) -- cycle;
\draw (0, 0.3) node {\@todonotes@MissingFigureUp};
\draw (0, -0.3) node {\@todonotes@MissingFigureDown};
\end{tikzpicture}\hfill
\null\par
}% Ending \missingfigure command
\fi% Ending \@todonotes@ifdisabled
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\todototoc}
% Inserts a reference to the list of todos in the table of contents. If |chapter| is defined, 
% |chapter| is used as level otherwise will |section| be used.
% The |\todototoc| command respects the disable option.
%    \begin{macrocode}
\newcommand{\todototoc}
{%
    \if@todonotes@disabled
    \else
		\addcontentsline{toc}{\@ifundefined{chapter}{section}{chapter}}{\@todonotes@todolistname}%
    \fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\todo}
% Define the |\todo| command as a redirection to |\@todo|.
%    \begin{macrocode}
\newcommand{\todo}[2][]{%
  % Needed to output any dangling \item of a noskip section (see #36):
  \if@inlabel \leavevmode \fi     
  \if@noskipsec \leavevmode \fi
  \if@todonotes@inlinepar
    \ifhmode
      \@bsphack
      \@todonotes@vmodefalse
    \else
      \@savsf\@m
      \@savsk\z@
      \@todonotes@vmodetrue
    \fi
    {\@todo[#1]{#2}}%
    \@esphack%
    \if@todonotes@vmode \par \fi
  \else%
    \@todo[#1]{#2}%
  \fi}
\newif\if@todonotes@vmode
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\todostyle}
% Define the |\todostyle| macro. |\todostyle|\marg{name}\marg{style}
% defines an |xkeyval| option \meta{name} that, when called in a
% |\todo| or |\missingfigure| command, sets the preset options 
% followed by \meta{style}.
%    \begin{macrocode}
\newcommand*{\todostyle}[2]{%
    \define@key{todonotes}{#1}[]{%
        \setkeys{todonotes}{#2}}}
%    \end{macrocode}
% \end{macro}
% \appendix
% \newpage
% \Finale
\endinput

