%% apuntsgenerics.ins
%% Copyright 2019 ApuntsFME
%% Copyright 2021 avm99963
%
% 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.
%
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is avm99963.
%
% This work consists of the files apuntsgenerics.dtx and
% apuntsgenerics.ins and the derived file apuntsgenerics.sty.
\input docstrip.tex
\keepsilent
\usedir{/tex/latex/apuntsgenerics}

\preamble
This is a generated file.

Copyright 2019 ApuntsFME

Copyright 2021 avm99963

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.

This work has the LPPL maintenance status `maintained'.

The Current Maintainer of this work is avm99963.

This work consists of the files apuntsgenerics.dtx and
apuntsgenerics.ins and the derived file apuntsgenerics.sty.
\endpreamble

\generate{\file{apuntsgenerics.sty}{\from{apuntsgenerics.dtx}{package}}}
\generate{\file{notes.cls}{\from{apuntsgenerics.dtx}{class}}}

\obeyspaces
\Msg{*****************************************************}
\Msg{*                                                   *}
\Msg{* To finish the installation you have to move the   *}
\Msg{* following files into a directory searched by TeX: *}
\Msg{*                                                   *}
\Msg{*     apuntsgenerics.sty                            *}
\Msg{*     notes.cls                                     *}
\Msg{*                                                   *}
\Msg{* To produce the documentation run the file         *}
\Msg{* apuntsgenerics.dtx through LaTeX.                 *}
\Msg{*                                                   *}
\Msg{* Happy TeXing!                                     *}
\Msg{*                                                   *}
\Msg{*****************************************************}

\endbatchfile
