\ProvidesFile{mdoccheat.tex}[2011/01/26 cheat sheet for `makedoc.sty']
% \listfiles
\documentclass{article}
\input{makedoc.cfg} %% with pdf stuff and 'niceverb'
\makeatletter
  \def\today{\the\year/\two@digits\month/\two@digits\day}
%   \let\sofar@arraycr\@arraycr
  \newenvironment*{displines}
                  {\def\ccr{\\&}% 
                   \csname eqnarray*\endcsname&}
                  {\csname endeqnarray*\endcsname}
  \def\@listi{\leftmargin\leftmargini
              \parsep 3\p@ \@plus2\p@ \@minus\p@
              \topsep 6\p@ \@plus2\p@ \@minus4\p@
              \itemsep3\p@ \@plus2\p@ \@minus\p@}
  \let\@listI\@listi
\makeatother
\newcommand*{\defto}[2]{$#1\to_{\mathit{default}}#2$}
\usepackage[margin=3cm]{geometry}                     %% 2012/03/18
% \sfcode`/=1001 %% TODO makedoc.cfg!? 2010/03/15
\sloppy
\begin{document}
%  \enlargethispage{1\baselineskip} %% 2010/03/29 %% rm. 2012/03/18
%   \null\kern-1\baselineskip
\begin{center}
 \bfseries \Large
  'makedoc' \& 'fifinddo'\footnote{\url{http://ctan.org/pkg/nicetext}} 
  File Handling Commands
 \\[.4ex] \mdseries \large
  Uwe L\"uck, \today
 \\[10pt] \normalsize
  |\usepackage{makedoc}|, see 'makedoc.pdf' for details
\end{center}
\thispagestyle{empty}
  \par\kern5pt
\noindent \textbf{Most simple:} |\MakeInputJobDoc|
in `<jobname>.tex' \emph{after} &\begin{document}
\begin{displines}
  `\MakeInputJobDoc{<header-lines>}{<main-parser>}'
    \ccr
  `\MakeInputJobDoc[<in-ext>]{<header-lines>}{<main-parser>}'
    \ccr
  `\MakeInputJobDoc[<out-ext>][<in-ext>]{<header-lines>}{<main-parser>}'
\end{displines} 
documents `\mdJobName.<in-ext>' via `\mdJobName.<out-ext>', 
\defto{<in-ext>}{`sty'}, \defto{<out-ext>}{`doc'}, \defto{&\mdJobName}{<jobname>} 
  \par\kern-5pt
\begin{center} %% Parsers:
\begin{tabular}{@{}l@{\hskip4pt }l@{\hskip4pt }l@{}}
<main-parser>\endcell detects\endcell involves\\\hline
`\SectionLevelThreeParseInput'\endcell
    `==== <title> ===='\endcell`\mdSectionLevelThree'\\
`\SectionLevelTwoParseInput'\endcell
    `=== <title> ==='\endcell`\mdSectionLevelTwo'\\
`\SectionLevelOneParseInput'\endcell
    `== <title> =='\endcell`\mdSectionLevelOne'\\
%% 2010/03/29:
`\ProcessInputWith{PPScomment}'\endcell 
    `%% <comment>'\endcell `%%<empty>', 'mdoccorr.cfg'\\
`\ProcessInputWith{PScomment}'\endcell 
    `% <comment>'\endcell `%<empty>', 'mdoccorr.cfg'
\end{tabular}
\end{center}

%   \par\kern-2pt
\noindent \textbf{Preprocessing before} &\begin{document}: 
|\MakeJobDoc| (same parameters)

  \vskip10pt \raggedright
\noindent \textbf{More fine-grained:}\\
\textbf{a.~Choices for next preprocessing run:}
\begin{description}
\cmdboxitem|\ResultFile{<output>}| opens <output>
% \cmdboxitem|\LaTeXresultFile{<output>}| see below
\cmdboxitem|\Headerlines{<header-lines>}| 
    `\MakeJobDoc''s first mandatory argument 
\cmdboxitem|\MainDocParser{<main-parser>}| 
    `\MakeJobDoc''s second mandatory \rlap{argument}
\cmdboxitem|\ProcessLineMessage{<message>}| 
    \defto{<message>}{&\message{.}}
\cmdboxitem|\input{mdoccorr.cfg}| chooses `\MakeDocCorrectHook'
\end{description}
\textbf{b.~Manual insertions to <output>:}
\begin{description}
\cmdboxitem|\WriteResult{<balanced>}| writes <balanced> to <output> 
\cmdboxitem|\WriteProvides| writes `\ProvidesFile' line from 'fifindo'
\cmdboxitem|\LaTeXresultFile{<output>}| issues
    `\ResultFile{<output>}', writes `\ProvidesFile' line from 'makedoc'
\end{description}
\textbf{c.~Processing <input>, closing <output>:}
\begin{description}
\cmdboxitem|\ProcessFileWith{<input>}{<loop-body>}| 
    reads each <input> line to macro |\fdInputLine|, 
    applies <loop-body>
\cmdboxitem|\MakeDoc{<input>}|
    inputs `mdoccorr.cfg'
    copies <header-lines> from <input> to <output>, 
    applies <main-parser>
\cmdboxitem|\CloseResultFile| closes <output>
\cmdboxitem|\MakeCloseDoc{<input>}| issues 
    `\MakeDoc{<input>}\CloseResultFile'
\cmdboxitem|\MakeSingleDoc[<out-ext>]{<in-output>.<in-ext>}| 
    issues `\LaTeXresultFile{<in-output>.<out-ext>}'
    and `\MakeDocCloseDoc{<in-output>.<in-ext>}',
    \defto{<out-ext>}{`doc'},
\end{description}
%% 2012/03/18:
\textbf{d.~Avoid &\input{mdoccorr.cfg} by} 
|\MakeInputJobDoc*|, |\MakeJobDoc*|, |\MakeDoc*|, 
|\MakeCloseDoc*|, or |\MakeSingleDoc*|

\end{document}

