From 265f9ac6d3fc91d897651772036f22f7f8f094de Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 20 Apr 2020 21:06:59 +0000 Subject: diabetes-logbook (20apr20) git-svn-id: svn://tug.org/texlive/trunk@54810 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/diabetes-logbook/dmlb.sty | 671 +++++++++++++++++++++ 1 file changed, 671 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/diabetes-logbook/dmlb.sty (limited to 'Master/texmf-dist/tex/latex/diabetes-logbook/dmlb.sty') diff --git a/Master/texmf-dist/tex/latex/diabetes-logbook/dmlb.sty b/Master/texmf-dist/tex/latex/diabetes-logbook/dmlb.sty new file mode 100644 index 00000000000..c4f8f331f87 --- /dev/null +++ b/Master/texmf-dist/tex/latex/diabetes-logbook/dmlb.sty @@ -0,0 +1,671 @@ +\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 + -- cgit v1.2.3