\ProvidesPackage{diabetes-logbook}[2018-07-22 a tryhard logbook for diabetes]
\NeedsTeXFormat{LaTeX2e}
% PACKAGES  ===========================
   \RequirePackage{
      xparse,
      etoolbox,
      microtype,
      xstring,
      longtable,
      array,
      multicol,
      multirow,
      rotating,
      caption,
      fancyhdr,
   }
   \RequirePackage[table]{xcolor}
   \RequirePackage[
      unicode=true,
      bookmarks=true,                 % show bookmarks bar?
      bookmarksopen=false,            % expand bookmark tree
      unicode=true,                   % non-Latin characters in pdfviewer's bookmarks
      pdftoolbar=true,                % show pdfviewer's toolbar?
      pdfmenubar=true,                % show pdfviewer's menu?
      pdffitwindow=false,             % window fit to page when opened
      pdfstartview={FitH},            % fits the width of the page to the window
      pdftitle={Diabetes Logbook},    % title
      pdfauthor={},                   % author
      pdfnewwindow=true,              % links in new PDF window
      colorlinks=true,                % false: boxed links; true: colored links
      linkcolor=magenta,              % color of internal links (change box color with linkbordercolor)
      citecolor=green,                % color of links to bibliography
      filecolor=magenta,              % color of file links
      urlcolor=cyan,                  % color of external links
      linkbordercolor=cyan,
      % hidelinks=false
   ]{hyperref}
   \RequirePackage{bookmark}% 

   \ExplSyntaxOn
   \sys_if_engine_pdftex:T {
      \RequirePackage[english]{babel}
      \renewcommand{\sfdefault}{pag}
   }
   \sys_if_engine_xetex:T {
      \RequirePackage{polyglossia}
         \setdefaultlanguage{english}
      \RequirePackage{fontspec}
         % \setmainfont{XCharter}[
         %    Extension= .otf,
         %    UprightFont= *-Roman,
         %    BoldFont= *-Bold,
         %    ItalicFont= *-Italic,
         %    SlantedFont= *-Slanted,
         %    BoldSlantedFont= *-BoldSlanted,
         %    BoldItalicFont= *-BoldItalic
         % ]%
         \setmainfont{lmroman10}[
            Extension      = .otf,
            UprightFont    = *-regular,
            BoldFont       = *-bold,
            ItalicFont     = *-italic,
            BoldItalicFont = *-bolditalic,
          ]%
         \setsansfont{lmmono}[
            Extension   = .otf,
            UprightFont = *10-regular,
            ItalicFont  = *10-italic,
            BoldFont    = *lt10-bold,
          ]%
   }
   \ExplSyntaxOff
   
   \RequirePackage[xspace]{ellipsis}% redef of \dots to look ahead and space out properly
% OPTIONS =============================
   \setlength{\parindent}{0\p@}% INDENTATION IS NOT AN OPTION
   % FANCYHDR
      \pagestyle{fancy}
      \lhead{Diabetes Logbook}
      \rhead{p.\,\thepage}
      \cfoot{}
      \renewcommand{\headrulewidth}{0.8pt}
      \renewcommand{\footrulewidth}{0.8pt}
   % CAPTION
      \DeclareCaptionFormat{myformat}{\rmfamily\small\textsc{#1}#2{#3}}
      \captionsetup{format={myformat},labelsep={period}}
   % COLORS
      % ROWS
      \definecolor{evenRowColor}{gray}{1}%
      \definecolor{oddRowColor}{gray}{0.85}%
      % TEXT
      \definecolor{evenRowTextColor}{gray}{0}%
      \definecolor{oddRowTextColor}{gray}{0}%
      % TABLE HEADER ROW, TABLE LINES; GRAPH AXES, LABELS 
      \definecolor{tableColor}{gray}{0.05}%
      % FANCYHDR HEADER AND FOOTER
      \definecolor{headerColor}{gray}{0.25}%
      % GRAPH CURVE
      \definecolor{curveColor}{gray}{0.35}%
   \AtEndPreamble{%
      \usepackage{pgf,pgfplots,pgfplotstable}% FIXME
      \usetikzlibrary{dateplot}%
      \color{headerColor}% EXEC'D B4 DOC BEGIN OTHERWISE NADA
   }%   
   \AtBeginDocument{%
      \rowcolors{0}{evenRowColor}{oddRowColor}%
      \color{tableColor}%
      \sffamily%
      \footnotesize% ~7--8pt
      \changestrut%
      \calcmaxrows%
   }%

   \DeclareOption{graph}{%
      \AtEndPreamble{%
         \usepackage{%
            pgf,%
            pgfplots,%
            pgfplotstable%
         }%
         \usepgfplotslibrary{dateplot}%
         \usepackage{pgfcalendar}\usetikzlibrary{calendar}% fixme
         \pgfplotsset{%
            compat=1.16,% 
            width={\textwidth},%
            height={\dimexpr\textheight*29/125\relax},% textheight*~1.12/5  for 5 graphs
            grid=both,%
            every minor grid/.append style={line width=0.25pt},%
            every extra y tick/.style={grid=minor},%
            % enlarge x limits=0.003,%
            enlarge y limits=auto,%
            colormap={mycm}{%
               color(1)=(blue!70),%
               color(2.5)=(teal!70),%
               color(4.5)=(green),%
               color(7)=(yellow),%
               color(11)=(red),%
               color(14)=(magenta)%
            },%
            y coord trafo/.code={\pgfmathparse{#1-(\mya-1)/\mya*(#1-\myb)*(#1>\myb)}},%
            y coord inv trafo/.code={\pgfmathparse{#1+(\mya-1)*(#1-\myb)*(#1>\myb)}},%
            date coordinates in=x,%
            xtick distance=1,% 1 DAY
            ytick distance=1,% 1 mM
            xmin={\dmlb@iDate 00:00},%
            xmax={\dmlb@fDate 00:00},%
            ymin=1,%
            ylabel={\dmlb@iDate{\kern-0.2em}--\dmlb@fDate{\kern-0.2em}},%
            ylabel style={%
               font={\large},%
               yshift={-\textwidth+0.4cm},%
            },%
            %
            % \pgfplotsset{%
            %    ffs.code={%
            %       \xdef\tmpa{}%
            %       \pgfmathparse{int((22-\myb)*\myc/\mya)}%
            %       \foreach \x in {1,...,\pgfmathresult}% \foreach \pgfplotsforeachungrouped 
            %          {\pgfmathparse{\myb+\x*\mya/\myc}\xdef\tmpa{\tmpa\pgfmathresult,}}%
            %       \xdef\tmpa{\tmpa30.0}%
            %       \pgfplotsset{extra y ticks={\tmpa}}%
            %    },%
            % }%
            %
            % \pgfplotsset{%
            %    ffs/.code={\pgfplotsset{%
            %       extra y ticks={%
            %       \pgfmathparse{int((22-\myb)*\myc/\mya)}%
            %       \pgfplotsforeachungrouped \x in {1,...,\pgfmathresult}% \foreach \pgfplotsforeachungrouped 
            %          {\pgfmathparse{\myb+\x*\mya/\myc}\pgfmathresult,}%
            %       30.0%
            %       },%
            %       }%
            %    }%
            % }%          
            % extra y ticks={9,10,12,13,15,16,18,19,21},%
            every tick/.style={line width=0pt},% every tick/.style={very thin,color={rgb,255:red,29;green,25;blue,32}},%
            axis y line=left,%
            % yticklabel={\pgfmathparse{int(\tick)}\pgfmathprintnumber{\tick}},% default
            yticklabel={\pgfmathparse{int(\tick)}% which ticks show have a gridline but no number (overlapping)
               \ifnum\pgfmathresult=\myb
                  \color{red}%
               \fi
               \pgfmathprintnumber{\tick}%
               % \ifnum\pgfmathresult=9
               % \else
               % \ifnum\pgfmathresult=10
               % \else
               % \ifnum\pgfmathresult=12
               % \else
               % \ifnum\pgfmathresult=13
               % \else
               % \ifnum\pgfmathresult=15
               % \else
               % \ifnum\pgfmathresult=16
               % \else
               % \ifnum\pgfmathresult=18
               % \else
               % \ifnum\pgfmathresult=19
               % \else
               % \ifnum\pgfmathresult=21
               % \else
               %    \pgfmathprintnumber{\tick}%
               % \fi\fi\fi\fi\fi\fi\fi\fi\fi%
            },%
            xticklabel={\day.},% xticklabel={\month.\day.},%
            table/col sep=comma,%
         }%
         \usetikzlibrary{external}%
         \tikzexternalize[%
            % force remake=true,%
            prefix=\myRelPath,%
            verbose=false,%
         ]%
      }%
      \AtEndDocument{%
         % \tikzset{external/force remake}%
         \centering%
         \setcounter{dmlb@dataSet}{0}%
         \clearpage%
         % \pgfplotsset{ffs}%
         \dmlb@graph%
      }%
   }

   \DeclareOption*{}
   \ProcessOptions\relax
% COUNTERS ============================
   % SWITCHES FOR ROW/DATE BG AND TEXT COLORS
   \newbool{dmlb@rcc}% DATE COLUMN COLOR
   \newbool{dmlb@rc}
   % REFCOUNTER FOR LONGTABLEROW ROW LABELS
   \newcounter{dmlb@dateLabel}
   % MULTIROW LENGTH AND PAGE ROWCOUNT
   \newcount\dmlb@mrow
   \newcount\row
   % MAXROWS
   \newcount\dmlb@maxrows
   % CURRENT ROW TEXTHEIGHTS
   \newcount\@potato
   % DATE- title case to not conflict with current day counts
   \newcount\Year
   \newcount\Month
   \newcount\Day
   \newbool{@leap}
   % DATA SWITCHES/COUNTERS
   \newbool{dmlb@openDatFile}
   \newbool{dmlb@readPeriod}
   \newbool{dmlb@doneReading}
   \newcounter{dmlb@dataSet}
   % FILE INPUT
   \newcount\tmpa
   \newcount\tmpb
% COMMANDS ============================
\newcommand{\autoFileInput}[1]{% RELATIVE PATHFILE AS ARG; INPUTS `yy-mm.tex` files
   \IfFileExists{#1\TwoDigits{\the\tmpa}-\TwoDigits{\the\tmpb}}%
   {%
      \input{#1\TwoDigits{\the\tmpa}-\TwoDigits{\the\tmpb}}%
      \ifnum\tmpb=12 
         \global\advance\tmpa 1\relax%
         \global\tmpb 0\relax%
      \fi
      \global\advance\tmpb 1\relax%
      \autoFileInput{#1}%
   }%
   {}%
}

\NewDocumentCommand \dmlbsetdate { m m m O{} } {% (RE)SETS DATE TO {YYYY}{MM}{DD}; OPT AUTO FILE INPUT IN `YY-MM` FORM FROM GIVEN/CURRENT DATE ONWARDS IN REL PATH `#4`; ALL ENTRIES AFTER LAST STARRED ENTRY IN LAST INPUT FILE GET THE NEW DATE- FIX BY HAVING ALL FILES END WITH STARRED ENTRY, SAME GOES FOR CHANGING DATE- END THE LAST ENTRY WITH *
   % DIFFERENT YEAR?
   \ifnum\Year=#1
      \ifnum\Month=#2
         \global\Day #3\relax%
         \dmlb@rowlabel{\dmlb@Date}%
      \else
         \global\Month #2\relax%
         \global\Day #3\relax%
         \dmlb@rowlabel{\dmlb@Date}%
         \pdfbookmark[1]{\monthn@me}{\dmlb@Date}%
      \fi
   \else
      \global\Year #1\relax
      \StrGobbleLeft{\the\Year}{2}[\sYear]%
      \xdef\sYear{\sYear}%
      % LEAP YEAR?
      \ifnum\numexpr(\Year-(\Year/4)*4)\relax=0 
         \ifnum\numexpr(\Year-(\Year/400)*400)\relax=0
            \global\boolfalse{@leap}% FALSE LEAP YEAR
         \else
            \global\booltrue{@leap}% TRUE LEAP YEAR
         \fi
      \else
         \global\boolfalse{@leap}%
      \fi
      \global\Month #2\relax%
      \global\Day #3\relax%
      \dmlb@rowlabel{\dmlb@Date}%
      \pdfbookmark{\the\Year}{\dmlb@Date}%
      \pdfbookmark[1]{\monthn@me}{\dmlb@Date}%
   \fi
   %
   \if\relax\detokenize{#4}\relax% FIXME- WORKS ONLY ONCE AND UP TO PRESENT DATE AND MUST BE USED ONLCE W/ GIVEN YY-MM FORMAT TO GENERATE .DAT'S
   \else
      \immediate\newwrite\periods%
      \immediate\openout\periods=\myRelPath0.dat%
      \pgfcalendardatetojulian{\year-\month-\day}{\tmpa}
      \pgfcalendardatetojulian{\dmlb@Date}{\tmpb}%
      \global\advance\tmpa -\tmpb\relax%
      \global\divide\tmpa \myd\relax%
      \pgfcalendardatetojulian{#1-#2-#3}{\tmpb}%
      \pgfcalendarjuliantodate{\tmpb}{\iY}{\iM}{\iD}%
      \global\tmpb 0\relax%
      \writeperiods%
      \global\@potato 0\relax%
      \immediate\closeout\periods%
      \gdef\dmlb@Date{\the\Year-\TwoDigits{\the\Month}-\TwoDigits{\the\Day}}%
      \immediate\newwrite\data%
      \newread\periods%
      \openin\periods=\myRelPath0.dat%
      \global\tmpa \sYear\relax%
      \global\tmpb \Month\relax%
      \autoFileInput{#4}%
   \fi
}

\def\writeperiods{%
   \ifnum\tmpb=\tmpa
      \immediate\write\periods{\iY-\iM-\iD}%
      \pgfcalendardatetojulian{\year-\month-\day}{\@potato}
      \pgfcalendarjuliantodate{\@potato}{\iY}{\iM}{\iD}%
      \immediate\write\periods{\iY-\iM-\iD}%
   \else
      \global\advance\tmpb 1\relax
      \immediate\write\periods{\iY-\iM-\iD}%
      \pgfcalendardatetojulian{\iY-\iM-\iD+\myd}{\@potato}%
      \pgfcalendarjuliantodate{\@potato}{\iY}{\iM}{\iD}%
      \immediate\write\periods{\iY-\iM-\iD}%
      \writeperiods%
   \fi
}

\newcommand{\dmlb@rowlabel}[1]{\refstepcounter{dmlb@dateLabel}\label{#1}}

\NewDocumentCommand {\dmlb@ddate} { s } {% INCREMENTS DATE (IF UNSTARRED), ROW LABEL, PDF BOOKMARK, PRINTS DATE IF ENOUGH ROOM
   \small%
   \ifbool{dmlb@rcc}%
      {\color{oddRowTextColor}\IfBooleanF{#1}{\global\boolfalse{dmlb@rcc}}}%
      {\color{evenRowTextColor}\IfBooleanF{#1}{\global\booltrue{dmlb@rcc}}}%
   \ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>2% ROOM FOR DATE?
      \ifnum\dmlb@mrow=1
         % \multirow{-\strip@pt\dimexpr((\mym*\p@/\textwidth)*(\@potato-1))\relax}{*}{\rotatebox{90}{\TwoDigits{\the\Day}--\TwoDigits{\the\Month}\ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>4 --\sYear\fi}}%
         \multirow{-\strip@pt\dimexpr((\mym*\p@/\textwidth)*(\@potato-1))\relax}{*}{\rotatebox{90}{% #genius
            \TwoDigits{\the\Day}--\TwoDigits{\the\Month}%
            \ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>6 --\the\Year%
            \else
               \ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>4 --\sYear\fi
            \fi
         }}%
      \else
         % \multirow{-\dmlb@mrow}{*}{\rotatebox{90}{\TwoDigits{\the\Day}--\TwoDigits{\the\Month}\ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>4 --\sYear\fi}}%
         \multirow{-\dmlb@mrow}{*}{\rotatebox{90}{%
            \TwoDigits{\the\Day}--\TwoDigits{\the\Month}%
            \ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>6 --\the\Year%
            \else
               \ifnum\numexpr(\dmlb@mrow+\@potato-1)\relax>4 --\sYear\fi
            \fi
         }}%
      \fi
   \fi
   \IfBooleanF{#1}{% FIXME, (pdfbookmark can't handle ifcase inside it)
      \ifnum\Day=31
         \ifnum\Month=12
            \global\advance\Year 1\relax%
            %
            \global\Month 1\relax%
            \global\Day 0\relax%
            %
            \StrGobbleLeft{\the\Year}{2}[\sYear]%
            \xdef\sYear{\sYear}%
            \ifnum\numexpr(\Year-(\Year/4)*4)\relax=0 
               \ifnum\numexpr(\Year-(\Year/400)*400)\relax=0% RIP YEARs 0--400 because of floored division- possible fix, check if >400 else branch is go into negatives and mult by -1 at end
                  \global\boolfalse{@leap}% FALSE LEAP YEAR
               \else
                  \global\booltrue{@leap}% TRUE LEAP YEAR
               \fi
            \else
               \global\boolfalse{@leap}%
            \fi
            \pdfbookmark{\the\Year}{\the\Year}% 
         \else% NO YEAR STEP REQUIRED
            \global\advance\Month 1\relax
            \global\Day 0\relax%
         \fi
         \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
      \else% NOT 31
         \ifnum\Day=30
            \ifnum\Month=4
               \global\advance\Month 1\relax%
               \global\Day 0\relax%
               \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
            \else
               \ifnum\Month=6
                  \global\advance\Month 1\relax%
                  \global\Day 0\relax%
                  \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
               \else
                  \ifnum\Month=9
                     \global\advance\Month 1\relax%
                     \global\Day 0\relax%
                     \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
                  \else
                     \ifnum\Month=11
                        \global\advance\Month 1\relax%
                        \global\Day 0\relax%
                        \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
                     \fi
                  \fi
               \fi
            \fi
         \else% NOT 30, IS IT FEB?
            \ifnum\Month=2
               \ifbool{@leap}% IS LEAP?
               {%
                  \ifnum\Day=29
                     \global\advance\Month 1\relax%
                     \global\Day 0\relax%
                     \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
                  \fi
               }%
               {%
                  \ifnum\Day=28% ISNOLEAP?
                     \global\advance\Month 1\relax%
                     \global\Day 0\relax%
                     \pdfbookmark[1]{\monthn@me}{\dmlb@sDate}%
                  \fi
               }%
            \fi
         \fi
      \fi
      \global\advance\Day 1\relax%
      \dmlb@rowlabel{\dmlb@Date}%
   }%
   \global\dmlb@mrow 0\relax%
   &%
}

\newcommand{\dmlb@checkmedaddy}[1]{%
   \ifbool{dmlb@readPeriod}%
   {%
      \ifbool{dmlb@openDatFile}%
      {%
         % \IfStrEq{\dmlb@Date\fixme}{\dmlb@fDate}%            100% time
         \pgfcalendarifdate{\dmlb@Date}{at least=\dmlb@fDate}% 137% time
         {%
            \immediate\closeout\data%
            \global\boolfalse{dmlb@openDatFile}%
            \global\boolfalse{dmlb@readPeriod}%
         }%
         {%
            #1%
         }%
      }%
      {%
         % \IfStrEq{\dmlb@Date\fixme}{\dmlb@iDate}%            100% time
         \pgfcalendarifdate{\dmlb@Date}{at least=\dmlb@iDate}% 137% time
         {%
            \pgfcalendarifdate{\dmlb@Date}{at most=\dmlb@fDate}%
            {%
               \stepcounter{dmlb@dataSet}%
               \immediate\openout\data=\myRelPath\thedmlb@dataSet.dat%
               \global\booltrue{dmlb@openDatFile}%
               #1%
            }%
            {% DATESET USED AND STOP DATE OF CURRENT PERIOD BYPASSED, SKIP AHEAD; ALSO NO EMPTY .DAT'S
               \stepcounter{dmlb@dataSet}%
               \global\boolfalse{dmlb@readPeriod}%
               \dmlb@checkmedaddy{#1}%
            }%
         }%
         {}%
      }%
   }%
   {%
      \global\read\periods to \dmlb@iDate%
      \ifeof\periods
         \global\booltrue{dmlb@doneReading}%
         \immediate\closeout\data%
         \immediate\closein\periods%
      \else
         \global\read\periods to \dmlb@fDate%
         \global\booltrue{dmlb@readPeriod}%
         \dmlb@checkmedaddy{#1}%
      \fi
   }%
}

\newcommand{\dmlb@QQ}[8][&]{%
   \ifstrequal{&}{#1}%
      {\global\advance\dmlb@mrow \@potato\relax}%
      {\global\advance\dmlb@mrow 1\relax}%
   \ifbool{dmlb@doneReading}%
      {}%
      {\dmlb@checkmedaddy{%
         \ifblank{#3}% FIXME- checking if #3 blank inside checkmedaddy would require definition here
            {}%
            {\immediate\write\data{\dmlb@Date\fixme#2, #3}}%
         % % Data collection for spreadsheet
         % \immediate\write\data{\dmlb@Date\fixme#2, #3, #4, #5, #6, #7}% , #8- expand within the write or before it somehow?
      }}%
   \ifbool{dmlb@rc}%
      {\rowstyle{\color{evenRowTextColor}}\global\boolfalse{dmlb@rc}}%
      {\rowstyle{\color{oddRowTextColor}}\global\booltrue{dmlb@rc}}%
   \ifbool{dmlb@rcc}%
      {\cellcolor{oddRowColor}}%
      {\cellcolor{evenRowColor}}%
   #1%  date
   #2&% time
   #3&% blood glucose
   #4&% insulin
   #5&% carbohydrates
   #6&% protein
   #7&% fat
   #8%  remarks
   \color{tableColor}%
   \\%
}

\NewDocumentCommand \QQQ { m m m m m m m s } {%
   \if\relax\detokenize{#7}\relax%
      \global\@potato 1\relax%
   \else
      \setbox0=\hbox{#7}%
      \global\@potato \dimexpr\wd0\relax\relax%
      \global\divide\@potato \dimexpr\mym\relax\relax%
      \global\advance\@potato 1\relax%
   \fi
   \global\advance\row \@potato\relax%
   \ifnum\row>\dmlb@maxrows
      \global\row \@potato\relax%
      \global\dmlb@mrow 0\relax%
      \IfBooleanTF{#8}%
         {\dmlb@QQ[\dmlb@ddate]{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
         {\dmlb@QQ{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% ALREADY PAGEBROKEN BOTTOM
   \else
      \ifnum\row=\dmlb@maxrows
         \global\row 0\relax%
         \IfBooleanTF{#8}%
            {\dmlb@QQ[\dmlb@ddate]{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
            {\dmlb@QQ[\dmlb@ddate*]{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% PAGEBROKEN TOP
         \pagebreak%
      \else
         \IfBooleanTF{#8}%
            {\dmlb@QQ[\dmlb@ddate]{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
            {\dmlb@QQ{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
      \fi
   \fi
}

\newcommand{\dmlb@graph}{%
   \newread\periods%
   \openin\periods=\myRelPath0.dat%
   \read\periods to \dmlb@iDate%
   \ifeof\periods
   \else
      \pdfbookmark[0]{\myd-day graphs}{gr:0}%
      \StrLeft{\dmlb@iDate}{4}[\iY]%
      \edef\fY{0}%
      \dmlb@graphmedaddy%
   \fi
   \immediate\closein\periods%
}

\newcommand{\dmlb@graphmedaddy}{%
   \refstepcounter{dmlb@dataSet}%
   \read\periods to \dmlb@fDate%
   \IfFileExists{\myRelPath\thedmlb@dataSet.dat}{%
      \tikzsetnextfilename{\thedmlb@dataSet}%
      \ifnum\iY>\fY      
         \pdfbookmark[1]{\iY}{gr:\iY}% year long time skip
         \StrLeft{\dmlb@fDate}{4}[\fY]%
         \edef\liY{\iY}% last initial year
      \else
         \StrLeft{\dmlb@fDate}{4}[\fY]%
         \ifnum\iY>\liY
            \pdfbookmark[1]{\iY}{gr:\iY}% 
            \edef\liY{\iY}%
         \fi
      \fi   
      \pdfbookmark[2]{\dmlb@iDate}{gr:\thedmlb@dataSet}%
      \begin{tikzpicture}%
      \begin{axis}[%
         %% \dmlb@grOpts,% FIXME- this or the default, ifcsundef?
      ]% sharp plot, smooth, only marks
         \addplot[scatter, smooth, color=curveColor] table [header=false, x index=0, y index=1]{\myRelPath\thedmlb@dataSet.dat};%
         % \addplot[\dmlb@grOpts] table [header=false, x index=0, y index=1]{\myRelPath\thedmlb@dataSet.dat};% fixme- axis or plot options?
      \end{axis}%
      \end{tikzpicture}%
   }%
   {}%
   \read\periods to \dmlb@iDate%
   \ifeof\periods
      % DONT REPEAT
   \else
      \par\vfill% graph concatenation prevention
      \StrLeft{\dmlb@iDate}{4}[\iY]%
      \dmlb@graphmedaddy%
   \fi
}

\newcommand{\monthn@me}{%
   \ifcase\Month%
      \or January%
      \or Febuary%
      \or March%
      \or April%
      \or May%
      \or June%
      \or July%
      \or August%
      \or September%
      \or October%
      \or November%
      \or December%
   \fi%
}

\def\dmlb@sDate{\the\Year-\TwoDigits{\the\Month}}

\def\dmlb@Date{\the\Year-\TwoDigits{\the\Month}-\TwoDigits{\the\Day}}

\def\fixme{ }% `\protect\ ' in fragile cmd like \write; `\let` doesn't expand; `\chardef` doesn't work; neither does `\ `

\newcommand{\TwoDigits}[1]{\ifnum#1<10 0#1\else#1\fi}% DOESN'T WORK AS ROBUST COMMAND

\newcommand{\changestrut}{% VERTICAL ALIGNMENT OF TEXT WITHIN TABLE ROWS- EQUAL HEIGHT TO TOP AND BOTTOM \HLINE FROM A CAPITAL; TO BE USED ON ALL GLYPHS WITHOUT DESCENDERS OF USED FONT; thanks to Marcel Krüger from tex.stackexchange.com
   \setbox\strutbox\hbox{%
      \setbox0\hbox{ABCDEFGHJIKLMNOPQRSTUVWXYZabcdefhiklmnorstuvwxz.?!;:-1234567890}% 
      \skip0\dimexpr\baselineskip-\ht0-\dp0\relax%
      \vrule height\glueexpr\ht0+.5\skip0\relax depth\glueexpr\dp0+.5\skip0\relax width0pt% edit to liking
   }%
}

\newcommand{\calcmaxrows}{% FLOOR DIV, BEST DIV
   \global\dmlb@maxrows \dimexpr\textheight*\p@/(\baselineskip+\arrayrulewidth)\relax\relax%
   \global\divide\dmlb@maxrows \p@\relax%
}

% APPLYING TEXT COLOR FROM CELL TO CELL WITHIN ROW
   \newcommand*{\@rowstyle}{}

   \newcommand*{\rowstyle}[1]{% sets the style of the next row
      \gdef\@rowstyle{#1}%
      \@rowstyle\ignorespaces%
   }

   \newcolumntype{=}{% resets the row style
      >{\gdef\@rowstyle{}}%
   }

   \newcolumntype{+}{% adds the current row style to the next column
      >{\@rowstyle}%
   }

\endinput

FIXME'S
   - !!! dmlbsetdate and autefileinput overhaul- make single file input possible? make other other format (not seq. chron. yy-mm) possible
   - pgfplots/extra xyz ticks={} doesn't accept an edef'd macro that expands correctly as an arg--- fucking why - doesn't accept anything...
   - if above gets fixed somefuckinghow- read off all values and surpress tick label manifestation
   - how to branch loading packages? i.e., not load pgf and pgfplots for non-graph use