summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/concepts/dry.sty
blob: 2ff5646046a0a89cc4923695f010c284891afd8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%%
%                                                                              %
%  Copyright (c) 2012 - Michiel Helvensteijn   (www.mhelvens.net)              %
%                                                                              %
%  http://latex-concepts.googlecode.com                                        %
%                                                                              %
%  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 `author-maintained'.              %
%                                                                              %
%  The Current Maintainer of this work is Michiel Helvensteijn.                %
%                                                                              %
%  This work consists of the file dry.sty.                                     %
%                                                                              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%%

% I will 'officially' release this package at some point in the future. For
% now I'm just using it to document the concepts package. Still, it's
% released under LPPL, so use it as you will.
%
% -- Michiel Helvensteijn

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{dry}
  [2012/12/16 convenience macros for reusing LaTeX code]

\RequirePackage{filecontents}
\RequirePackage{xparse}
\RequirePackage{etoolbox}
\RequirePackage{with}

\newcommand\minput[1]{%
  \input{#1}%
  \ifhmode\ifnum\lastnodetype=11%
    \unskip%
  \fi\fi%
}

\NewDocumentCommand{\NewDRYer}{m m +m}{%
  \WithUniqueCsname[#1]{%
    \csgdef{dry@filebase@##1}{##1}%
    \csgdef{dry@filename@##1}{\csuse{dry@filebase@##1}.tmp}%
    %
    % WARNING: Custom argument specs #2, but cannot end with an optional argument!
    \NewDocumentEnvironment{#1}{#2}{%
      \begingroup%
      \@tempswafalse\filec@ntents{\csuse{dry@filename@##1}}%
    }{%
      \endfilecontents%
      \endgroup%
    }%
    %
    \AfterEndEnvironment{#1}{%
      \def\DRYFilename{\csuse{dry@filename@##1}}%
      \def\DRYContent{\minput{\csuse{dry@filename@##1}}}%
      #3%
      \let\DRYFilename\relax%
      \let\DRYContent\relax%
    }%
  }%
}