Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % todonotes.sty
- % Author: Henrik Skov Midtiby
- % Source: Midtiby notes:
- % http://midtiby.blogspot.com/2008/05/updated-todonotes-package.html
- % 2007-09-17: Initial release of the code
- % 2008-04-17: The first version of the package
- % 2008-05-15: Updated the option handling of the package
- % 2008-05-16: Slightly modified by Kjell Magne Fauske to support notes
- % in the left margin (for documentstyle book).
- % 2008-05-28: Added a missingfigure command
- % 2008-06-10: Made a dependency on the calc package
- % 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)
- % 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.
- % 2008-07-28: Modified the behaviour of the inline todonotes, to
- % avoid empty lines around the inline todonotes.
- % Added the option colorinlistoftodos which inserts a
- % small box with the used fillcolor of the todonotes in
- % the list of todos.
- % ====================
- % Part: Identification
- % ====================
- \ProvidesPackage{todonotes}[2008/07/28]
- % ==============================
- % Part: The package loading part
- % ==============================
- % Loads the packages that todonotes depends on.
- \RequirePackage{ifthen}
- \RequirePackage{xkeyval}
- \RequirePackage{hyperref}
- \RequirePackage{xcolor}
- %\AtBeginDocument{\RequirePackage{hyperref}}
- \RequirePackage{tikz}
- \RequirePackage{calc}
- % ==================
- % Part: Initial code
- % ==================
- % Here the default values are set
- \newcommand{\@backgroundcolor}{orange}
- \newcommand{\@bordercolor}{black}
- \newcommand{\@textwidth}{\marginparwidth}
- % ================================
- % Part: The declaration of options
- % ================================
- % In this part the various options for
- % the package are defined.
- % 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).
- \newif{\ifdisabled}
- \DeclareOptionX{disable}{\disabledtrue}
- % Show small boxes in the list of todos with the color of the
- % inserted todonotes.
- \newif{\ifcolorinlistoftodos}
- \DeclareOptionX{colorinlistoftodos}{\colorinlistoftodostrue}
- % 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.
- \newif{\ifdviStyle}
- \DeclareOptionX{dvistyle}{\dviStyletrue}
- % Make the background color of the notes as
- % an option.
- \define@key{todonotes.sty}%
- {color}{\renewcommand{\@backgroundcolor}{#1}}
- % Make the color of the notes box color as
- % an option.
- \define@key{todonotes.sty}%
- {bordercolor}{\renewcommand{\@bordercolor}{#1}}
- % Make the text width as an option.
- \define@key{todonotes.sty}%
- {textwidth}{\renewcommand{\@textwidth}{#1}}
- % Finally process the given options.
- \ProcessOptionsX
- % ========================
- % Part: The main code part
- % ========================
- \ifdisabled
- % If the option "disable" was passed to the package
- % define two empty commands.
- \newcommand{\listoftodos}{}
- \newcommand{\todo}[2][]{}
- \newcommand{\missingfigure}[1]{}
- \else % \ifdisabled
- % Define the list of todos command
- \newcommand{\listoftodos}
- {\section*{Todo list} \@starttoc{tdo}}
- % Set the appearance of the list of todos
- \newcommand{\l@todo}
- {\@dottedtocline{1}{0em}{2.3em}}
- % Define styles used by the todo command
- \tikzstyle{notestyle} = [
- draw=\@bordercolor,
- line width=0.5pt,
- text width = \@textwidth - 1.6 ex - 1pt,
- inner sep = 0.8 ex]
- \tikzstyle{notestyleleft} = [
- notestyle,
- left]
- \tikzstyle{connectstyle} = [
- thick]
- \tikzstyle{inlinenotestyle} = [
- notestyle,
- text width=\textwidth - 1.6 ex - 1 pt]
- % Code for handling options to the todo macro
- % Set an arbitrarily fill color
- \newcommand{\fillcolor}{}%
- \define@key{todonotes}{color}{\renewcommand{\fillcolor}{#1}}%
- % Set a relative font size
- \newcommand{\sizecommand}{}%
- \define@key{todonotes}{size}{\renewcommand{\sizecommand}{#1}}%
- % Should the todo item be included in the list of todos?
- \newif\ifappendtolistoftodos%
- \define@key{todonotes}{list}[]{\appendtolistoftodostrue}%
- \define@key{todonotes}{nolist}[]{\appendtolistoftodosfalse}%
- % Should the todo item be displayed inline?
- \newif\ifinlinenote%
- \define@key{todonotes}{inline}[]{\inlinenotetrue}%
- \define@key{todonotes}{noinline}[]{\inlinenotefalse}%
- % Should the note in the margin be connected to the insertion point
- % in the text??
- \newif\ifline%
- \define@key{todonotes}{line}[]{\linetrue}%
- \define@key{todonotes}{noline}[]{\linefalse}%
- % Preset values of the options
- \presetkeys
- {todonotes}
- {color=\@backgroundcolor, noinline,
- line, list, size=\normalsize}{}%
- % Define the todo command
- \newcommand{\todo}[2][]{%
- \setkeys{todonotes}{#1}%
- % Add to todo list
- \ifappendtolistoftodos%
- \phantomsection%
- \ifcolorinlistoftodos%
- \addcontentsline{tdo}{todo}{\protect{%
- \colorbox{\fillcolor}{\textcolor{\fillcolor}{\tiny i}} %
- #2}}%
- \else%
- \addcontentsline{tdo}{todo}{\protect{#2}}%
- \fi%
- \fi%
- %
- \ifinlinenote%
- {\par\noindent\tikz[remember picture] \draw node[inlinenotestyle, %
- fill=\fillcolor] {\sizecommand #2};\par}%
- \else%
- %
- % Remember where we are
- \begin{tikzpicture}[remember picture, baseline=-0.75ex]%
- \node [coordinate] (inText) {};%
- \end{tikzpicture}%
- %
- % Make the margin par
- \marginpar[{% Draw note in left margin
- \ifdviStyle%
- % Using dviStyle
- \tikz[remember picture] \draw node[notestyle, fill=\fillcolor] {}; \\ %
- \begin{minipage}{\@textwidth}%
- \sizecommand #2%
- \end{minipage} \\%
- \tikz[remember picture] \draw node[notestyle, fill=\fillcolor] (inNote) {};%
- \ifline%
- \begin{tikzpicture}[remember picture, overlay]%
- \draw[connectstyle, draw=\fillcolor]%
- ([yshift=-0.2cm] inText)%
- -| ([xshift=0.2cm] inNote.east)%
- -| (inNote.east);%
- \end{tikzpicture}%
- \fi%
- \else%
- % Using normal style (non dviStyle)
- \tikz[remember picture] \draw node[notestyle, fill=\fillcolor]
- (inNote) {\sizecommand #2};%
- \ifline%
- \begin{tikzpicture}[remember picture, overlay]%
- \draw[connectstyle, draw=\fillcolor]%
- ([yshift=-0.2cm] inText)%
- -| ([xshift=0.2cm] inNote.east)%
- -| (inNote.east);%
- \end{tikzpicture}%
- \fi%
- \fi% Ending \ifdviStyle
- }]{% Draw note in right margin
- \ifdviStyle%
- % Using dviStyle
- \tikz[remember picture] \draw node[notestyle, fill=\fillcolor] {}; \\ %
- \begin{minipage}{\@textwidth}%
- \sizecommand #2%
- \end{minipage} \\%
- \tikz[remember picture] \draw node[notestyle, fill=\fillcolor] (inNote) {};%
- \ifline%
- \begin{tikzpicture}[remember picture, overlay]%
- \draw[connectstyle, draw=\fillcolor]%
- ([yshift=-0.2cm] inText)%
- -| ([xshift=-0.2cm] inNote.west)%
- -| (inNote.west);%
- \end{tikzpicture}%
- \fi%
- \else%
- % Using normal style (non dviStyle)
- \tikz[remember picture] \draw node[notestyle, fill=\fillcolor]
- (inNote) {\sizecommand #2};%
- \ifline%
- \begin{tikzpicture}[remember picture, overlay]%
- \draw[connectstyle, draw=\fillcolor]%
- ([yshift=-0.2cm] inText)%
- -| ([xshift=-0.2cm] inNote.west)%
- -| (inNote.west);%
- \end{tikzpicture}%
- \fi%
- \fi% Ending \ifdviStyle
- }%
- \fi%
- }%
- \newcommand{\missingfigure}[2]{
- \addcontentsline{tdo}{todo}{Figure: \protect{#1}}%
- \begin{tikzpicture}
- \draw[fill=black!40, draw = white, line width=0pt]
- (-3, -2.5) rectangle +(\textwidth, 4cm);
- \draw (3, 0) node[right, text width=4cm] {#1};
- \draw[red, fill=white, rounded corners = 5pt, line width=10pt]
- (30:2cm) -- (150:2cm) -- (270:2cm) -- cycle;
- \draw (0, 0.3) node {Missing};
- \draw (0, -0.3) node {figure};
- \end{tikzpicture}
- }% Ending \missingfigure command
- \fi % Ending \ifdisabled
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement