summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/getoptk
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/plain/contrib/getoptk
Initial commit
Diffstat (limited to 'macros/plain/contrib/getoptk')
-rw-r--r--macros/plain/contrib/getoptk/COPYING514
-rw-r--r--macros/plain/contrib/getoptk/COPYING-FR519
-rw-r--r--macros/plain/contrib/getoptk/README10
-rw-r--r--macros/plain/contrib/getoptk/getoptk.tex285
-rw-r--r--macros/plain/contrib/getoptk/guide.pdfbin0 -> 280771 bytes
-rw-r--r--macros/plain/contrib/getoptk/guide.tex192
6 files changed, 1520 insertions, 0 deletions
diff --git a/macros/plain/contrib/getoptk/COPYING b/macros/plain/contrib/getoptk/COPYING
new file mode 100644
index 0000000000..fe87c257d0
--- /dev/null
+++ b/macros/plain/contrib/getoptk/COPYING
@@ -0,0 +1,514 @@
+CeCILL-B FREE SOFTWARE LICENSE AGREEMENT
+
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL-B (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+This Agreement is an open source software license intended to give users
+significant freedom to modify and redistribute the software licensed
+hereunder.
+
+The exercising of this freedom is conditional upon a strong obligation
+of giving credits for everybody that distributes a software
+incorporating a software ruled by the current license so as all
+contributions to be properly identified and acknowledged.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows effective access to the full Source
+Code of the Software at a minimum during the entire period of its
+distribution of the Software, it being understood that the additional
+cost of acquiring the Source Code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+If the Licensee makes any Contribution to the Software, the resulting
+Modified Software may be distributed under a license agreement other
+than this Agreement subject to compliance with the provisions of Article
+5.3.4.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 CREDITS
+
+Any Licensee who may distribute a Modified Software hereby expressly
+agrees to:
+
+ 1. indicate in the related documentation that it is based on the
+ Software licensed hereunder, and reproduce the intellectual
+ property notice for the Software,
+
+ 2. ensure that written indications of the Software intended use,
+ intellectual property notice and license hereunder are included in
+ easily accessible format from the Modified Software interface,
+
+ 3. mention, on a freely accessible website describing the Modified
+ Software, at least throughout the distribution term thereof, that
+ it is based on the Software licensed hereunder, and reproduce the
+ Software intellectual property notice,
+
+ 4. where it is distributed to a third party that may distribute a
+ Modified Software without having to make its source code
+ available, make its best efforts to ensure that said third party
+ agrees to comply with the obligations set forth in this Article .
+
+If the Software, whether or not modified, is distributed with an
+External Module designed for use in connection with the Software, the
+Licensee shall submit said External Module to the foregoing obligations.
+
+
+ 5.3.5 COMPATIBILITY WITH THE CeCILL AND CeCILL-C LICENSES
+
+Where a Modified Software contains a Contribution subject to the CeCILL
+license, the provisions set forth in Article 5.3.4 shall be optional.
+
+A Modified Software may be distributed under the CeCILL-C license. In
+such a case the provisions set forth in Article 5.3.4 shall be optional.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-à-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 1.0 dated 2006-09-05.
diff --git a/macros/plain/contrib/getoptk/COPYING-FR b/macros/plain/contrib/getoptk/COPYING-FR
new file mode 100644
index 0000000000..355f45e388
--- /dev/null
+++ b/macros/plain/contrib/getoptk/COPYING-FR
@@ -0,0 +1,519 @@
+
+CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+
+
+ Avertissement
+
+Ce contrat est une licence de logiciel libre issue d'une concertation
+entre ses auteurs afin que le respect de deux grands principes préside à
+sa rédaction:
+
+ * d'une part, le respect des principes de diffusion des logiciels
+ libres: accès au code source, droits étendus conférés aux
+ utilisateurs,
+ * d'autre part, la désignation d'un droit applicable, le droit
+ français, auquel elle est conforme, tant au regard du droit de la
+ responsabilité civile que du droit de la propriété intellectuelle
+ et de la protection qu'il offre aux auteurs et titulaires des
+ droits patrimoniaux sur un logiciel.
+
+Les auteurs de la licence CeCILL-B (pour Ce[a] C[nrs] I[nria] L[ogiciel]
+L[ibre]) sont:
+
+Commissariat à l'Energie Atomique - CEA, établissement public de
+recherche à caractère scientifique, technique et industriel, dont le
+siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
+
+Centre National de la Recherche Scientifique - CNRS, établissement
+public à caractère scientifique et technologique, dont le siège est
+situé 3 rue Michel-Ange, 75794 Paris cedex 16.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, établissement public à caractère scientifique et technologique,
+dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
+Le Chesnay cedex.
+
+
+ Préambule
+
+Ce contrat est une licence de logiciel libre dont l'objectif est de
+conférer aux utilisateurs une très large liberté de modification et de
+redistribution du logiciel régi par cette licence.
+
+L'exercice de cette liberté est assorti d'une obligation forte de
+citation à la charge de ceux qui distribueraient un logiciel incorporant
+un logiciel régi par la présente licence afin d'assurer que les
+contributions de tous soient correctement identifiées et reconnues.
+
+L'accessibilité au code source et les droits de copie, de modification
+et de redistribution qui découlent de ce contrat ont pour contrepartie
+de n'offrir aux utilisateurs qu'une garantie limitée et de ne faire
+peser sur l'auteur du logiciel, le titulaire des droits patrimoniaux et
+les concédants successifs qu'une responsabilité restreinte.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs ou des
+professionnels avertis possédant des connaissances informatiques
+approfondies. Les utilisateurs sont donc invités à charger et tester
+l'adéquation du logiciel à leurs besoins dans des conditions permettant
+d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
+généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
+sécurité. Ce contrat peut être reproduit et diffusé librement, sous
+réserve de le conserver en l'état, sans ajout ni suppression de clauses.
+
+Ce contrat est susceptible de s'appliquer à tout logiciel dont le
+titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
+dispositions qu'il contient.
+
+
+ Article 1 - DEFINITIONS
+
+Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
+lettre capitale, auront la signification suivante:
+
+Contrat: désigne le présent contrat de licence, ses éventuelles versions
+postérieures et annexes.
+
+Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
+Source et le cas échéant sa documentation, dans leur état au moment de
+l'acceptation du Contrat par le Licencié.
+
+Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
+éventuellement de Code Objet et le cas échéant sa documentation, dans
+leur état au moment de leur première diffusion sous les termes du Contrat.
+
+Logiciel Modifié: désigne le Logiciel modifié par au moins une
+Contribution.
+
+Code Source: désigne l'ensemble des instructions et des lignes de
+programme du Logiciel et auquel l'accès est nécessaire en vue de
+modifier le Logiciel.
+
+Code Objet: désigne les fichiers binaires issus de la compilation du
+Code Source.
+
+Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
+sur le Logiciel Initial.
+
+Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
+Contrat.
+
+Contributeur: désigne le Licencié auteur d'au moins une Contribution.
+
+Concédant: désigne le Titulaire ou toute personne physique ou morale
+distribuant le Logiciel sous le Contrat.
+
+Contribution: désigne l'ensemble des modifications, corrections,
+traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
+le Logiciel par tout Contributeur, ainsi que tout Module Interne.
+
+Module: désigne un ensemble de fichiers sources y compris leur
+documentation qui permet de réaliser des fonctionnalités ou services
+supplémentaires à ceux fournis par le Logiciel.
+
+Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
+Module et le Logiciel s'exécutent dans des espaces d'adressage
+différents, l'un appelant l'autre au moment de leur exécution.
+
+Module Interne: désigne tout Module lié au Logiciel de telle sorte
+qu'ils s'exécutent dans le même espace d'adressage.
+
+Parties: désigne collectivement le Licencié et le Concédant.
+
+Ces termes s'entendent au singulier comme au pluriel.
+
+
+ Article 2 - OBJET
+
+Le Contrat a pour objet la concession par le Concédant au Licencié d'une
+licence non exclusive, cessible et mondiale du Logiciel telle que
+définie ci-après à l'article 5 pour toute la durée de protection des droits
+portant sur ce Logiciel.
+
+
+ Article 3 - ACCEPTATION
+
+3.1 L'acceptation par le Licencié des termes du Contrat est réputée
+acquise du fait du premier des faits suivants:
+
+ * (i) le chargement du Logiciel par tout moyen notamment par
+ téléchargement à partir d'un serveur distant ou par chargement à
+ partir d'un support physique;
+ * (ii) le premier exercice par le Licencié de l'un quelconque des
+ droits concédés par le Contrat.
+
+3.2 Un exemplaire du Contrat, contenant notamment un avertissement
+relatif aux spécificités du Logiciel, à la restriction de garantie et à
+la limitation à un usage par des utilisateurs expérimentés a été mis à
+disposition du Licencié préalablement à son acceptation telle que
+définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
+connaissance.
+
+
+ Article 4 - ENTREE EN VIGUEUR ET DUREE
+
+
+ 4.1 ENTREE EN VIGUEUR
+
+Le Contrat entre en vigueur à la date de son acceptation par le Licencié
+telle que définie en 3.1.
+
+
+ 4.2 DUREE
+
+Le Contrat produira ses effets pendant toute la durée légale de
+protection des droits patrimoniaux portant sur le Logiciel.
+
+
+ Article 5 - ETENDUE DES DROITS CONCEDES
+
+Le Concédant concède au Licencié, qui accepte, les droits suivants sur
+le Logiciel pour toutes destinations et pour la durée du Contrat dans
+les conditions ci-après détaillées.
+
+Par ailleurs, si le Concédant détient ou venait à détenir un ou
+plusieurs brevets d'invention protégeant tout ou partie des
+fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
+opposer les éventuels droits conférés par ces brevets aux Licenciés
+successifs qui utiliseraient, exploiteraient ou modifieraient le
+Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
+faire reprendre les obligations du présent alinéa aux cessionnaires.
+
+
+ 5.1 DROIT D'UTILISATION
+
+Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
+aux domaines d'application, étant ci-après précisé que cela comporte:
+
+ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
+ partie par tout moyen et sous toute forme.
+
+ 2. le chargement, l'affichage, l'exécution, ou le stockage du
+ Logiciel sur tout support.
+
+ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
+ fonctionnement afin de déterminer les idées et principes qui sont
+ à la base de n'importe quel élément de ce Logiciel; et ceci,
+ lorsque le Licencié effectue toute opération de chargement,
+ d'affichage, d'exécution, de transmission ou de stockage du
+ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
+
+
+ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
+
+Le droit d'apporter des Contributions comporte le droit de traduire,
+d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
+et le droit de reproduire le logiciel en résultant.
+
+Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
+réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
+cette Contribution et la date de création de celle-ci.
+
+
+ 5.3 DROIT DE DISTRIBUTION
+
+Le droit de distribution comporte notamment le droit de diffuser, de
+transmettre et de communiquer le Logiciel au public sur tout support et
+par tout moyen ainsi que le droit de mettre sur le marché à titre
+onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
+
+Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
+non, à des tiers dans les conditions ci-après détaillées.
+
+
+ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
+
+Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
+sous forme de Code Source ou de Code Objet, à condition que cette
+distribution respecte les dispositions du Contrat dans leur totalité et
+soit accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
+le Licencié permette un accès effectif au Code Source complet du
+Logiciel pendant au moins toute la durée de sa distribution du Logiciel,
+étant entendu que le coût additionnel d'acquisition du Code Source ne
+devra pas excéder le simple coût de transfert des données.
+
+
+ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
+
+Lorsque le Licencié apporte une Contribution au Logiciel, le Logiciel
+Modifié peut être distribué sous un contrat de licence autre que le
+présent Contrat sous réserve du respect des dispositions de l'article
+5.3.4.
+
+
+ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
+
+Lorsque le Licencié a développé un Module Externe les conditions du
+Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
+sous un contrat de licence différent.
+
+
+ 5.3.4 CITATIONS
+
+Le Licencié qui distribue un Logiciel Modifié s'engage expressément:
+
+ 1. à indiquer dans sa documentation qu'il a été réalisé à partir du
+ Logiciel régi par le Contrat, en reproduisant les mentions de
+ propriété intellectuelle du Logiciel,
+
+ 2. à faire en sorte que l'utilisation du Logiciel, ses mentions de
+ propriété intellectuelle et le fait qu'il est régi par le Contrat
+ soient indiqués dans un texte facilement accessible depuis
+ l'interface du Logiciel Modifié,
+
+ 3. à mentionner, sur un site Web librement accessible décrivant le
+ Logiciel Modifié, et pendant au moins toute la durée de sa
+ distribution, qu'il a été réalisé à partir du Logiciel régi par le
+ Contrat, en reproduisant les mentions de propriété intellectuelle
+ du Logiciel,
+
+ 4. lorsqu'il le distribue à un tiers susceptible de distribuer
+ lui-même un Logiciel Modifié, sans avoir à en distribuer le code
+ source, à faire ses meilleurs efforts pour que les obligations du
+ présent article 5.3.4 soient reprises par le dit tiers.
+
+Lorsque le Logiciel modifié ou non est distribué avec un Module Externe
+qui a été conçu pour l'utiliser, le Licencié doit soumettre le dit
+Module Externe aux obligations précédentes.
+
+
+ 5.3.5 COMPATIBILITE AVEC LES LICENCES CeCILL et CeCILL-C
+
+Lorsqu'un Logiciel Modifié contient une Contribution soumise au contrat
+de licence CeCILL, les stipulations prévues à l'article 5.3.4 sont
+facultatives.
+
+Un Logiciel Modifié peut être distribué sous le contrat de licence
+CeCILL-C. Les stipulations prévues à l'article 5.3.4 sont alors
+facultatives.
+
+
+ Article 6 - PROPRIETE INTELLECTUELLE
+
+
+ 6.1 SUR LE LOGICIEL INITIAL
+
+Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
+Initial. Toute utilisation du Logiciel Initial est soumise au respect
+des conditions dans lesquelles le Titulaire a choisi de diffuser son
+oeuvre et nul autre n'a la faculté de modifier les conditions de
+diffusion de ce Logiciel Initial.
+
+Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
+par le Contrat et ce, pour la durée visée à l'article 4.2.
+
+
+ 6.2 SUR LES CONTRIBUTIONS
+
+Le Licencié qui a développé une Contribution est titulaire sur celle-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable.
+
+
+ 6.3 SUR LES MODULES EXTERNES
+
+Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable et reste libre du choix du contrat régissant
+sa diffusion.
+
+
+ 6.4 DISPOSITIONS COMMUNES
+
+Le Licencié s'engage expressément:
+
+ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
+ mentions de propriété intellectuelle apposées sur le Logiciel;
+
+ 2. à reproduire à l'identique lesdites mentions de propriété
+ intellectuelle sur les copies du Logiciel modifié ou non.
+
+Le Licencié s'engage à ne pas porter atteinte, directement ou
+indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
+l'égard de son personnel toutes les mesures nécessaires pour assurer le
+respect des dits droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs.
+
+
+ Article 7 - SERVICES ASSOCIES
+
+7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
+prestations d'assistance technique ou de maintenance du Logiciel.
+
+Cependant le Concédant reste libre de proposer ce type de services. Les
+termes et conditions d'une telle assistance technique et/ou d'une telle
+maintenance seront alors déterminés dans un acte séparé. Ces actes de
+maintenance et/ou assistance technique n'engageront que la seule
+responsabilité du Concédant qui les propose.
+
+7.2 De même, tout Concédant est libre de proposer, sous sa seule
+responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
+lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
+dans les conditions qu'il souhaite. Cette garantie et les modalités
+financières de son application feront l'objet d'un acte séparé entre le
+Concédant et le Licencié.
+
+
+ Article 8 - RESPONSABILITE
+
+8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
+faculté, sous réserve de prouver la faute du Concédant concerné, de
+solliciter la réparation du préjudice direct qu'il subirait du fait du
+Logiciel et dont il apportera la preuve.
+
+8.2 La responsabilité du Concédant est limitée aux engagements pris en
+application du Contrat et ne saurait être engagée en raison notamment:
+(i) des dommages dus à l'inexécution, totale ou partielle, de ses
+obligations par le Licencié, (ii) des dommages directs ou indirects
+découlant de l'utilisation ou des performances du Logiciel subis par le
+Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
+particulier, les Parties conviennent expressément que tout préjudice
+financier ou commercial (par exemple perte de données, perte de
+bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
+manque à gagner, trouble commercial quelconque) ou toute action dirigée
+contre le Licencié par un tiers, constitue un dommage indirect et
+n'ouvre pas droit à réparation par le Concédant.
+
+
+ Article 9 - GARANTIE
+
+9.1 Le Licencié reconnaît que l'état actuel des connaissances
+scientifiques et techniques au moment de la mise en circulation du
+Logiciel ne permet pas d'en tester et d'en vérifier toutes les
+utilisations ni de détecter l'existence d'éventuels défauts. L'attention
+du Licencié a été attirée sur ce point sur les risques associés au
+chargement, à l'utilisation, la modification et/ou au développement et à
+la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
+
+Il relève de la responsabilité du Licencié de contrôler, par tous
+moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
+de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
+
+9.2 Le Concédant déclare de bonne foi être en droit de concéder
+l'ensemble des droits attachés au Logiciel (comprenant notamment les
+droits visés à l'article 5).
+
+9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
+Concédant sans autre garantie, expresse ou tacite, que celle prévue à
+l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
+son caractère sécurisé, innovant ou pertinent.
+
+En particulier, le Concédant ne garantit pas que le Logiciel est exempt
+d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
+avec l'équipement du Licencié et sa configuration logicielle ni qu'il
+remplira les besoins du Licencié.
+
+9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
+Logiciel ne porte pas atteinte à un quelconque droit de propriété
+intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
+autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
+profit du Licencié contre les actions en contrefaçon qui pourraient être
+diligentées au titre de l'utilisation, de la modification, et de la
+redistribution du Logiciel. Néanmoins, si de telles actions sont
+exercées contre le Licencié, le Concédant lui apportera son aide
+technique et juridique pour sa défense. Cette aide technique et
+juridique est déterminée au cas par cas entre le Concédant concerné et
+le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
+toute responsabilité quant à l'utilisation de la dénomination du
+Logiciel par le Licencié. Aucune garantie n'est apportée quant à
+l'existence de droits antérieurs sur le nom du Logiciel et sur
+l'existence d'une marque.
+
+
+ Article 10 - RESILIATION
+
+10.1 En cas de manquement par le Licencié aux obligations mises à sa
+charge par le Contrat, le Concédant pourra résilier de plein droit le
+Contrat trente (30) jours après notification adressée au Licencié et
+restée sans effet.
+
+10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
+utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
+licences qu'il aura concédées antérieurement à la résiliation du Contrat
+resteront valides sous réserve qu'elles aient été effectuées en
+conformité avec le Contrat.
+
+
+ Article 11 - DISPOSITIONS DIVERSES
+
+
+ 11.1 CAUSE EXTERIEURE
+
+Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
+d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
+fortuit ou une cause extérieure, telle que, notamment, le mauvais
+fonctionnement ou les interruptions du réseau électrique ou de
+télécommunication, la paralysie du réseau liée à une attaque
+informatique, l'intervention des autorités gouvernementales, les
+catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
+le feu, les explosions, les grèves et les conflits sociaux, l'état de
+guerre...
+
+11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
+plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
+Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
+intéressée à s'en prévaloir ultérieurement.
+
+11.3 Le Contrat annule et remplace toute convention antérieure, écrite
+ou orale, entre les Parties sur le même objet et constitue l'accord
+entier entre les Parties sur cet objet. Aucune addition ou modification
+aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
+d'être faite par écrit et signée par leurs représentants dûment habilités.
+
+11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
+s'avèrerait contraire à une loi ou à un texte applicable, existants ou
+futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
+amendements nécessaires pour se conformer à cette loi ou à ce texte.
+Toutes les autres dispositions resteront en vigueur. De même, la
+nullité, pour quelque raison que ce soit, d'une des dispositions du
+Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
+
+
+ 11.5 LANGUE
+
+Le Contrat est rédigé en langue française et en langue anglaise, ces
+deux versions faisant également foi.
+
+
+ Article 12 - NOUVELLES VERSIONS DU CONTRAT
+
+12.1 Toute personne est autorisée à copier et distribuer des copies de
+ce Contrat.
+
+12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
+et ne peut être modifié que par les auteurs de la licence, lesquels se
+réservent le droit de publier périodiquement des mises à jour ou de
+nouvelles versions du Contrat, qui posséderont chacune un numéro
+distinct. Ces versions ultérieures seront susceptibles de prendre en
+compte de nouvelles problématiques rencontrées par les logiciels libres.
+
+12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
+faire l'objet d'une diffusion ultérieure que sous la même version du
+Contrat ou une version postérieure.
+
+
+ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
+
+13.1 Le Contrat est régi par la loi française. Les Parties conviennent
+de tenter de régler à l'amiable les différends ou litiges qui
+viendraient à se produire par suite ou à l'occasion du Contrat.
+
+13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
+de leur survenance et sauf situation relevant d'une procédure d'urgence,
+les différends ou litiges seront portés par la Partie la plus diligente
+devant les Tribunaux compétents de Paris.
+
+
+Version 1.0 du 2006-09-05.
diff --git a/macros/plain/contrib/getoptk/README b/macros/plain/contrib/getoptk/README
new file mode 100644
index 0000000000..03be616a13
--- /dev/null
+++ b/macros/plain/contrib/getoptk/README
@@ -0,0 +1,10 @@
+THE PLAIN TeX GETOPTK PACKAGE
+(c) 2011 Michael Le Barbier Gruenewald
+
+The GETOPTK package eases the definition of macros accepting
+optional arguments in the same style as \hrule or \hbox.
+It is meant to be used with plain TeX.
+
+See guide.pdf for a quick guide.
+
+See COPYING and COPYING-FR for licence agreement.
diff --git a/macros/plain/contrib/getoptk/getoptk.tex b/macros/plain/contrib/getoptk/getoptk.tex
new file mode 100644
index 0000000000..9c1b6ea345
--- /dev/null
+++ b/macros/plain/contrib/getoptk/getoptk.tex
@@ -0,0 +1,285 @@
+\catcode`\@=11
+\def\gobble#1{}
+\def\elet#1{%
+ \expandafter\let\expandafter#1%
+}
+
+\def\csdef#1{%
+ \expandafter\def\csname #1\endcsname
+}
+
+\def\cslet#1{%
+ \expandafter\let\csname #1\endcsname
+}
+
+\def\gobble#1{}
+
+\def\getoptk@@#1#2{%
+ \beginnext
+ \toks2={{#1}{#2}}%
+ \edef\next{%
+ \noexpand\getoptk@@A\the\toks2
+ {\expandafter\noexpand\csname
+ getoptk@behaviour@\getoptkactivedictionary @#1\endcsname}%
+ }%
+ \endnext
+}
+
+\def\getoptk@@A#1#2#3{%
+ \beginnext
+ \toksloadcsexpansion\getoptkdictionary\to{\toks2}%
+ \toks4={\\{{#1}{#2}{#3}}}%
+ \edef\next{\noexpand\def\noexpand\getoptkdictionary{%
+ \the\toks2
+ \the\toks4
+ }%
+ }%
+ \endnext
+ \cslet{getoptk@dictionary@\getoptkactivedictionary}\getoptkdictionary
+ \beginnext
+ \def\getoptk@a{#2}%
+ \ifx\getoptk@a\empty
+ \toks4={}%
+ \else
+ \toks4={####1}%
+ \fi
+ \toks2={\def#3}%
+ \edef\next{\the\toks2\the\toks4}%
+ \endnext
+}
+
+\def\toksloadcsexpansion#1\to#2{%
+ #2=\expandafter{#1}}
+\def\tokscat#1&#2\to#3{%
+ \beginnext
+ \edef\tokscat@a{\the#1\the#2}%
+ \toks2={#3}%
+ \toksloadcsexpansion\tokscat@a
+ \to{\toks4}%
+ \edef\next{\the\toks2={\the\toks4}}%
+ \endnext}
+\def\beginnext{%
+ \begingroup
+ \let\next\undefined}
+\def\endnext{%
+ \expandafter\endgroup\next}
+\begingroup
+\catcode`\*=13
+\def *#1{}
+\global\futurelet\spacetoken*^^20\relax
+\global\futurelet\newlinetoken*^^0a\relax
+\endgroup
+\def\readblanks\then#1\done{%
+ \beginnext
+ \def\next{#1}%
+ \readblanks@L}
+\def\readblanks@L{%
+ \futurelet\readblanks@t\readblanks@A}
+\def\readblanks@A{%
+ \let\readblanks@N\readblanks@E
+ \ifx\readblanks@t\spacetoken
+ \let\readblanks@N\readblanks@S
+ \fi
+ \ifx\readblanks@t\newlinetoken
+ \let\readblanks@N\readblanks@S
+ \fi
+ \ifx\readblanks@t\par
+ \let\readblanks@N\readblanks@I
+ \fi
+ \ifx\readblanks@t\input
+ \let\readblanks@N\readblanks@X
+ \fi
+ \readblanks@N}
+\def\readblanks@E{\endnext}
+\long\def\readblanks@S{%
+ \afterassignment\readblanks@L
+ \count0=0}
+\def\readblanks@I#1{%
+ \readblanks@L}
+\def\readblanks@X{%
+ \expandafter\readblanks@L}
+\def\readletters\to#1\then#2\done{%
+ \beginnext
+ \toks2={#2}%
+ \toks4={#1}%
+ \toks6={}%
+ \readletters@L
+}
+
+\def\readletters@L{%
+ \futurelet\readletters@t\readletters@A
+}
+
+\def\readletters@A{%
+ \ifcat A\noexpand\readletters@t
+ \let\readletters@N\readletters@X
+ \else
+ \let\readletters@N\readletters@E
+ \fi
+ \readletters@N
+}
+
+\def\readletters@X#1{%
+ \toks8={#1}%
+ \tokscat\toks6 &\toks8\to{\toks6}%
+ \readletters@L
+}
+
+\def\readletters@E{%
+ \edef\next{\the\toks4={\the\toks6}\the\toks2}%
+ \endnext
+}
+
+\newtoks\getoptkargument
+\def\getoptk#1{%
+ \beginnext
+ \toks0={#1}%
+ \toks2={}%
+ \toks4={}%
+ \toks6={}%
+ \getoptkargument={}%
+ \getoptk@L}
+\def\getoptk@E{%
+ \edef\next{%
+ \the\toks0{\the\toks2}%
+ \the\toks4}%
+ \endnext}
+\def\getoptk@L{%
+ \readblanks\then\getoptk@A\done}
+\def\getoptk@A{%
+ \readletters\to\toks4\then
+ \getoptk@B
+ \done}
+\def\getoptk@B{%
+ \let\getoptk@N\getoptk@E
+ \let\\\getoptk@S
+ \getoptkdictionary
+ \getoptk@N}
+\def\getoptk@S#1{\getoptk@T#1}
+\def\getoptk@T#1#2#3{%
+ \edef\getoptk@a{\the\toks4}%
+ \def\getoptk@b{#1}%
+ \def\getoptk@p{#2}%
+ \ifx\getoptk@a\getoptk@b
+ \let\\\gobble
+ \toks6={}%
+ \toks8={#3}%
+ \def\getoptk@N{#2}%
+ \def\getoptk@a{}%
+ \ifx\getoptk@p\getoptk@a
+ \let\getoptk@N\getoptkcallback
+ \fi
+ \def\getoptk@a{[]}%
+ \ifx\getoptk@p\getoptk@a
+ \let\getoptk@N\getoptk@O
+ \fi
+ \fi}
+\def\getoptkcallback{%
+ \tokscat\toks2 &\toks6\to{\toks2}%
+ \tokscat\toks2 &\toks8\to{\toks2}%
+ \def\getoptk@a{}%
+ \ifx\getoptk@p\getoptk@a
+ \toks6={}%
+ \else
+ \edef\getoptk@N{%
+ \toks6={%
+ {\the\getoptkargument}%
+ }%
+ }%
+ \getoptk@N
+ \fi
+ \tokscat\toks2 &\toks6\to{\toks2}%
+ \getoptk@L}
+\newif\ifgetoptkbracket
+\def\getoptk@O{%
+ \readblanks\then
+ \futurelet\getoptk@t\getoptk@P
+ \done}
+\def\getoptk@P{%
+ \ifx\getoptk@t[%]
+ \toks6={\getoptkbrackettrue}%
+ \let\getoptk@N\getoptk@Q
+ \else
+ \toks6={\getoptkbracketfalse}%
+ \let\getoptk@N\getoptkcallback
+ \fi
+ \getoptk@N}
+\def\getoptk@Q[#1]{%
+ \getoptkargument={#1}%
+ \getoptkcallback}
+\def\getoptkmetaparser#1{%
+ \def\getoptkmetaparser@r{#1}%
+ \afterassignment\getoptkmetaparser@A
+ #1}
+\def\getoptkmetaparser@A{%
+ \beginnext
+ \toks2=\expandafter{%
+ \getoptkmetaparser@r
+ }%
+ \edef\next{%
+ \noexpand
+ \getoptkmetaparser@B{\the\toks2}%
+ }%
+ \endnext}
+\def\getoptkmetaparser@B#1{%
+ \edef\getoptk@N{%
+ \getoptkargument={\the#1}%
+ }%
+ \getoptk@N
+ \getoptkcallback}
+\def\getoptkcountparser{%
+ \getoptkmetaparser{\count0 }}
+\def\getoptkdimenparser{%
+ \getoptkmetaparser{\dimen0 }%
+}
+
+\def\getoptkskipparser{%
+ \getoptkmetaparser{\skip0 }%
+}
+
+\def\getoptkskipparser{%
+ \getoptkmetaparser{\skip0 }%
+}
+
+\def\getoptktoksparser{%
+ \getoptkmetaparser{\toks0 }%
+}
+\def\newgetoptkdictionary#1{%
+ \cslet{getoptk@dictionary@#1}\empty
+ \setgetoptkdictionary{#1}%
+}
+
+\def\setgetoptkdictionary#1{%
+ \def\getoptkactivedictionary{#1}%
+ \beginnext
+ \toks2={\let\getoptkdictionary}%
+ \toks4=\expandafter{\csname getoptk@dictionary@#1\endcsname}%
+ \edef\next{\the\toks2 \the\toks4}%
+ \endnext
+}
+
+\def\defgetoptkflag#1{%
+ \getoptk@@{#1}{}%
+}
+
+\def\defgetoptkbracket#1{%
+ \getoptk@@{#1}{[]}%
+}
+
+\def\defgetoptkcount#1{%
+ \getoptk@@{#1}{\getoptkcountparser}%
+}
+
+\def\defgetoptkdimen#1{%
+ \getoptk@@{#1}{\getoptkdimenparser}%
+}
+
+\def\defgetoptkskip#1{%
+ \getopk@@{#1}{\getoptkskipparser}%
+}
+
+\def\defgetoptktoks#1{%
+ \getopk@@{#1}{\getoptktoksparser}%
+}
+\catcode`\@=12
+
diff --git a/macros/plain/contrib/getoptk/guide.pdf b/macros/plain/contrib/getoptk/guide.pdf
new file mode 100644
index 0000000000..34d03909a7
--- /dev/null
+++ b/macros/plain/contrib/getoptk/guide.pdf
Binary files differ
diff --git a/macros/plain/contrib/getoptk/guide.tex b/macros/plain/contrib/getoptk/guide.tex
new file mode 100644
index 0000000000..5d6ccf69a4
--- /dev/null
+++ b/macros/plain/contrib/getoptk/guide.tex
@@ -0,0 +1,192 @@
+\documentclass{article}
+\usepackage{palatino}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage[dvipsnames]{xcolor}
+\usepackage{hyperref}
+\usepackage{graphicx}
+\usepackage{microtype}
+\hypersetup{%
+ hyperindex,
+ % pagebackref,
+ pdftex,
+ pdftitle={Interfaces to macros: the GETOPTK package}
+ pdfdisplaydoctitle,
+ % pdfpagemode=UseNone,
+ breaklinks=true,
+ % extension=pdf,
+ bookmarks=true,
+ % plainpages=false,
+ colorlinks,
+ linkcolor=BlueViolet,
+ citecolor=BrickRed,
+ urlcolor=Plum,
+ pdfpagelabels,
+ pdfpagelayout=TwoPageRight,
+ pdfview=Fit,
+ pdfstartview=Fit
+}%
+%
+% Definitions
+%
+\newcommand\PACKAGE{\emph{getoptk}}
+\newcommand\cs[1]{\texttt{\textbackslash#1}}
+\newcommand\meta[1]{\penalty0 $\langle\textit{#1}\rangle$\penalty0 }
+\begin{document}
+\author{Michael Le Barbier Grünewald}
+\title{The GETOPTK package}%
+\date{6th of June 2011}
+\maketitle
+\begin{abstract}
+The~{\PACKAGE} package eases the definition of macros accepting
+optional arguments in the same style as~\cs{hrule} or~\cs{hbox}.
+It is meant to be used with \emph{plain {\TeX}}.
+\end{abstract}
+\section{Introduction}
+A flexible way to pass optional arguments to a procedure is to rely on
+\emph{dictionaries} of optional arguments, that is, a set of bindings
+between formal names of arguments and their values. Some~{\TeX}
+primitives, like~\cs{hrule} or~\cs{hbox}, use such an interface style.
+We call this style the~\emph{keyword} interface style. There is no
+facility in~{\TeX} to define new macros using the~\emph{keyword}
+interface style. The {\PACKAGE} package provides such a service.
+
+\section{Quick guide}
+
+In order to define a macro using the~\emph{keyword} interface style,
+we have to setup first a~\emph{behaviour dictionary}
+binding \emph{keywords} and \emph{behaviours}. A~keyword introduces an
+optional argument and a behaviour describes its effect, we will soon
+show an example of this. In the definition of the macro itself, we
+first select the behaviour dictionary we want to use and
+call~\cs{getoptk}, the control sequence responsible of the detection
+of optional arguments. In this call, we need to provide
+a~\emph{callback} as argument to~\cs{getoptk}, this callback is a macro
+taking control of the execution after~\cs{getoptk} has completed its
+task. It will be called with an argument, that is derived from the
+list of optional arguments.
+
+For explanatory purposes, let us assume that we want to define a
+macro \cs{begindisplay} using the \emph{keyword} interface style and
+accepting the following optional arguments:
+\begin{description}
+\item [ragged]
+ Fill, but do not adjust the right margin (only left-justify).
+
+\item [literal]
+ Display block with literal font (usually fixed-width). Useful for
+ source code or simple tabbed or spaced text.
+
+\item [file \meta{file name}]
+ The file whose name, enclosed in curly braces, follows the
+ \emph{file} keyword is read and displayed using the selected
+ display type.
+
+\item [offset \meta{dimen}]
+ Use~\emph{dimen} as indentation for the display.
+
+\end{description}
+We first create a fresh new behaviour dictionary:
+\begin{verbatim}
+\newgetoptkdictionary{display}
+\end{verbatim}
+and fill it with behaviours:
+\begin{verbatim}
+\defgetoptkflag{ragged}{\raggedright}
+\defgetoptkflag{literal}{\let\displayfont\literalfont}
+\defgetoptktoks{file}{\input #1}
+\defgetoptkdimen{dimen}{\displayindent=#1\relax}
+\end{verbatim}
+Besides registering the behaviours in the dictionary~\emph{display},
+these commands also bind the behaviours to the following control
+sequences:
+\begin{verbatim}
+\getoptk@behaviour@display@ragged
+\getoptk@behaviour@display@literal
+\getoptk@behaviour@display@file
+\getoptk@behaviour@display@dimen
+\end{verbatim}
+The control sequences created with \cs{getoptkflag} must do not have an
+argument, while those created by \cs{getoptktoks} or \cs{getoptkdimen}
+do have one. The definition of~\cs{begindisplay} is
+\begin{verbatim}
+\def\begindisplay{%
+ \setgetoptkdictionary{display}%
+ \getoptk\display@M
+}
+\end{verbatim}
+The control sequence~\cs{getoptk} is such that the input text
+\begin{verbatim}
+\begindisplay file {chapter1} literal offset 20pt
+\end{verbatim}
+is \emph{replaced} by
+\begin{verbatim}
+\display@M{%
+ \getoptk@behaviour@display@file{chapter1}%
+ \getoptk@behaviour@display@literal
+ \getoptk@behaviour@display@dimen{20pt}%
+}
+\end{verbatim}
+so that \cs{display@M} can do its job and trigger the behaviours at
+the appropriate time.
+
+
+\section{Defining a behaviour dictionary}
+
+The command \cs{newgetoptkdictionary}\meta{dictionary} creates a
+behaviour dictionary that will be filled by subsequent calls to
+commands binding keywords and behaviours. The bindings commands are:
+\begin{verbatim}
+\defgetoptkflag
+\defgetoptkcount
+\defgetoptkdimen
+\defgetoptkskip
+\defgetoptktoks
+\defgetoptkbracket
+\end{verbatim}
+They all must be called like in the previous examples, following the
+pattern:
+\par\medskip
+\leftline{\meta{binding\_command}\meta{keyword}\meta{behaviour}}
+\smallskip
+\begin{description}
+\newcommand\defgetoptkdescribe[1]{%
+\item [defgetoptk#1]
+ The \meta{behaviour} is the replacement text of a macro having one
+ argument. When it finds~\meta{keyword}, the \cs{getoptk} macro
+ scans further for an argument that is valid right hand side value
+ for a \emph{#1} register. This argument will be supplied to the
+ \meta{behaviour} when behaviours are triggered.\par
+}
+\item [defgetoptkflag]
+ The \meta{behaviour} is the replacement text of a macro without
+ arguments. When it finds~\meta{keyword}, the \cs{getoptk} macro
+ does not look for an argument but starts again scanning for
+ keywords.
+\defgetoptkdescribe{count}
+\defgetoptkdescribe{dimen}
+\defgetoptkdescribe{skip}
+\defgetoptkdescribe{toks}
+\item [defgetoptkbracket]
+ The \meta{behaviour} is the replacement text of a macro having one
+ argument. When it finds~\meta{keyword}, the \cs{getoptk} macro
+ scans further for an optional argument enclosed by square brackets.
+ If such an argument is found, it is supplied to
+ \meta{behaviour} when behaviours are triggered and the predicate
+ \cs{ifgetoptkbracket} is bound to \cs{iftrue}. If no such an
+ argument is found, then the empty argument is supplied
+ to~\meta{behaviour} when behaviours are triggered and the predicate
+ \cs{ifgetoptkbracket} is bound to \cs{iffalse}.
+\end{description}
+
+\section{Licence}
+The {\PACKAGE} software id copyright \copyright~2011 Michael Le
+Barbier Grünewald.
+The {\PACKAGE} software is distributed under the terms of the
+CeCILL-B licence, version~1.0. See the files COPYING and COPYING-FR
+in the distribution.
+\end{document}
+
+% Local Variables:
+% ispell-dictionary: "en_GB-ise"
+% End: