% \iffalse meta-comment
%
% Copyright (C) 2017 by Dimitri Block <dimitriblock@gmail.com>
% -------------------------------------------------------
% 
% This file 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{outlining.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{outlining}
%<*package>
    [2017/10/23 v0.1 initial version]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{outlining}
\EnableCrossrefs         
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{outlining.dtx}
  \PrintChanges
  %\PrintIndex
\end{document}
%</driver>
% \fi
%
% \CheckSum{88}
%
% \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{v0.1}{2017/10/23}{Initial version}
%
% \GetFileInfo{outlining.dtx}
%
% \DoNotIndex{\newcommand,\newenvironment, \listoftodos, \DeclareOption, \clearpage, \AtBeginDocument, \AtEndDocument, \newcounter}
% 
%
% \title{The \textsf{outlining} package\thanks{This document
%   corresponds to \textsf{outlining}~\fileversion, dated \filedate.}}
% \author{Dimitri Block \\ \texttt{dimitriblock@gmail.com}}
%
% \maketitle
%
% \section{Introduction}
%
% Every scientifc document requires outlining before it is written. 
% The following paragraph shows outline plus final text.
% 
% \outlineTopics
% \topic{Best-practices outlines}
% A best-practices are three level outlines.
% \major{Each pararagraph shall have a single topic}
% \major{Each topic consists of multiple major points}
% \major{Major may have optional minor points}
%
% \fbox{\begin{minipage}{0.5\textwidth} 
% \listOutline
% \end{minipage}}
%
%
% \StopEventually{}
%
% \section{Implementation}
% Some internal macros:
%    \begin{macrocode}
\newcommand{\@disableOutlining}{}
\newcommand{\@disableTopics}{}
\newcommand{\@disableMajors}{}
\newcommand{\@disableMinors}{}
\newcommand{\@outlineAtBegin}{}
\newcommand{\@outlineAtEnd}{}
%    \end{macrocode}
% \begin{macro}{disable}
% Disable all package output
%    \begin{macrocode}
\DeclareOption{disable}{\renewcommand{\@disableOutlining}{disable}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{outlineatbegin}
% Outline at document begin
%    \begin{macrocode}
\DeclareOption{outlineatbegin}{\renewcommand{\@outlineAtBegin}{\listOutline}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{outlineatend}
% Outline at document end
%    \begin{macrocode}
\DeclareOption{outlineatend}{\renewcommand{\@outlineAtEnd}{\listOutline}}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
\ProcessOptions\relax
\usepackage[obeyFinal, \@disableOutlining]{todonotes}
\newcounter{majornum}
\newcounter{minornum}
\AtBeginDocument{\@outlineAtBegin}
\AtEndDocument{\@outlineAtEnd}
%    \end{macrocode}
%
% \begin{macro}{\outlineTopics}
% Activate topics and deactive major and minor points
%    \begin{macrocode}
\newcommand{\outlineTopics}{
	\renewcommand{\@disableTopics}{} 
	\renewcommand{\@disableMajors}{disable}
	\renewcommand{\@disableMinors}{disable} 
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outlineTopicsMajors}
% Activate topic and major points and deactive minor points
%    \begin{macrocode}
\newcommand{\outlineTopicsMajors}{
	\renewcommand{\@disableTopics}{} 
	\renewcommand{\@disableMajors}{}
	\renewcommand{\@disableMinors}{disable} 
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\outlineTopicsMajorsMinors}
% Activate topics, major and minor points
%    \begin{macrocode}
\newcommand{\outlineTopicsMajorsMinors}{
	\renewcommand{\@disableTopics}{} 
	\renewcommand{\@disableMajors}{}
	\renewcommand{\@disableMinors}{} 
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\topic}
% Topic
%    \begin{macrocode}
\newcommand{\topic}[1]
{\setcounter{majornum}{0}\setcounter{minornum}{0}\todo[color=red!40, size=\footnotesize, inline,\@disableTopics]
{\textbf{#1}}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\major}
% Major point
%    \begin{macrocode}
\newcommand{\major}[1]
{\stepcounter{majornum}\setcounter{minornum}{0}\todo[color=green!10, size=\footnotesize, inline,\@disableMajors]
{\themajornum \; #1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\minor}
% Minor point
%    \begin{macrocode}
\newcommand{\minor}[1]
{\stepcounter{minornum}\todo[color=gray!10, size=\footnotesize, inline, \@disableMinors]
{\themajornum.\theminornum \; #1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\listOutline}
% Outline list
%    \begin{macrocode}
\newcommand{\listOutline}{
	\clearpage
	\listoftodos[Document Outline]
	\clearpage
}
%    \end{macrocode}
% \end{macro}
%
%
% \Finale
\endinput