%%
%% This is file `dtxdescribe.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% dtxdescribe.dtx  (with options: `package')
%% This is a generated file.
%% Copyright 2016 Brian Dunn
%% 
%% This work 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.


\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{dtxdescribe}
    [2016/12/08 v0.10 Describe additional object types in dtx source files.]





































\RequirePackage{etoolbox}[2011/01/03]%

\RequirePackage{xparse}

\RequirePackage{xifthen}

\RequirePackage{xcolor}
\definecolor{myurlcolor}{rgb}{0,0,.7}
\definecolor{mylinkcolor}{rgb}{.7,0,0}

\RequirePackage{caption}

\RequirePackage{newfloat}

\RequirePackage{fancyvrb}

\RequirePackage{xstring}




\RequirePackage{pict2e}
\setlength{\unitlength}{1pt}

\newcommand*{\warningsign}{%
\begin{picture}(10,9)
\put(4,1){\scriptsize!}
\put(0,0){\line(500,866){5}}
\put(10,0){\line(-500,866){5}}
\put(0,0){\line(1,0){10}}
\end{picture}
}


\renewcommand*{\PrintEnvName}[1]
{\strut{\scriptsize{}Env}\quad\MacroFont#1\ }

\newcommand*{\DTXD@printtype}[1]
{\raggedleft\strut{\scriptsize#1}\quad\MacroFont}

\renewcommand{\usage}[1]{\textit{\hyperpage{#1}}}

\let\DTXD@origwrindex\@wrindex

\newcommand*{\DTXD@margintag}[3]{%
\@ifundefined{@captype}{% not float?
\leavevmode%
\marginpar{%
\DTXD@printtype{%
#3% margintag
\ifblank{#1}{}{ \texttt{#1}}% class
}% Desc@Type
\texttt{#2}% name
}% marginpar
}{}% not float?
}

\newcommand*{\DTXD@index}[5]{%
\@bsphack%
\begingroup%
\DTXD@origwrindex{%
#2\actualchar{\protect\ttfamily#2} % name
(#4)% index tag
\ifblank{#1}{}{ [#1]}% class
\encapchar #5}%
\begingroup%
\DTXD@origwrindex{%
#4s:\levelchar% index tag
\ifblank{#1}{}{[#1]:\levelchar}% class
#2\actualchar{\protect\ttfamily#2}% name
\encapchar #5}%
\ifblank{#1}{}{% class given
\begingroup%
\DTXD@origwrindex{%
#1\actualchar[#1]:\levelchar% class
#2\actualchar{\protect\ttfamily#2} % name
(#4)% index tag
\encapchar #5}%
}% class given
\@esphack%
\ignorespaces%
}

\newcommand*{\DTXD@margintagindex}[5]{%
\DTXD@margintag{#1}{#2}{#3}%
\DTXD@index{#1}{#2}{#3}{#4}{#5}%
}
\begingroup\lccode`\|=`\\
\lowercase{\endgroup\def\removebs#1{\if#1|\else#1\fi}}
\newcommand*{\DTXD@macroname}[1]{\expandafter\removebs\string#1}

\newcommand*{\DTXD@verbatimcmd}[1]{%
\string\verb\quotechar*\verbatimchar\string#1\verbatimchar%
}

\newcommand*{\DTXD@cmdmargintagindex}[5]{%
\@bsphack%
\@ifundefined{@captype}{% not float?
\leavevmode%
\marginpar{%
\DTXD@printtype{%
#3% margin tag
\ifblank{#1}{}{ \texttt{#1}}% class
}% Desc@Type
\cmd{#2}% name
}% marginpar
}{}% not float?
\begingroup%
\DTXD@origwrindex{%
\ifblank{#1}{}{#1\actualchar[#1]:\levelchar}% class
\DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2} % name
(#4)% index tag
\encapchar #5}%
\begingroup%
\DTXD@origwrindex{%
#4s:\levelchar% index tag
\ifblank{#1}{}{[#1]:\levelchar}% class
\DTXD@verbatimcmd{#2}% name
\encapchar #5}%
\@esphack%
\ignorespaces%
}



\renewcommand*{\DescribeMacro}[2][]{%
\@bsphack%
\@ifundefined{@captype}{% not float?
\leavevmode%
\marginpar{%
\raggedleft%
\ifblank{#1}{}{{\scriptsize#1} }% class
\cmd{#2}% name
}% marginpar
}{}% not float?
\begingroup%
\DTXD@origwrindex{%
\DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}% name
\ifblank{#1}{}{\levelchar[#1]}% class
\encapchar usage}%
\ifthenelse{\isempty{#1}}%
{}% no class
{% class given
\begingroup%
\DTXD@origwrindex{%
#1\actualchar[#1]:\levelchar%
\DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}%
\encapchar usage}%
}% class given
\@esphack%
\ignorespaces%
}

\renewcommand*{\DescribeEnv}[2][]
{\DTXD@margintagindex{#1}{#2}{Env}{environment}{usage}}


\newcommand*{\DTXD@filename}{}

\newcommand*{\DTXD@filemarginparindex}[5]{%
\renewcommand{\DTXD@filename}{\detokenize{#2}}%
\StrSubstitute{\DTXD@filename}%
{\detokenize{_}}{\detokenize{\_}}[\DTXD@filename]%
\DTXD@margintag{}{#2}{#3}%
\DTXD@index{#1}{\DTXD@filename}{#3}{#4}{#5}%
\endgroup%
\ignorespaces%
}
\newcommand*{\DTXD@DescribeFile}[2][]{%
\DTXD@filemarginparindex{#1}{#2}{File}{file}{usage}%
}
\newcommand*{\DescribeFile}{%
\begingroup\catcode`\_=12 \DTXD@DescribeFile%
}
\newcommand*{\DTXD@DescribeProgram}[2][]{%
\DTXD@filemarginparindex{#1}{#2}{Prog}{program}{usage}%
}
\newcommand*{\DescribeProgram}{%
\begingroup\catcode`\_=12 \DTXD@DescribeProgram%
}

\newcommand*{\DTXD@DescribeCommand}[2][]{%
\DTXD@filemarginparindex{#1}{#2}{Cmd}{command}{usage}%
}
\newcommand*{\DescribeCommand}{%
\begingroup\catcode`\_=12 \DTXD@DescribeCommand%
}

\newcommand*{\DescribePackage}[2][]
{\DTXD@margintagindex{#1}{#2}{Pkg}{package}{usage}}
\newcommand*{\DescribeClass}[2][]
{\DTXD@margintagindex{#1}{#2}{Cls}{class}{usage}}
\newcommand*{\DescribeOption}[2][]
{\DTXD@margintagindex{#1}{#2}{Opt}{option}{usage}}
\newcommand*{\DescribeArgument}[2][]
{\DTXD@margintagindex{#1}{#2}{Arg}{argument}{usage}}
\newcommand*{\DescribeBoolean}[2][]
{\DTXD@margintagindex{#1}{#2}{Bool}{boolean}{usage}}
\newcommand*{\DescribeLength}[2][]
{\DTXD@cmdmargintagindex{#1}{#2}{Len}{length}{usage}}
\newcommand*{\DescribeCounter}[2][]
{\DTXD@margintagindex{#1}{#2}{Ctr}{counter}{usage}}
\newcommand*{\DescribeKey}[2][]
{\DTXD@margintagindex{#1}{#2}{Key}{key}{usage}}
\newcommand*{\DescribeObject}[2][]{%
\@ifundefined{@captype}{% not float?
\@bsphack%
\leavevmode\marginpar{\raggedleft{\scriptsize#1} \texttt{#2}}%
}{}% not float?
\ifthenelse{\isempty{#1}}
{\begingroup%
\DTXD@origwrindex{%
#2\actualchar{\protect\ttfamily#2}%
\encapchar usage%
}%
}%
{%
\begingroup%
\DTXD@origwrindex{%
#2\actualchar{\protect\ttfamily#2} [#1]%
\encapchar usage%
}%
\begingroup%
\DTXD@origwrindex{%
#1\actualchar[#1]:\levelchar#2\actualchar{\protect\ttfamily#2}%
\encapchar usage%
}%
}%
\@esphack%
}
\newcommand*{\DescribeOther}[2][]{%
\@ifundefined{@captype}{% not float?
\@bsphack%
\leavevmode\marginpar{\raggedleft{\scriptsize#1} #2}%
}{}% not float?
\ifthenelse{\isempty{#1}}
{%
\begingroup%
\DTXD@origwrindex{#2\encapchar usage}%
}%
{%
\begingroup%
\DTXD@origwrindex{#2 [#1]\encapchar usage}%
\begingroup%
\DTXD@origwrindex{#1\actualchar[#1]:\levelchar#2\encapchar usage}%
}%
\@esphack%
}


\newcommand{\margintag}[1]{%
\@ifundefined{@captype}{% not float?
\marginpar{\raggedleft\textcolor{blue!70!black}{#1}}%
\ignorespaces%
}{}% not float?
}

\newcommand{\watchout}[1][]{%
\@ifundefined{@captype}{% not float?
\marginpar{\hspace*{\fill}%
\textcolor{red!50!black}{\warningsign\normalsize\quad#1}}%
\ignorespaces%
}{}% not float?
}


\definecolor{DTXD@examplerulecolor}{rgb}{.9,.9,.9}


\NewDocumentEnvironment{dtxexample}{s +O{} m}
{% start dtxexample
\VerbatimOut[gobble=2,tabsize=4]{ex_cut.tex}%
}% start dtxexample
{% end dtxexample
\endVerbatimOut
\par
\addvspace{\bigskipamount}
\IfBooleanTF{#1}{\vspace{\bigskipamount}}{\minipage{\linewidth}}%
\captionsetup{type=dtxdexample}%
\hrule\medskip
\caption{#3}
\textcolor{DTXD@examplerulecolor}{\smallskip\hrule}
\smallskip
{\scriptsize\itshape Code:}
\VerbatimInput[tabsize=4]{ex_cut.tex}
\unskip
\textcolor{DTXD@examplerulecolor}{\hrule}
\smallskip
{\scriptsize\itshape Result:}

\ifstrempty{#2}
{}
{{\itshape\small #2}}
\IfBooleanTF{#1}{}{\endminipage}%
} % end dtxexample

\AfterEndEnvironment{dtxexample}
{%
\par\unskip\input{ex_cut.tex}%
\medskip\hrule%
}

\DeclareFloatingEnvironment[
fileext=lox,
listname={List of Examples},
name=Example,
placement=hbp
]{dtxdexample}

\captionsetup*[dtxdexample]{
format=hang,
font=bf,
justification=raggedright,
singlelinecheck=false,
skip=0pt,
position=top,
}

\AtBeginDocument{
\@ifpackageloaded{cleveref}{\crefname{dtxdexample}{example}{examples}}{}
}


\endinput
%%
%% End of file `dtxdescribe.sty'.
