diff --git a/meta/files/common-licenses/LPPL-1.0 b/meta/files/common-licenses/LPPL-1.0
new file mode 100644
index 0000000..f9ef35d
--- /dev/null
+++ b/meta/files/common-licenses/LPPL-1.0
@@ -0,0 +1,213 @@
+
+LaTeX Project Public License
+============================
+ 
+LPPL Version 1.0  1999-03-01
+
+Copyright 1999 LaTeX3 Project
+    Everyone is permitted to copy and distribute verbatim copies
+    of this license document, but modification is not allowed.
+
+
+Preamble
+========
+
+The LaTeX Project Public License (LPPL) is the license under which the
+base LaTeX distribution is distributed. As described below you may use
+this licence for any software that you wish to distribute. 
+
+It may be particularly suitable if your software is TeX related (such
+as a LaTeX package file) but it may be used for any software, even if
+it is unrelated to TeX.
+
+To use this license, the files of your distribution should have an
+explicit copyright notice giving your name and the year, together
+with a reference to this license.
+
+A typical example would be
+
+   %% pig.sty
+   %% Copyright 2001 M. Y. Name
+
+   % This program can redistributed and/or modified under the terms
+   % of the LaTeX Project Public License Distributed from CTAN
+   % archives in directory macros/latex/base/lppl.txt; either
+   % version 1 of the License, or (at your option) any later version.
+
+Given such a notice in the file, the conditions of this document would
+apply, with:
+
+`The Program` referring to the software `pig.sty`  and 
+`The Copyright Holder` referring to the person `M. Y. Name`.
+
+To see a real example, see the file legal.txt which carries the
+copyright notice for the base latex distribution.
+
+This license gives terms under which files of The Program may be
+distributed and modified. Individual files may have specific further
+constraints on modification, but no file should have restrictions on
+distribution other than those specified below. 
+This is to ensure that a distributor wishing to distribute a complete
+unmodified copy of The Program need only check the conditions in this
+file, and does not need to check every file in The Program for extra
+restrictions. If you do need to modify the distribution terms of some
+files, do not refer to this license, instead distribute The Program
+under a different license. You may use the parts of the text of LPPL as
+a model for your own license, but your license should not directly refer
+to the LPPL or otherwise give the impression that The Program is
+distributed under the LPPL. 
+
+
+
+The LaTeX Project Public License
+================================
+Terms And Conditions For Copying, Distribution And Modification
+===============================================================
+
+
+WARRANTY
+========
+
+There is no warranty for The Program, to the extent permitted by
+applicable law.  Except when otherwise stated in writing, The
+Copyright Holder provides The Program `as is` without warranty of any
+kind, either expressed or implied, including, but not limited to, the
+implied warranties of merchantability and fitness for a particular
+purpose.  The entire risk as to the quality and performance of the
+program is with you.  Should The Program prove defective, you assume
+the cost of all necessary servicing, repair or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any of the individual authors named in
+the source for The Program, be liable to you for damages, including
+any general, special, incidental or consequential damages arising out
+of any use of The Program or out of inability to use The Program
+(including but not limited to loss of data or data being rendered
+inaccurate or losses sustained by you or by third parties as a result
+of a failure of The Program to operate with any other programs), even
+if such holder or other party has been advised of the possibility of
+such damages.
+
+
+DISTRIBUTION
+============
+
+Redistribution of unchanged files is allowed provided that all files
+that make up the distribution of The Program are distributed.
+In particular this means that The Program has to be distributed
+including its documentation if documentation was part of the original
+distribution.
+
+The distribution of The Program will contain a prominent file
+listing all the files covered by this license.
+
+If you receive only some of these files from someone, complain!
+
+The distribution of changed versions of certain files included in the
+The Program, and the reuse of code from The Program, are allowed
+under the following restrictions:
+
+ * It is allowed only if the legal notice in the file does not
+   expressly forbid it.
+   See note below, under "Conditions on individual files".
+ 
+ * You rename the file before you make any changes to it, unless the
+   file explicitly says that renaming is not required.  Any such changed
+   files must be distributed under a license that forbids distribution
+   of those files, and any files derived from them, under the names used
+   by the original files in the distribution of The Program.
+
+ * You change any `identification string` in The Program to clearly 
+   indicate that the file is not part of the standard system.
+
+ * If The Program includes an `error report address` so that errors
+   may be reported to The Copyright Holder, or other specified
+   addresses, this address must be changed in any modified versions of
+   The Program, so that reports for files not maintained by the
+   original program maintainers are directed to the maintainers of the
+   changed files. 
+
+ * You acknowledge the source and authorship of the original version
+   in the modified file.
+
+ * You also distribute the unmodified version of the file or
+   alternatively provide sufficient information so that the
+   user of your modified file can be reasonably expected to be
+   able to obtain an original, unmodified copy of The Program.
+   For example, you may specify a URL to a site that you expect
+   will freely provide the user with a copy of The Program (either
+   the version on which your modification is based, or perhaps a
+   later version).
+
+ * If The Program is intended to be used with, or is based on, LaTeX,
+   then files with the following file extensions which have special
+   meaning in LaTeX Software, have special modification rules under the
+   license:
+ 
+    - Files with extension `.ins` (installation files): these files may
+      not be modified at all because they contain the legal notices
+      that are placed in the generated files.
+ 
+    - Files with extension `.fd` (LaTeX font definitions files): these
+      files are allowed to be modified without changing the name, but
+      only to enable use of all available fonts and to prevent attempts
+      to access unavailable fonts. However, modified files are not
+      allowed to be distributed in place of original files.
+ 
+    - Files with extension `.cfg` (configuration files): these files
+      can be created or modified to enable easy configuration of the
+      system.  The documentation in cfgguide.tex in the base LaTeX
+      distribution describes when it makes sense to modify or generate
+      such files.
+ 
+
+The above restrictions are not intended to prohibit, and hence do
+not apply to, the updating, by any method, of a file so that it
+becomes identical to the latest version of that file in The Program.
+
+========================================================================
+
+NOTES
+=====
+
+We believe that these requirements give you the freedom you to make
+modifications that conform with whatever technical specifications you
+wish, whilst maintaining the availability, integrity and reliability of
+The Program.  If you do not see how to achieve your goal whilst
+adhering to these requirements then read the document cfgguide.tex
+in the base LaTeX distribution for suggestions. 
+
+Because of the portability and exchangeability aspects of systems
+like LaTeX, The LaTeX3 Project deprecates the distribution of
+non-standard versions of components of LaTeX or of generally available
+contributed code for them but such distributions are permitted under the
+above restrictions.
+
+The document modguide.tex in the base LaTeX distribution details
+the reasons for the legal requirements detailed above.
+Even if The Program is unrelated to LaTeX, the argument in
+modguide.tex may still apply, and should be read before
+a modified version of The Program is distributed.
+
+
+Conditions on individual files
+==============================
+
+The individual files may bear additional conditions which supersede
+the general conditions on distribution and modification contained in
+this file. If there are any such files, the distribution of The
+Program will contain a prominent file that lists all the exceptional
+files.
+
+Typical examples of files with more restrictive modification
+conditions would be files that contain the text of copyright notices.
+
+ * The conditions on individual files differ only in the
+   extent of *modification* that is allowed.
+
+ * The conditions on *distribution* are the same for all the files.
+   Thus a (re)distributor of a complete, unchanged copy of The Program
+   need meet only the conditions in this file; it is not necessary to
+   check the header of every file in the distribution to check that a
+   distribution meets these requirements.
+
