You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1552 lines
54 KiB
1552 lines
54 KiB
% \iffalse meta-comment |
|
% |
|
% Copyright (C) 2008 by Henrik Skov Midtiby <henrikmidtiby@gmail.com> |
|
% ------------------------------------------------------- |
|
% |
|
% This file may be distributed and/or modified under the |
|
% conditions of the LaTeX Project Public License, either version 1.2 |
|
% 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.2 or later is part of all distributions of LaTeX |
|
% version 1999/12/01 or later. |
|
% |
|
% \fi |
|
% |
|
% \iffalse |
|
%<*driver> |
|
\ProvidesFile{todonotes.dtx} |
|
%</driver> |
|
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] |
|
%<package>\ProvidesPackage{todonotes} |
|
%<*package> |
|
[2010/09/13 .dtx Todonotes source and documentation.] |
|
%</package> |
|
% |
|
%<*driver> |
|
\documentclass{ltxdoc} |
|
\usepackage{wrapfig} |
|
\usepackage[colorlinks, linkcolor=black]{hyperref} |
|
\usepackage[colorinlistoftodos, shadow]{todonotes}[2010/09/13] |
|
\usepackage{amsmath} |
|
\usepackage{setspace} |
|
\setcounter{tocdepth}{2} |
|
\EnableCrossrefs |
|
\CodelineIndex |
|
\RecordChanges |
|
\begin{document} |
|
\DocInput{todonotes.dtx} |
|
%\iffalse |
|
% \PrintChanges |
|
% \PrintIndex |
|
%\fi |
|
\end{document} |
|
%</driver> |
|
% \fi |
|
% |
|
% \CheckSum{0} |
|
% |
|
% \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.} |
|
% \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 three 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). |
|
% I developed the basic functionality of the package while I worked |
|
% on my bachelor project. |
|
% |
|
% |
|
% |
|
% \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. |
|
% |
|
% \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} |
|
% When the option |obeyDraft| is given, the package checks |
|
% if the option |draft| 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. |
|
% |
|
% \DescribeMacro{danish, german, ngerman, french} |
|
% \DescribeMacro{spanish, catalan, italian} |
|
% \DescribeMacro{portuguese, dutch} |
|
% 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, |
|
% danish, |
|
% dutch, |
|
% french, |
|
% german, |
|
% ngerman, |
|
% italian, |
|
% portuguese and |
|
% spanish. |
|
% |
|
% \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{linecolor} |
|
% \DescribeMacro{bordercolor} |
|
% These options sets the default colors for the todo command. |
|
% There is three colors that can be specified. The border color |
|
% (default |bordercolor=black|) around the inserted text, the color |
|
% behind the inserted text (default |backgroundcolor=orange|) 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{textwidth} |
|
% |textwidth=length| sets the width of a todo item in the margin to |
|
% |length|. The width of inline todonotes will allways be the same |
|
% as the current line width. |
|
% |
|
% \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{shadow} |
|
% If the |shadow| option is given, the inserted todonotes will be |
|
% displayed with a gray shadow. |
|
% 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 |\columnwidth|. |
|
% |
|
% |
|
% |
|
% \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. |
|
% |
|
% \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{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]{Anything but default colors}. |
|
% \begin{verbatim} |
|
% \todo[linecolor=green!70!white, backgroundcolor=blue!20!white, |
|
% bordercolor=red]{Anything but default colors}. |
|
% \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} |
|
% |
|
% \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}{r}[2cm]{6cm} |
|
% \missingfigure[figwidth=6cm]{Add a test image \ldots} |
|
% \end{wrapfigure} |
|
% Another usage of the option is when |\missingfigure| is used in |
|
% the wrapfigure environment. |
|
% \begin{verbatim} |
|
% \begin{wrapfigure}{r}[2cm]{6cm} |
|
% \missingfigure[figwidth=6cm]{Add a test image \ldots} |
|
% \end{wrapfigure} |
|
% \end{verbatim} |
|
% |
|
% |
|
% |
|
% \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. |
|
% |
|
% |
|
% \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} |
|
% |
|
% |
|
% \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. |
|
% |
|
% |
|
% \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}} |
|
% \todoredefined{Test of newly defined command.} |
|
% The 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} |
|
% \todoredefined[color=green]{Test of newly defined command, requesting a green color.} |
|
% This can be done with all the accepted options for the |\todo| command. |
|
% |
|
% |
|
% |
|
% \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. |
|
% \begin{verbatim} |
|
% \todo[inline, caption={Examine this new section}]{ |
|
% \begin{minipage}{\linewidth} |
|
% 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{minipage} |
|
% } |
|
% \end{verbatim} |
|
% The example above renders like |
|
% \todo[inline, caption={Examine this new section}]{ |
|
% \begin{minipage}{\linewidth} |
|
% 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{minipage} |
|
% } |
|
% |
|
% |
|
% |
|
% \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} |
|
% |
|
% |
|
% \pagebreak[4] |
|
% \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.} |
|
% He 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. |
|
% |
|
% |
|
% \iffalse |
|
% \StopEventually{\PrintChanges\PrintIndex} |
|
% \fi |
|
% \StopEventually{\PrintChanges} |
|
% |
|
% \newpage |
|
% \section{Implementation} |
|
% |
|
% Identifies the package and loads the packages dependences. |
|
% \begin{macrocode} |
|
\ProvidesPackage{todonotes}[2010/09/13] |
|
\RequirePackage{ifthen} |
|
\RequirePackage{xkeyval} |
|
\RequirePackage{xcolor} |
|
\RequirePackage{tikz} |
|
\RequirePackage{calc} |
|
% \end{macrocode} |
|
% Some default values are set |
|
% \begin{macrocode} |
|
\newcommand{\@todonotes@text}{}% |
|
\newcommand{\@todonotes@backgroundcolor}{orange} |
|
\newcommand{\@todonotes@linecolor}{orange} |
|
\newcommand{\@todonotes@bordercolor}{black} |
|
\newcommand{\@todonotes@textwidth}{\marginparwidth} |
|
\newcommand{\@todonotes@textsize}{\normalsize} |
|
\newcommand{\@todonotes@figwidth}{\columnwidth} |
|
% \end{macrocode} |
|
% \begin{macrocode} |
|
\AtBeginDocument{ |
|
\ifx\undefined\phantomsection |
|
\newcommand{\phantomsection}{} |
|
\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{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{pendient}% |
|
} |
|
% \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} |
|
% \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 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} |
|
% 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 text size as an option. It requires some magic with the |
|
% |\csname| and |\endcsname| macros, as commands cannot be taken as |
|
% options for a package. |
|
% \begin{macrocode} |
|
\define@key{todonotes.sty}% |
|
{textsize}{\renewcommand{\@todonotes@textsize}{\csname #1\endcsname}} |
|
% \end{macrocode} |
|
% Add option for shadows behind the inserted notes |
|
% \begin{macrocode} |
|
\newif{\if@todonotes@shadowenabled} |
|
\@todonotes@shadowenabledfalse |
|
\DeclareOptionX{shadow}{\@todonotes@shadowenabledtrue |
|
\usetikzlibrary{shadows}} |
|
% \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}} |
|
% \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 the |draft| |
|
% option is given and enable or disable the functionality of this |
|
% package. |
|
% 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 |
|
\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} |
|
\newcommand{\@todonotes@currentlinecolor}{}% |
|
\newcommand{\@todonotes@currentbackgroundcolor}{}% |
|
\newcommand{\@todonotes@currentbordercolor}{}% |
|
\define@key{todonotes}{color}{% |
|
\renewcommand{\@todonotes@currentlinecolor}{#1}% |
|
\renewcommand{\@todonotes@currentbackgroundcolor}{#1}}% |
|
\define@key{todonotes}{linecolor}{% |
|
\renewcommand{\@todonotes@currentlinecolor}{#1}}% |
|
\define@key{todonotes}{backgroundcolor}{% |
|
\renewcommand{\@todonotes@currentbackgroundcolor}{#1}}% |
|
\define@key{todonotes}{bordercolor}{% |
|
\renewcommand{\@todonotes@currentbordercolor}{#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} |
|
% 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. |
|
% \begin{macrocode} |
|
\newcommand{\@todonotes@currentfigwidth}{\@todonotes@figwidth} |
|
\define@key{todonotes}% |
|
{figwidth}{\renewcommand{\@todonotes@currentfigwidth}{#1}} |
|
% \end{macrocode} |
|
% Preset values of the options |
|
% \begin{macrocode} |
|
\presetkeys% |
|
{todonotes}% |
|
{linecolor=\@todonotes@linecolor,% |
|
backgroundcolor=\@todonotes@backgroundcolor,% |
|
bordercolor=\@todonotes@bordercolor,% |
|
nofancyline,% |
|
nodisable,% |
|
noinline,% |
|
nocaption,% |
|
figwidth=\@todonotes@figwidth,% |
|
line, list, size=\@todonotes@textsize}{}% |
|
% \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][]{\ignorespaces} |
|
\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] |
|
{\ifdefined\chapter\chapter*{#1}\else\section*{#1}\fi \@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, |
|
line width=0.5pt, |
|
text width = \@todonotes@textwidth - 1.6 ex - 1pt, |
|
inner sep = 0.8 ex, |
|
rounded corners=4pt] |
|
% \end{macrocode} |
|
% Add shadows and rounded corners to the inserted todonotes. |
|
% \begin{macrocode} |
|
\if@todonotes@shadowenabled |
|
\tikzstyle{notestyle} = [notestyleraw, |
|
general shadow={shadow xshift=.5ex, shadow yshift=-.5ex, |
|
opacity=1,fill=black!50}] |
|
\else |
|
\tikzstyle{notestyle} = [notestyleraw] |
|
\fi |
|
\tikzstyle{notestyleleft} = [ |
|
notestyle, |
|
left] |
|
\tikzstyle{connectstyle} = [ |
|
thick, |
|
draw=\@todonotes@currentlinecolor] |
|
\tikzstyle{inlinenotestyle} = [ |
|
notestyle, |
|
text width=\linewidth - 1.6 ex - 1 pt] |
|
% \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} |
|
% 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 |
|
\ignorespaces% |
|
}% |
|
% \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} |
|
\begin{tikzpicture}[remember picture, 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}{\protect{% |
|
\colorbox{\@todonotes@currentbackgroundcolor}% |
|
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}% |
|
\ \@todonotes@caption}}% |
|
\else% |
|
\addcontentsline{tdo}{todo}{\protect{\@todonotes@caption}}% |
|
\fi}% |
|
% \end{macrocode} |
|
% \end{macro} |
|
% \begin{macro}{drawInlineNote} |
|
% Define helper function |drawInlineNote|. |
|
% \begin{macrocode} |
|
\newcommand{\@todonotes@drawInlineNote}{% |
|
\if@todonotes@dviStyle% |
|
{\par\noindent\begin{tikzpicture}[remember picture]% |
|
\draw node[inlinenotestyle] {};\end{tikzpicture}\par}% |
|
{\noindent \@todonotes@sizecommand \@todonotes@text}% |
|
{\par\noindent\begin{tikzpicture}[remember picture]% |
|
\draw node[inlinenotestyle] {};\end{tikzpicture}\par}% |
|
\else% |
|
{\par\noindent\begin{tikzpicture}[remember picture]% |
|
\draw node[inlinenotestyle,font=\@todonotes@sizecommand] {\@todonotes@text};% |
|
\end{tikzpicture}\par}% |
|
\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}% |
|
\@todonotes@sizecommand \@todonotes@text% |
|
\end{minipage}\\% |
|
\begin{tikzpicture}[remember picture]% |
|
\draw node[notestyle] (inNote) {};% |
|
\end{tikzpicture}% |
|
\else% |
|
\begin{tikzpicture}[remember picture,baseline=(X.base)]% |
|
\node(X){\vphantom{X}};% |
|
\draw node[notestyle,font=\@todonotes@sizecommand,anchor=north] (inNote) at (X.north)% |
|
{\@todonotes@text};% |
|
\end{tikzpicture}% |
|
\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] 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] 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: \protect{#2}}% |
|
\par |
|
\noindent |
|
\begin{tikzpicture} |
|
\draw[fill=black!40, draw = white, line width=0pt] |
|
(-2, -2.5) rectangle +(\@todonotes@currentfigwidth, 4cm); |
|
\draw (2, -0.3) node[right, text |
|
width=\@todonotes@currentfigwidth-4.5cm] {#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} |
|
}% 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][]{\@todo[#1]{#2}} |
|
% \end{macrocode} |
|
% \end{macro} |
|
% |
|
% \Finale |
|
\endinput |
|
|
|
|