summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-05-02 21:46:24 +0000
committerKarl Berry <karl@freefriends.org>2015-05-02 21:46:24 +0000
commit759e0697312d3d8e1dcc358f493f393ca4e198c1 (patch)
tree50decc1b030712e8ea0f3edc60173aa9adaa3f2e
parent3e068f7eeed6dd41b29c02e7631079e6b756ec05 (diff)
gfnotation (2may15)
git-svn-id: svn://tug.org/texlive/trunk@37156 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/plain/gfnotation/COPYING674
-rw-r--r--Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.pdfbin0 -> 167160 bytes
-rw-r--r--Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.tex1186
-rw-r--r--Master/texmf-dist/doc/plain/gfnotation/README33
-rw-r--r--Master/texmf-dist/tex/plain/gfnotation/GFnotation.tex2175
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
-rw-r--r--Master/tlpkg/tlpsrc/collection-plainextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/gfnotation.tlpsrc0
9 files changed, 4071 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/plain/gfnotation/COPYING b/Master/texmf-dist/doc/plain/gfnotation/COPYING
new file mode 100644
index 00000000000..94a9ed024d3
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/gfnotation/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE 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.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR 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.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.pdf b/Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.pdf
new file mode 100644
index 00000000000..a32c0c75f0b
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.tex b/Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.tex
new file mode 100644
index 00000000000..d57cc991057
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/gfnotation/GFnotation-doc.tex
@@ -0,0 +1,1186 @@
+% This file is part of the CTAN package named gfnotation.
+%
+% This is the users guide to the TeX macros ``GFnotation.tex''.
+% GFnotation.tex: typeset G. Frege's notation of the Begriffsschrift or
+% the Grundgesetze der Arithmetik in plain TeX
+%
+% Copyright (C) 2015 Udo Wermuth (author)
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
+% %%%
+% %%% GFnotation
+% %%%
+\input amssym.def
+\catcode`\ß=11
+\let\nosubst=f
+\let\showrotation=t \input rotate
+\let\fgefontsknown=t
+\input GFnotation
+\gfbslognotationtrue
+\gfbszeigestatstrue
+% %%%
+% %%% verbatim macros (from manmac.tex)
+% %%%
+\newskip\ttglue {\tt\global\ttglue=0.5em plus 0.25em minus 0.15em }
+\def\ttverbatim{\begingroup \frenchspacing
+ \catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\$=12 \catcode`\&=12
+ \catcode`\#=12 \catcode`\%=12 \catcode`\~=12 \catcode`\_=12 \catcode`\^=12
+ \obeyspaces \obeylines \tt}
+\def\verbatimspace{\ifvmode\indent\fi\space}
+{\obeyspaces \gdef\makespaceverbspace{\def {\verbatimspace}}}
+\outer\def\verbatim{$$\ifdim\parskip>0pt
+ \abovedisplayskip=\parskip \abovedisplayshortskip=\parskip
+ \belowdisplayskip=\parskip \belowdisplayshortskip=\parskip
+ \else
+ \abovedisplayskip=3pt \abovedisplayshortskip=3pt
+ \belowdisplayskip=3pt \belowdisplayshortskip=3pt
+ \fi
+ \let\par=\endgraf \ttverbatim \makespaceverbspace \parskip=0pt
+ \catcode`\§=0 \advance\leftskip by 10pt \ttfinish}
+{\catcode`\§=0 §catcode`§\=12 % § is temporary escape character
+ §obeylines % end of line is active
+ §gdef§ttfinish#1^^M#2\endverbatim{§vbox{#2}§endgroup$$}}
+\catcode`\¤=\active
+{\obeylines \gdef¤{\ttverbatim \spaceskip\ttglue \let^^M=\ \let¤=\endgroup}}
+% %%%
+% %%% Examples
+% %%%
+\def\Econt{\goodbreak\bgroup
+ \parskip=0pt \leftskip=3\parindent \rightskip=\leftskip \parindent=0pt }
+\def\Epause{\par\egroup}
+\def\Example#1{\bigskip\Econt\noindent{\bf Example #1.}\ }
+\def\Eend#1{\ifnum#1>0 \vskip-\baselineskip\fi
+ \hfill\vrule height 7pt depth 1pt width 3pt \Epause\bigskip}
+% %%%
+% %%% hyphenation exceptions
+% %%%
+\hyphenation{Gottlob Frege Begriffs-schrift Grund-gesetze}
+% %%%
+% %%% other
+% %%%
+\def\\{\par\vskip0pt plus.3\vsize\penalty-253\vskip0pt plus-.3\vsize\relax}
+\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em S$-\TeX}
+\def\La{L\kern-3pt \raise.42ex\hbox{$\scriptstyle A$}}
+\def\LaTeX{\La\kern-.15em\TeX}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\parskip=0.25\baselineskip
+\settabs 6 \columns
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\font\titlefont=cmssdc10 at 36pt
+\font\subtitlefont=cmssdc10 at 17pt
+%
+\centerline{\titlefont Users Guide}
+\bigskip
+\centerline{\subtitlefont GFnotation.tex (version 2.9, 29.03.2015)}
+
+% %%%%%%%%%%%
+\beginsection 1. Description
+
+This package implements macros to typeset formulas and inferences in
+Gottlob Frege's notation in the style of his ``Begriffsschrift, eine der
+arithmetischen nachgebildete Formelsprache des reinen Denkens'' (see
+[1]) or in the style of his main work ``Grundgesetze der Arithmetik''
+(see [2]). Here is an example of a single
+formula: \frege|{..\gA.{*.a.{f(\da)}}}. And this is a complete
+inference:
+\nlp4\*_[-\*-:-\ce{$\gA$}
+\nlp4\*___\*_'-\ce{$\gB$}
+\nlp4\*_[-\*---\ce{$\gB$}
+\nlp4\*---\*---\*---
+\nlp4\*_[-\*---\ce{$\gA$} .
+
+The package has two input formats, the so-called ``symbolic
+representation'' and the ``short form.'' The short form outputs the
+formulas either in the style of Frege's {\it Begriffsschrift\/} or in
+the style that is used in his {\it Grundgesetze}. The above formulas
+are in the style of the {\it Begriffsschrift\/}; here is the first one
+in the style of the {\it Grundgesetze\/}:
+\toggleGGstyle\frege|{..\gA.{*.a.{f(\da)}}}.\toggleGGstyle
+
+{\it Note\/}: This users guide shows how to work with the package.
+It does not explain the constructions and symbols in Frege's
+notation.
+
+
+% %%%%%%%%%%%
+\beginsection 2. Elements of Frege's notation
+
+{\bf a) Letters.}\ Frege used lowercase roman letters, $a$, $b$,
+$c$, \dots, uppercase Greek letters $\gA$, $\gB$, $\gG$, \dots,
+lowercase Greek letters $\ka$, $\kb$, $\kg$, \dots, and Fraktur
+letters $\da$, $\de$, $\dF$, \dots\thinspace.
+
+\noindent
+{\bf b) Formulas (Begriffsschrift).}\
+The following notation is used by Frege to build formulas:
+\smallskip
+\+&{\it Content stroke\/}: \*---\ze{$\gA$}.
+ &&{\it Judgment\/}: \*[--\ze{$\gA$}.\cr
+\smallskip
+\+&{\it Negation\/}: \*-~-\ze{$\gA$}.
+ &&{\it Affirmation\/}: \*-+-\ze{$\gA$}.\cr
+ \smallskip
+\+&{\it Condition\/}: \frege .{..\gB.\gA}.
+ &&{\it Generality\/}: \frege .{*.a.{\gF(\da)}}.\cr
+\+&{\it Condition stroke\/}: \*_!_.
+ &&{\it Definition\/}: \*"3- $((\gA)\equiv\gB)$.\cr
+\smallskip
+\+&{\it Substitution\/}: $a$\*_|_$f(a)$.\cr
+
+\noindent
+{\bf c) Inferences (Begriffsschrift).}\
+For inferences two types of lines are used:
+\smallskip
+\+&{\it Single line\/}: \*---\*---.
+ &&{\it Double lines\/}: \*===\*===.\cr
+\smallskip
+\+&{\it Separator between inference chains\/}:\cr
+\decollator4
+
+\noindent
+{\bf d) Terminal symbols (Begriffsschrift).}\
+Four special constructions appear in the {\it Begriffsschrift\/}:
+\smallskip
+\+&$\gfvererbe\kd\ka{{x(\ka)}}{{f(\kd,\ka)}}$, \quad$\gffolgt\kg\kb{f(x_\kg,y_\kb)}$,
+\quad$\gfgehoertan\kg\kb{f(x_\kg,z_\kb)}$, \quad$\gfeindeutig\kd\ke{f(\kd,\ke)}$.\cr
+
+\toggleGGstyle
+\gfbskeinekompaktehoehlungtrue
+\noindent
+{\bf e) Formulas (Grundgesetze).}\
+The following notation is used by Frege to build formulas:
+\smallskip
+\+&{\it Content stroke\/}: \frege.{=.\gA}.
+ &&{\it Judgment\/}: \frege|{=.\gA}.\cr
+\smallskip
+\+&{\it Negation\/}: \frege.{=-\gA}.
+ &&{\it Affirmation\/}: \frege.{=+\gA}.\cr
+ \smallskip
+\+&{\it Condition\/}: \frege .{..\gB.\gA}.
+ &&{\it Generality\/}: \frege .{*.a.{\gF(\da)}}.\cr
+\+&{\it Condition stroke\/}: \*_!_.
+ &&{\it Definition\/}: \*"39 $\gA=\gB$.\cr
+
+\noindent
+{\bf f) Inferences (Grundgesetze).}\
+For inferences eight types are used:
+\smallskip
+\+&{\it Single line\/}: \*?--\*?--.
+ &&{\it Double lines\/}: \*?==\*?==.\cr
+\smallskip
+\+&{\it Dashed line\/}: \*?-_\*?-_.
+ &&{\it Dashed double lines\/}: \*?=_\*?=_.\cr
+\smallskip
+\+&{\it Single/double line\/}: \*?=*\*?=*.
+ &&{\it Dot/dashed line\/}: \*?.-\*?.-.\cr
+\smallskip
+\+&{\it Contraposition\/}: \*?>x.
+ &&{\it Quantification\/}: \*?>u.\cr
+\smallskip
+\+&{\it Separator\/}: \gfggtrenner.\cr
+
+\noindent
+{\bf g) Special symbols (Grundgesetze).}\
+Several special characters appear in the {\it Grundgesetze\/}:
+\smallskip
+\+&{\it symbols\/}: $\Gbf$ \G0 \G1 $\Guu$\cr
+\smallskip
+\+&{\it unary operators\/}: \G! $\kasl$ \GI\ $\G>$ \G- \G~ $\G*$
+ $\G6$ $\Gf$ $\Gp$ $\GUorg$ $\Gnorg$
+&&&{\it last two from the fge fonts\/}: $\GU$ $\Gn$\cr
+\smallskip
+\+&{\it binary operators\/}: $\G^$ $\G_$ $\G;$ $\Gfm$ $\Gsm$
+ $\G<$ $\Gmf$ $\Gl$
+&&&{\it rotated\/}: $\Gy$ $\Ge$ $\Gc$ $\GF$ $\Gss$\cr
+\toggleGGstyle
+
+
+% %%%%%%%%%%%
+\beginsection 3. How to load the package
+
+The package requires characters that come with \AmSTeX\ (see [3]);
+the following statement must be given before the package is loaded:
+¤\input amssym.def¤. Then the package is loaded with the statement
+¤\input GFnotation¤.
+
+The package has two styles: the one that is used in the {\it
+Begriffsschrift\/} and the one that is used in the {\it Grundgesetze}.
+If you want to work with the style of the {\it Grundgesetze\/} several
+external flags are available.
+
+First, if only inferences without substitutions are needed the line
+¤\let\nosubst=t¤ should be entered before ¤GFnotation¤ is loaded. This
+avoids typesetting errors and saves some \TeX\ registers. Second, the
+flag ¤\let\showrotation=t¤ can be set to output some terminal symbols
+of the {\it Grundgesetze\/} rotated. Then ¤\input rotate¤ (see [4])
+must be stated too. Otherwise the symbols are not shown as rotated
+symbols (some DVI screen drivers can't do PS-rotation). The affected
+symbols are shown in Section~2g. Third, the flag
+¤\let\fgefontsknown=t¤ can be set to indicate that the fge-fonts by
+J.~J.~Green (see~[5]) are available. Then some symbols of these fonts
+are used in the output. The affected symbols are shown in Section~2g.
+
+After the package has been loaded two flags can be set (independent of the
+style).
+\item{1.}¤\gfbslognotationtrue¤ writes all formulas, which are given in the
+short form, in their symbolic representation into the log file of the
+\TeX\ run.
+\item{2.}¤\gfbszeigestatstrue¤ writes a \TeX\ message for each formula in
+short form if its number of lines is a new maximum.
+
+By default the package activates the style that is used in the {\it
+Begriffsschrift}. To switch to the style of the {\it Grundgesetze\/}
+the global acting command ¤\toggleGGstyle¤ shall be given.
+
+Therefore a typical start is coded in the following way if the style
+of the {\it Begriffschrift\/} is required:
+\verbatim
+\input amssym.def
+\input GFnotation
+\gfbslognotationtrue % log short form formulas in symbolic representation
+\gfbszeigestatstrue % inform about maximum number of lines of short form formulas
+\endverbatim
+
+Otherwise, the style of the {\it Grundgesetze\/} is started with
+\verbatim
+\input amssym.def
+%%% external flags:
+\let\nosubst=t % substitutions aren't needed
+\let\showrotation=t \input rotate % activate this line if PS-rotation works
+%\let\fgefontsknown=t % activate this line if the fge-fonts are available
+\input GFnotation
+%%% internal flags:
+\gfbslognotationtrue % log short form formulas in symbolic representation
+\gfbszeigestatstrue % inform about maximum number of lines of short form formulas
+%%% define the style of the output:
+\toggleGGstyle % use the style of the Grundgesetze
+\endverbatim
+
+
+% %%%%%%%%%%%
+\beginsection 4. Shortcuts for letters
+
+The characters that Frege used (except the roman letters) are coded
+with two letter shortcuts. The first letter indicates how the second
+letter is output. Uppercase Greek letters are introduced by `g',
+lowercase Greek letters by `k', and the Fraktur letters by `d':
+¤$\gA$¤ outputs~$\gA$, ¤$\ka$¤ outputs~$\ka$, and ¤$\da$¤
+outputs~$\da$.
+
+Here is the list of the uppercase Greek letters; the coding follows~[6].
+\smallskip
+\+&¤$\gA$¤: $\gA$& ¤$\gB$¤: $\gB$& ¤$\gG$¤: $\gG$& ¤$\gD$¤: $\gD$& ¤$\gE$¤: $\gE$\cr
+\+&¤$\gZ$¤: $\gZ$& ¤$\gH$¤: $\gH$& ¤$\gJ$¤: $\gJ$& ¤$\gI$¤: $\gI$& ¤$\gK$¤: $\gK$\cr
+\+&¤$\gL$¤: $\gL$& ¤$\gM$¤: $\gM$& ¤$\gN$¤: $\gN$& ¤$\gX$¤: $\gX$& ¤$\gO$¤: $\gO$\cr
+\+&¤$\gP$¤: $\gP$& ¤$\gR$¤: $\gR$& ¤$\gS$¤: $\gS$& ¤$\gT$¤: $\gT$& ¤$\gU$¤: $\gU$\cr
+\+&¤$\gF$¤: $\gF$& ¤$\gQ$¤: $\gQ$& ¤$\gY$¤: $\gY$& ¤$\gW$¤: $\gW$\cr
+
+For the Fraktur letters only a subset of the alphabets is provided;
+these are the letters that appear in the {\it Begriffsschrift\/} or in
+part~1 of Vol.~1 of the {\it Grundgesetze\/}:
+\smallskip
+\+&¤$\da$¤: $\da$& ¤$\dc$¤: $\dc$& ¤$\dd$¤: $\dd$& ¤$\de$¤: $\de$& ¤$\df$¤: $\df$\cr
+\+&¤$\dg$¤: $\dg$& ¤$\dm$¤: $\dm$& ¤$\dn$¤: $\dn$& ¤$\ddo$¤: $\ddo$&¤$\ddp$¤: $\ddp$\cr
+\+&¤$\dq$¤: $\dq$& ¤$\dr$¤: $\dr$& ¤$\dt$¤: $\dt$& ¤$\du$¤: $\du$& ¤$\dF$¤: $\dF$\cr
+
+{\it Note\/}: Commands like ¤\dp¤ or ¤\do¤ shouldn't change their
+plain \TeX\ meaning. Therefore the commands for the letters `o' and
+`p' are build with two `d's.
+
+\begingroup\def\ds{{\frak s}} % keep this definition local
+You can add more letters using a simple
+¤\def¤. For example, to add $\ds$ declare ¤\def\ds{{\frak s}}¤.
+\endgroup
+
+
+% %%%%%%%%%%%
+\beginsection 5. Input of formulas using the
+ ``symbolic representation'' (Begriffsschrift)
+
+This input format gives complete control over the output of the
+formulas. But it requires some amount of typing. All formulas are
+built from symbols and three of them are grouped into the argument of
+a control symbol. The control symbol is the ¤\*¤. (The original
+meaning as discretionary multiplication is kept in the new control
+word ¤\discretionarytimes¤.)
+
+In total there are 35 symbols. In the following list the parentheses
+contain the sequence ¤\*"#"¤ if symbol `{\tt\#}' is explained. The
+first collection lists the important symbols that are used for
+hand-coding the formulas in Frege's notation.
+\smallskip
+% 11 symbols
+\item{\tt\char95 }(\*"_") is the empty space;
+\item{\tt-}(\*"-") is a horizontal line for the content stroke and the inference rule;
+\item{\tt\~}(\*"~") is a horizontal line with centered negation;
+\item{\tt+}(\*"+") is a horizontal line with two centered negation indicators (affirmation);
+\item{\tt:}(\*":") is the then-part of the condition;
+\item{\tt'}(\*"'") is the if-part of the condition;
+\item{\tt!}(\*"!") is a vertical line for the condition stroke;
+\item{\tt[}(\*"[") is a vertical line placed left and starts a horizontal line;
+\item{\tt|}(\*"|") is the vertical line for the substitution;
+\item{\tt3}(\*"3") are two vertical lines used for {\it definitions\/};
+\item{\tt=}(\*"=") are two horizontal lines.
+
+\smallskip\noindent
+The following symbols extend the basic list and can be used to
+fine-tune the output.
+\smallskip
+% 8 symbols (sum=19)
+\item{\tt"}(\*""") is a skip, that is, no output at all;
+\item{\tt(}(\*"(") negation but the indication of negation is moved to the left;
+\item{\tt)}(\*")") negation with the indicator moved to the right;
+\item{\tt<}(\*"<") negation: the indicator is placed at the left end;
+\item{\tt>}(\*">") negation: the indicator is placed at the right end;
+\item{\tt\^{}}(\*"^") affirmation with indicators moved to the left;
+\item{\tt/}(\*"/") affirmation with indicators moved to the right;
+\item{\tt]}(\*"]") is a vertical line placed right, that is, only the judgment stroke is printed.
+
+For the generality a letter must be given. Therefore the parentheses
+contain the sequence ¤\*#a.¤ (¤\*@a"¤ for {\tt @}). Instead of the
+letter `a' any other letter can be used that is available in the
+Fraktur font (see Section~4). A triple for the generality must be
+started with one of the following symbols {\tt.,`;@}. If it is not
+the {\tt @} then the symbol after the letter must be one of
+{\tt.,`;}\thinspace.
+\smallskip
+% 5 symbols (sum=24)
+\item{\tt.}(\*.a.) is a short vertical line;
+\item{\tt,}(\*,a.) is a short vertical line with a centered negation indicator;
+\item{\tt`}(\*`a.) represents negation but the indicator is moved to the left;
+\item{\tt;}(\*;a.) is a short vertical line with affirmation;
+\item{\tt @}(\*@a") signals (without any output) that a letter for the generality follows.
+
+{\it Note\/}: The letter `{\tt\ss}' is special. It uses the content of
+the token register ¤\dsz¤. For example, with the default ¤\dsz={\xi}¤
+¤\*.¤{\tt\ss}¤.¤ outputs \*.ß.. Of course, {\tt\ss} must be a letter
+so for plain \TeX\ the command ¤\catcode`\¤{\tt\ss}¤=11¤ must be
+entered before ¤\input GFnotation¤ is done.
+
+\Example1
+The formula \
+\vtop{%
+ \hbox{\strut\*[-:\*--- $\gA$}
+ \hbox{\strut\*__'\*.a. $f(\da)$}}
+of Section~1 can be coded in the following way:
+\verbatim
+\vtop{%
+ \hbox{\strut\*[-:\*--- $\gA$}
+ \hbox{\strut\*__'\*.a. $f(\da)$}}
+\endverbatim\Eend1
+
+The last list contains symbols that are used by the short form. The
+symbols do not try to have a mnemonic representation for their
+output. Most of these symbols can ``change'' and stand for one of two
+symbols from the above lists.
+\smallskip
+% 11 symbols (sum=35)
+\item{\tt0}negation either moved to the left or the right: {\tt0=()}
+\item{\tt1}affirmation: {\tt1=\^{}/}
+\item{\tt2}again affirmation: {\tt2=\^{}+}
+\item{\tt4}not required content strokes: {\tt4=-"}
+\item{\tt5}not required empty space: {\tt5=\char95"}
+\item{\tt6}judgment strokes: {\tt6=[]}
+\item{\tt7}negated generality: {\tt7=`,}
+\item{\tt8}again negation: {\tt8=<\~{}}
+\item{\tt9}represents a content stroke that has only one third of its usual length;
+\item{\tt*}is a skip whose length is multiplied by $5/3$ to get back into alignment after a {\tt9};
+\item{\tt\$} is used only with a generality and represents either a short content stroke or an empty space.
+
+
+% %%%%%%%%%%%
+\beginsection 6. Input for inference chains in the
+ ``symbolic representation'' (Begriffsschrift)
+
+In order to typeset complete inferences several formulas must be
+positioned in a chain and the rule for the inference has to be entered.
+The construction of Example~1 with ¤\vtop¤, ¤\hbox¤, and ¤\strut¤ is
+shortened to a single command ¤\nlp¤. The terminal symbols become
+an argument of a second command ¤\ce¤.
+\smallskip
+\item{1.}¤\nlp<n>¤ starts a new line and sets the following text {\tt<n>} units to the right;
+\item{2.}¤\ce{<s>}¤ outputs the string {\tt<s>} with some spacing at the end of a line.
+
+\Example2
+This is the implementation of the inference in Section~1, that is
+\nlp4\*_[-\*-:-\ce{$\gA$}
+\nlp4\*___\*_'-\ce{$\gB$}
+\nlp4\*_[-\*---\ce{$\gB$}
+\nlp4\*---\*---\*---
+\nlp4\*_[-\*---\ce{$\gA$}\qquad:
+\smallskip
+\verbatim
+\nlp4\*_[-\*-:-\ce{$\gA$}
+\nlp4\*___\*_'-\ce{$\gB$}
+\nlp4\*_[-\*---\ce{$\gB$}
+\nlp4\*---\*---\*---
+\nlp4\*_[-\*---\ce{$\gA$} .
+\endverbatim\Eend1
+
+\noindent
+For complete inferences with substitutions more commands are
+required:
+\smallskip
+\item{3.}¤\ci{<s>}¤ is like ¤\ce¤ but must be used in the line and spaces that follow are ignored;
+\item{4.}¤\nlpc<n>{<s>}¤ acts like ¤\nlp<n>¤ and sets the string {\tt<s>} to the left in the white space;
+\item{5.}¤\fono{<m>}¤ outputs {\tt<m>} as the number of the formula at the right end of the previous line;
+\item{6.}¤\rep<n><f>¤ repeats the ¤\*¤-formula {\tt<f>} {\tt<n>} times;
+\item{7.}¤\bcc<n>/<p><m>:<c><f>\ecc¤ typesets an inference rule.
+{\tt<n>} is the position to the right, {\tt<m>} is a formula number used in the inference,
+and {\tt<f>} is the rule itself. The parameter {\tt<p>} is either `l', 'm', or `r' to
+position the formula number to the left, in the middle, or to the right.
+And {\tt<c>} is either `.'\ or `:'\ to output one or two colons after the formula number.
+
+\Example3
+The following code
+\Epause
+\verbatim
+ \nlp4\ci{\hss\thinspace58\hss}\rep3\*___\*_[-\*-:-\*---\*-:-\ce{$f(b)$}
+\nlpc4{$f(A)$}\*_|_\*-:-\ci{$f(A)$}\rep2\*___\*_!_\*___\*_'-\ce{$g(b)$}
+ \nlp4\*_|_\*_'-\ci{$g(A)$}\rep2\*___\*_'-\*.a.\*-:-\ce{$f(\da)$}
+ \nlpc4{$c$}\*_|_\ci{$b$} \rep3\*___\*___\*___\*_'-\ce{$g(\da)$}
+ \bcc4/m30:.\rep3\*___\null \rep6\*---\ecc
+ \nlpc4{$a$}\*_|_\ci{$f(b)$} \rep2\*___\*_[-\*-:-\*-:-\*,a.\*-:-\ce{$f(\da)$}
+ \nlpc4{$c$}\*_|_\ci{$g(b)$} \rep2\*___\*___\*_!_\*_!_\*___\*_'-\ce{$g(\da)$}
+ \nlpc4{$b$}\*_|_\*.a.\*-:-\ci{$f(\da)$} \*___\*_!_\*_'-\*---\*--(\ce{$f(b)$}
+ \nlp4\*_|_\*___\*_'-\ci{$g(\da)$} \*___\*_'-\*---\*---\*---\ce{$g(b)$}
+\fono{59}
+\endverbatim\Econt
+
+outputs formula~59 of the {\it Begriffsschrift}:
+\smallskip
+ \nlp4\ci{\hss\thinspace58\hss}\rep3\*___\*_[-\*-:-\*---\*-:-\ce{$f(b)$}
+\nlpc4{$f(A)$}\*_|_\*-:-\ci{$f(A)$}\rep2\*___\*_!_\*___\*_'-\ce{$g(b)$}
+ \nlp4\*_|_\*_'-\ci{$g(A)$}\rep2\*___\*_'-\*.a.\*-:-\ce{$f(\da)$}
+ \nlpc4{$c$}\*_|_\ci{$b$} \rep3\*___\*___\*___\*_'-\ce{$g(\da)$}
+ \bcc4/m30:.\rep3\*___\null \rep6\*---\ecc
+ \nlpc4{$a$}\*_|_\ci{$f(b)$} \rep2\*___\*_[-\*-:-\*-:-\*,a.\*-:-\ce{$f(\da)$}
+ \nlpc4{$c$}\*_|_\ci{$g(b)$} \rep2\*___\*___\*_!_\*_!_\*___\*_'-\ce{$g(\da)$}
+ \nlpc4{$b$}\*_|_\*.a.\*-:-\ci{$f(\da)$} \*___\*_!_\*_'-\*---\*--(\ce{$f(b)$}
+ \nlp4\*_|_\*___\*_'-\ci{$g(\da)$} \*___\*_'-\*---\*---\*---\ce{$g(b)$}
+\fono{59}\Eend0
+
+\noindent
+One more command is required for collections of inferences:
+\item{8.}¤\decollator<l>¤ outputs a thick line of width ¤0.<l>\hsize¤. The line is
+centered. It is preceded and followed by vertical space.
+
+\Example4
+Here are some inferences of the {\it Begriffsschrift\/}:
+\outof p3,0"1"with\thatis
+\formula p9|{..{..a.b}.a}
+\followswith p3"8"a.p8s5
+\substituting p3 d:a \whichgives
+\formula p9|{..{..a.a}.b}
+\named "26"
+\decollator4
+\outof p3,0"26"with b:{..{..a.b}.a} \thatis
+\formula p8|{..{=.{..a.a}}.{..{..a.b}.a}}
+\followswith p3"1"a:p8s5
+\formula p8|{=.{=.{..a.a}}}
+\named "27"
+
+The command ¤\decollator4¤ appears after formula~26.
+\Eend0
+
+
+% %%%%%%%%%%%
+\beginsection 7. Input of formulas using the ``short form''
+
+This input format reduces the amount of typing compared to the
+symbolic representation. It follows given rules and produces as an
+intermediate step the code of the symbolic representation.
+
+The input is recursively entered using four constructions:
+\smallskip
+\item{1.}{\tt=<}sign{\tt>\char"7B<}formula{\tt>\char"7D} to add a
+signed content stroke in front of a formula;
+\item{2.}{\tt<}sign{\tt><}sign{\tt>\char"7B<}formula{\tt>\char"7D<}%
+ sign{\tt>\char"7B<}formula{\tt>\char"7D}
+to build a signed condition from two signed formulas;
+\item{3.}{\tt*<}sign{\tt><}character{\tt><}sign{\tt>\char"7B<}%
+ formula{\tt>\char"7D} to add a signed
+concavity in front of a signed formula;
+\item{4.}{\tt!\char92<}nameofdef{\tt><}arguments{\tt>} to insert a
+previously defined subformula.
+
+\noindent
+Here {\tt<}formula{\tt>} is either a valid formula constructed with
+the four rules or a terminal string (both are typeset in math mode)
+and {\tt<}sign{\tt>} is one of the following symbols:
+\item{\tt.} represents no sign;
+\item{\tt-} represents the negation;
+\item{\tt+} represents the affirmation.
+
+In rule~4 {\tt<}nameofdef{\tt>} is together with the preceding
+backslash a defined control word that has at most three arguments
+given in {\tt<}arguments{\tt>}. The control word must define a part
+of a formula. This rule implements {\sl macro expansion\/} to avoid
+retyping of often used parts in formulas.
+
+Most formulas are created by rules~2 and~3; rule~1 is only needed to
+type a single line.
+
+{\it Important note\/}: The braces around {\tt<}formula{\tt>} can be
+omitted if the formula is a terminal string that consists of a single
+token. Double curly braces are required around terminal strings that
+have more than five tokens. But single braces must always be used for
+formulas in rules 1--3, which are not terminal strings. (In Example~5
+below case~i shows that a single token needs no braces. The cases ii
+and~iii show the use of single and double curly braces.)
+
+Formulas that are created by the above rules must be given to the
+following commands:
+\smallskip
+\item{1.}¤\frege<j>{<f>}¤ where {\tt<f>} is a formula created by the above
+stated rules and {\tt<j>} is either `{\tt.}'\ or `{\tt|}'.
+\item{2.}¤\formula p<n><j>{<f>}¤ adds a position parameter {\tt<p>} to
+move the formula {\tt<n>} units to the right.
+
+\noindent
+The formula {\tt<f>} is output as a judgment if {\tt<j>} equals
+{\tt|}. The command ¤\frege¤ shall be used in running text,
+¤\formula¤ in vertical mode. But ¤\frege¤ doesn't start a paragraph;
+use ¤\indent¤ (or ¤\noindent¤) if ¤\frege¤ is the first item
+in a paragraph.
+
+\Example5
+\def\0#1{*.a.{#1(\da)}}
+Here are a few examples for all four rules:
+\smallskip
+\advance\leftskip by 20pt
+\item{i)}¤\frege|{=-\gA}¤ outputs \frege|{=-\gA}.
+\item{ii)}¤\frege.{-.\gA-{{g(\ka,\kb)}}}¤ outputs \frege.{-.\gA-{{g(\ka,\kb)}}}.
+\item{iii)}¤\frege.{*-a+{f(\da)}}¤ outputs \frege.{*-a+{f(\da)}}.
+\item{iv)}¤\def\0#1{*.a.{#1(\da)}}¤ together with ¤\frege|{-.\gA-{!\0f}}¤
+outputs \frege|{-.\gA-{!\0f}}.
+\smallskip
+\advance\leftskip by -20pt
+The output of iv) is nearly the formula of Section~1 (\frege|{..\gA.{!\0f}});
+it can be coded (without ¤\0¤) as ¤\frege|{..\gA.{*.a.{f(\da)}}}¤.
+\Eend0
+
+Of course, a formula in Frege's notation that has several lines is not
+easy to read in a sequential form. The periods and braces do not help
+to make the structure of that formula easy to recognize.
+I suggest to copy a Frege formula from left to right and from bottom
+to top and to use more than one line for the sequential coding.
+
+\Example6
+This example shows how to construct in a structured manner the short
+form of a given formula, which is written in Frege's notation.
+The formula is \frege|{.-{..\gA.\gB}.{*.a.{..\gG-\gD}}}.
+
+Step~1: The formula is a judgment and starts at the left with a
+condition, whose upper line contains a negation indicator.
+So the coding starts with
+\verbatim
+\frege|{.-{}.{}}
+\endverbatim
+
+Or write it in two lines to make the structure visible:
+\verbatim
+\frege|{.-{}
+ .{}}
+\endverbatim
+
+Step~2: The bottom part starts with a concavity, so the input becomes
+\verbatim
+\frege|{.-{}
+ .{*.a.{}}}
+\endverbatim
+
+Step~3: A simple condition comes after the concavity
+\verbatim
+\frege|{.-{}
+ .{*.a.{..\gG-\gD}}}
+\endverbatim
+
+And the final step is to add the condition in the upper part:
+\verbatim
+\frege|{.-{..\gA.\gB}
+ .{*.a.{..\gG-\gD}}}
+\endverbatim
+\medskip
+{\it Note\/}: The input
+\verbatim
+\frege|{..{-.\gA.\gB}
+ .{*.a.{..\gG-\gD}}}
+\endverbatim
+outputs
+\frege|{..{-.\gA.\gB}
+ .{*.a.{..\gG-\gD}}},
+which looks very similar to the given formula but, of course,
+the negation indicator in the upper part has moved a little bit
+to the right.
+\Eend0
+
+
+% %%%%%%%%%%%
+\beginsection 8. Inferences of the Begriffsschrift in the ``short form''
+
+Five commands are available to typeset inferences with the short form:
+\smallskip
+\item{1.}¤\outof p<n>,<o>"<m>"with<r>\thatis¤ starts the inference chain.
+The parameter {\tt<n>} is the number of units the output is moved to
+the right, {\tt<m>} is a number of a formula, {\tt<o>} is an offset to
+position the number {\tt<m>} {\tt<o>} lines lower, and {\tt<r>} is
+either empty or a space separated list of pairs {\tt v:F} to indicate
+the substitution of {\tt v} by the formula {\tt F}.
+\item{2.}¤\use p<n>"<m>"¤ is a shortcut of ¤\outof¤ if the parameters {\tt<o>}
+and {\tt<r>} are not needed; {\tt<o>} is set 0 and {\tt<r>} is empty.
+\item{3.}¤\followswith p<n>"<m>"a<c>p<N>s<l>¤ draws the inference rule and
+can be expressed in the ¤\bcc¤ macro of Section~6, no~7, as
+¤\bcc{<n>}/m{<m>}:<c>\rep(<N>-<n>)\*___\rep{<l>}\*---\ecc¤.
+\item{4.}¤\substituting p<n> <r>\whichgives¤ has the usual position parameter
+{\tt<n>} and a list of substitutions {\tt<r>} in the above described form {\tt
+v:F}.
+\item{5.}¤\named "<m>"¤ outputs the number {\tt<m>} as the number of the
+previous formula.
+
+An inference chain is typically typed with the sequence:
+\verbatim
+\outof ... with ... \thatis
+\formula ...
+\followswith ...
+\substituting ... \whichgives
+\formula ...
+\named ...
+\endverbatim
+
+\noindent
+or if no substitution in the first formula is required, the ¤\outof¤ line
+is replaced by the simpler ¤\use¤.
+
+\Example7
+The formula of Example~3
+\smallskip
+\outof p4,0"58"with f(A):{..{f(A)}.{g(A)}}
+ c:b
+\thatis
+\formula p8|{..{..{f(b)}.{g(b)}}
+ .{*.a.{..{f(\da)}.{g(\da)}}}}
+\followswith p4"30"a.p8s6
+\substituting p4 a:{f(b)}
+ c:{g(b)}
+ b:{*.a.{..{f(\da)}.{g(\da)}}}
+\whichgives
+\formula p8|{..{..{*-a.{..{f(\da)}.{g(\da)}}}
+ -{f(b)}}
+ .{g(b)}}
+\named "59"
+
+\bigskip
+has this coding:
+\verbatim
+\outof p4,0"58"with f(A):{..{f(A)}.{g(A)}}
+ c:b
+\thatis
+\formula p8|{..{..{f(b)}.{g(b)}}
+ .{*.a.{..{f(\da)}.{g(\da)}}}}
+\followswith p4"30"a.p8s6
+\substituting p4 a:{f(b)}
+ c:{g(b)}
+ b:{*.a.{..{f(\da)}.{g(\da)}}}
+\whichgives
+\formula p8|{..{..{*-a.{..{f(\da)}.{g(\da)}}}
+ -{f(b)}}
+ .{g(b)}}
+\named "59"
+\endverbatim\Eend1
+
+
+% %%%%%%%%%%%
+\beginsection 9. Terminal symbols of the Begriffsschrift
+
+In part~3 of the {\it Begriffsschrift\/} four symbols are
+defined. They are available as \TeX\ commands. The commands get more
+flexibility than the {\it Begriffsschrift\/} requires as all possible
+content can be addressed by parameters.
+
+\item{1.}¤\gfvererbe¤ with four parameters:
+¤$\gfvererbe\kd\ka{x(\ka)}{f(\kd,\ka)}$¤ outputs
+$\gfvererbe\kd\ka{x(\ka)}{f(\kd,\ka)}$.
+\item{2.}¤\gffolgt¤ with three parameters:
+¤$\gffolgt\kg\kb{f(x_\kg,y_\kb)}$¤ outputs $\gffolgt\kg\kb{f(x_\kg,y_\kb)}$.
+\item{3.}¤\gfgehoertan¤ with three parameters:
+¤$\gfgehoertan\kg\kb{f(x_\kg,z_\kb)}$¤ outputs
+$\gfgehoertan\kg\kb{f(x_\kg,z_\kb)}$.
+\item{4.}¤\gfeindeutig¤ with three parameters:
+¤$\gfeindeutig\kd\ke{f(\kd,\ke)}$¤ outputs $\gfeindeutig\kd\ke{f(\kd,\ke)}$.
+
+\noindent
+I use shortcuts for these special terminal symbols and reduce the
+number of parameters to the amount that is used in the text;
+see Example~11 below.
+
+
+% %%%%%%%%%%%
+\beginsection 10. Output style of the Grundgesetze
+
+\toggleGGstyle
+Frege made changes to the notation in his main work. A command and
+several flags are defined to switch from the style of the {\it
+Begriffsschrift\/} to the style of the {\it Grundgesetze}.
+\smallskip
+\item{1.}¤\toggleGGstyle¤ switches the styles; the default is the style of
+the {\it Begriffsschrift}. Several of the changes are global so even
+if the switch is made inside a group it shall be called a second time
+to switch it back. This happens when it is called for the first time:
+\itemitem{a)}¤\gfbsuseGGstyletrue¤ is set. Together with a call to
+¤\gfbsneuestriche¤ the thickness of the lines is changed.
+\itemitem{b)}¤\gfbskompakttrue¤ is set. This reduces the width of the formulas
+that are input with the short form.
+\itemitem{c)}¤\gfggschlussweisetrue¤ is set. This activates more symbols
+to express the eight inferences of the {\it Grundgesetze\/} (see Section~12).
+\itemitem{d)}¤\gfbsfonoohnepunkttrue¤ is set. No period after the number of
+a formula is set in ¤\fono¤ or ¤\named¤.
+\itemitem{e)}¤\gfbsnegdirekttrue¤ is set. The negation indicator touches
+the content stroke.
+\item{2.}The flags can be set individually, for example, to get a compact output
+but keep the line thicknesses etc.\ of the {\it Begriffsschrift}.
+\item{3.}To control the compact output of the generality when the flag
+¤\gfbskompakttrue¤ is set more flags are available. Examples are given to
+show how these flags influences the output.
+\itemitem{$\alpha$)}The output is not compact if ¤\gfbskeinekompaktehoehlungtrue¤
+is set. At the left the flag is false and at the right true; the source code
+is ¤\frege|{..{*-a.{\gY(\da)}}.{*.e.{\gF(\de)}}}¤:
+\smallskip\indent\indent
+{\gfbskompakttrue \gfbskeinekompaktehoehlungfalse
+\frege|{..{*-a.{\gY(\da)}}.{*.e.{\gF(\de)}}}
+}\quad
+{\gfbskompakttrue \gfbskeinekompaktehoehlungtrue
+\frege|{..{*-a.{\gY(\da)}}.{*.e.{\gF(\de)}}}
+}.
+\itemitem{$\beta$)}The output of the short form rule~1 (with the {\tt=}) can
+have no effect except if the flag named ¤\gfbsaussagesichtbartrue¤ is set.
+At the left the flag is false and at the right true; the line reads
+¤\frege.{=.a} vs \frege.{=.{=.a}}¤:
+{\gfbskompakttrue \gfbsaussagesichtbarfalse
+\frege.{=.a} vs \frege.{=.{=.a}}
+}\quad
+{\gfbskompakttrue \gfbsaussagesichtbartrue
+\frege.{=.a} vs \frege.{=.{=.a}}
+}
+
+{\it Note\/}: Both input forms, the symbolic representation and the
+short form, can be used with this style. But only the short form
+creates smaller formulas if ¤\gfbscompakttrue¤ is set. The width of a
+formula in symbolic representation must be changed manually if it is
+not coded with the symbols of the last list in Section~5.
+
+\Example8
+Here is the example of Sections 1 and~5; it is coded in the
+short form as ¤\frege|{..\gA.{*.a.{f(\da)}}}¤:
+\frege|{..\gA.{*.a.{f(\da)}}}.
+\Eend0
+
+
+% %%%%%%%%%%%
+\beginsection 11. Setting formulas in parentheses and brackets (Grundgesetze)
+
+In the {\it Grundgesetze\/} some formulas must be placed in
+parentheses or brackets. A few commands are provided to make this an
+easy task.
+\smallskip
+\item{1.}¤\pfrege<x><j>{<f>}¤ acts like ¤\frege<j>{<f>}¤ and adds parentheses around
+this formula. The result is stored in a box with the number {\tt<x>}. In total
+there are four boxes for this task.
+\item{2.}¤\bfrege<y><j>{<f>}¤ is like ¤\pfrege¤ but the formula is placed between
+brackets. The pool of boxes is independent from the ¤\pfrege¤ boxes and there are
+four boxes.
+\item{3.}¤\pparens<x><M>¤ places the math {\tt<M>} with parentheses in the box
+numbered {\tt<x>}. The boxes are taken from the pool that is available for
+¤\pfrege¤.
+\item{4.}¤\bparens<y><M>¤ acts like ¤\pparens¤ but it uses brackets and the
+pool of boxes of ¤\bfrege¤.
+\item{5.}¤\pfbox<x>¤ outputs box number {\tt<x>} from the ¤\pfrege¤ pool.
+\item{6.}¤\bfbox<y>¤ outputs the box {\tt<y>} from the pool used by ¤\bfrege¤.
+
+\Example9
+The following formula appears on page~115 of the {\it Grundgesetze},
+vol.~1.
+\Epause
+\smallskip
+\begingroup
+\pfrege1.{.-{\ke=c}.{\ke\G^v}}
+\pfrege2.{.-{\ke=b}.{\ke\G^u}}
+\bfrege1.{-.{\ke=n}.{{\ke\G^\kesl\pfbox1}}}
+\bfrege2.{-.{\ke=m}.{{\ke\G^\kesl\pfbox2}}}
+\bfrege3.{--{{\ke\G^(\ka\G^q)}}-{..{\ke=b}-{\ka=c}}}
+\pfrege1.{-.{\ke=n}.{{\ke\G^\kesl\pfbox1}}}
+\pfrege2.{-.{\ke=m}.{{\ke\G^\kesl\pfbox2}}}
+\pparens3{\kesl\bfbox1\G^\G>q}
+\pparens4{\bfbox1\G^\G>\kasl\kesl\bfbox3}
+
+$$\frege|{..{..{..{{\kesl\pfbox2\G^\pfbox4}}
+ -{{b\G^\kesl\pfbox2}}}
+ -{{c\G^\kesl\pfbox1}}}
+ .{{\kesl\pfbox2\G^\pfbox3}}}
+$$
+\endgroup
+\Econt
+And here is the source:
+\verbatim
+\pfrege1.{.-{\ke=c}.{\ke\G^v}}
+\pfrege2.{.-{\ke=b}.{\ke\G^u}}
+\bfrege1.{-.{\ke=n}.{{\ke\G^\kesl\pfbox1}}}
+\bfrege2.{-.{\ke=m}.{{\ke\G^\kesl\pfbox2}}}
+\bfrege3.{--{{\ke\G^(\ka\G^q)}}-{..{\ke=b}-{\ka=c}}}
+\pfrege1.{-.{\ke=n}.{{\ke\G^\kesl\pfbox1}}}
+\pfrege2.{-.{\ke=m}.{{\ke\G^\kesl\pfbox2}}}
+\pparens3{\kesl\bfbox1\G^\G>q}
+\pparens4{\bfbox1\G^\G>\kasl\kesl\bfbox3}
+\endverbatim\smallskip\verbatim
+$$\frege|{..{..{..{{\kesl\pfbox2\G^\pfbox4}}
+ -{{b\G^\kesl\pfbox2}}}
+ -{{c\G^\kesl\pfbox1}}}
+ .{{\kesl\pfbox2\G^\pfbox3}}}
+$$\endverbatim\Eend1
+
+
+% %%%%%%%%%%%
+\beginsection 12. Inferences of the Grundgesetze
+
+The list entry~1c of Section~10 needs some explanation as it extends
+the list of available symbols for inferences. Two of the symbols have
+no output ({\tt?}\ and {\tt>}). In the following list the text in
+parentheses contains the sequence ¤\*?#"¤ or ¤\*?>#¤ for the symbol
+`{\tt\#}'.
+\smallskip
+\item{\tt ?} (must be the first in the triple) signals that the next
+two symbols build an inference line in the style of the {\it
+Grundgesetze\/}. Such symbols use 50\% more space than ordinary symbols.
+\item{\tt -}(\*?-") is a single horizontal stroke;
+\item{\tt .}(\*?.") is a single (centered) period;
+\item{\tt =}(\*?=") is a double stroke;
+\item{\tt *}(\*?*") is a single stroke in the height of the upper line of the
+double stroke;
+\item{\tt\char95 }(\*?_") is an empty space;
+\item{\tt "}(\*?"") is a skip;
+\item{\tt >}has no output; the next symbol must be a {\sl transition-sign\/}:
+\itemitem{\tt x}(\*?>x) it must follow a {\tt >};
+\itemitem{\tt u}(\*?>u) it must follow a {\tt >}.
+
+\noindent
+Inferences of the {\it Grundgesetze\/} are separated by a new type of line:
+\item{1.}¤\separator¤ outputs a thick line with a centered dot.
+
+\Example{10}
+Here is an inference chain from the {\it Grundgesetze\/}:
+\smallskip
+\advance\rightskip by 2\rightskip
+\use p3"III"
+\formula p5|{.-{*.f.{..{\df(a)}.{\df(a)}}}-{a=a}}
+\nlp{6.5}\*?>x
+\formula p5|{..{a=a}.{*.f.{..{\df(a)}.{\df(a)}}}}
+\named "$\ka$"
+\separator
+\use p3"I"
+\formula p5|{..{f(a)}.{f(a)}}
+\nlp5\*?_"\*?>u
+\formula p5|{*.f.{..{\df(a)}.{\df(a)}}}
+\named"$\kb$"
+\bcc3/m$\ka$:.\*__"\rep3\*?--\ecc
+\formula p5|{=.{a=a}}
+\named"IIIe"
+
+\rightskip=\leftskip
+\medskip
+And this is the code:
+\verbatim
+\use p3"III"
+\formula p5|{.-{*.f.{..{\df(a)}.{\df(a)}}}-{a=a}}
+\nlp{6.5}\*?>x
+\formula p5|{..{a=a}.{*.f.{..{\df(a)}.{\df(a)}}}}
+\named "$\ka$"
+\separator
+\use p3"I"
+\formula p5|{..{f(a)}.{f(a)}}
+\nlp5\*?_"\*?>u
+\formula p5|{*.f.{..{\df(a)}.{\df(a)}}}
+\named"$\kb$"
+\bcc3/m$\ka$:.\*__"\rep3\*?--\ecc
+\formula p5|{=.{a=a}}
+\named"IIIe"
+\endverbatim\Eend1
+
+
+% %%%%%%%%%%%
+\beginsection 13. Terminal symbols of the Grundgesetze
+
+The {\it Grundgesetze\/} has not such complex constructions as the
+{\it Begriffsschrift\/} (see Section~9). But it contains a lot of
+special symbols.
+\smallskip
+\settabs 2 \columns
+\def\hsnor#1.{\hbox to 3em{\hss#1.}\ }
+\+\hsnor1.¤\G!¤: $\G!\kx$.&
+\hsnor16.¤\Gfm¤: $u\Gfm q$.\cr
+\+\hsnor2.¤\kasl¤: $\kasl\gF(\ka)$.&
+\hsnor17.¤\Gsm¤: $p\Gsm q$.\cr
+\+\hsnor3.¤\G^¤: $a\G^b$.&
+\hsnor18.¤\G<¤: $p\G<q$.\cr
+\+\hsnor4.¤\GI¤: $\GI p$.&
+\hsnor19.¤\Gy¤: $p\Gy q$.\cr
+\+\hsnor5.¤\G>¤: $\G>p$.&
+\hsnor20.¤\Ge¤: $p\Ge q$.\cr
+\+\hsnor6.¤\GU¤: $\GUorg p$ (or $\GU p$).&
+\hsnor21.¤\Gc¤: $p\Gc q$.\cr
+\+\hsnor7.¤\Gn¤: $\Gnorg u$ (or $\Gn u$).&
+\hsnor22.¤\Gmf¤: $p\Gmf q$.\cr
+\+\hsnor8.¤\G0¤: $\G0$.&
+\hsnor23.¤\G*¤: $\G*t$.\cr
+\+\hsnor9.¤\G1¤: $\G1$.&
+\hsnor24.¤\G6¤: $\G6s$.\cr
+\+\hsnor10.¤\Gbf¤ or ¤\Gff¤: $\Gbf$.&
+\hsnor25.¤\Gf¤: $\Gf s$.\cr
+\+\hsnor11.¤\G-¤: $\G-q$.&
+\hsnor26.¤\GF¤: $s\GF u$.\cr
+\+\hsnor12.¤\G~¤: $\G~q$.&
+\hsnor27.¤\Gl¤: $s\Gl u$.\cr
+\+\hsnor13.¤\G_¤: $p\G_q$.&
+\hsnor28.¤\Gp¤: $\Gp s$.\cr
+\+\hsnor14.¤\Guu¤: $\Guu$.&
+\hsnor29.¤\Gss¤ or ¤\Gsz¤: $s\Gss p$.\cr
+\+\hsnor15.¤\G;¤: $o\G;a$.\cr
+
+\noindent
+The symbols are constructed with the Computer Modern
+and \AmSTeX\ fonts. But with the external flag ¤\fgefontsknown¤ the
+second symbol in numbers 6 and 7 is selected (see Section~3).
+
+Several symbols are rotated and this requires the package {\tt
+rotate.tex}. The output of unrotated symbols is activated by default;
+the external flag ¤\let\showrotation=t¤ must be given to activate
+rotation (see Section~3).
+\toggleGGstyle
+
+
+% %%%%%%%%%%%
+\beginsection 14. Typesetting definitions
+
+The following command is provided to typeset definitions:
+\smallskip
+\item{1.}¤\gfdefinition p<n><J> <j>{<f>}=<e>¤ outputs the formula
+¤\frege<j>{<f>}¤ in parentheses and sets it equal to the new symbol
+{\tt<e>} if the parameter {\tt<J>} is either {\tt|} to type a judgment
+or {\tt.}\ for a definition. In the style of the {\it Grundgesetze\/}
+the parameter {\tt<J>} can also be {\tt:}. In this case write ¤<j><f>¤
+and this is interpreted as a math formula and not as a formula created
+by ¤\frege¤. The parameter {\tt<n>} is the position parameter to move
+the output the given amount of units to the right.
+
+\noindent
+The output of a definition depends on the style.
+
+\Example{11}
+The definition in formula~69 of the {\it Begriffsschrift\/} is:
+\smallskip
+\def\1#1{{\gfvererbe\kd\ka{#1(\ka)}{f(\kd,\ka)}}}
+\gfdefinition p4. .{*.d.{..{*.a.{..{F(\da)}.{{f(\dd,\da)}}}}.{F(\dd)}}}={\1F}
+\smallskip
+In the style of the {\it Grundgesetze\/} the output is:
+\smallskip
+\toggleGGstyle
+\def\1#1{{\gfvererbe\kd\ka{#1(\ka)}{f(\kd,\ka)}}}
+\gfdefinition p4. .{*.d.{..{*.a.{..{F(\da)}
+ .{{f(\dd,\da)}}}}
+ .{F(\dd)}}}={\1F}
+\toggleGGstyle
+\smallskip
+And here is the source (note that ¤\1¤ is a normal macro and needs no
+macro expansion):
+\verbatim
+\def\1#1{{\gfvererbe\kd\ka{#1(\ka)}{f(\kd,\ka)}}}
+\gfdefinition p4. .{*.d.{..{*.a.{..{F(\da)}
+ .{{f(\dd,\da)}}}}
+ .{F(\dd)}}}={\1F}
+\endverbatim\Eend1
+
+\Example{12}
+Here is an example of the {\it Grundgesetze}, in which the {\tt<J>} is
+a colon.
+\smallskip
+\advance\rightskip by 2\rightskip
+\toggleGGstyle
+\gfdefinition p4: \kesl(o\G^(a\G^\ke))={o\G;a}
+\named "$\gX$"
+\toggleGGstyle
+\smallskip
+\rightskip=\leftskip
+And this is the source:
+\verbatim
+\gfdefinition p4: \kesl(o\G^(a\G^\ke))={o\G;a}
+\named "$\gX$"
+\endverbatim\Eend1
+
+
+% %%%%%%%%%%%
+\beginsection 15. Commands to improve page breaks
+
+The formulas are never broken. A page or column break must appear
+at a decollator, separator, or after an inference rule. To gain some
+space the formulas can be typeset in a smaller height and depth.
+(¤\offinterlineskip¤ should be set.)
+\smallskip
+\item{1.}¤\gfbssetzeabstand<h><d>¤ sets the height and depth between the lines to
+{\tt<h>}\thinspace pt and {\tt<d>}\thinspace pt, resp.;
+\item{2.}¤\gfbsreduziereabstandum<nn>¤ reduces the height and depth each by {\tt<nn>}\%
+({\tt<nn>} is a two-digit number);
+\item{3.}¤\gfbsabstandzuruecksetzen¤ sets height and depth to the values of ¤\strutbox¤.
+
+\Example{13}
+The right formula uses ¤\gfbsreduziereabstandum20¤:
+\smallskip
+\begingroup
+\offinterlineskip
+\setbox0=\hbox to .3\hsize{\vtop to 30pt{%
+ \nlp4\*_[-\*-:-\*---\ce{$a$}
+ \nlp4\*___\*_'-\*-:-\ce{$c$}
+ \nlp4\*___\*___\*_'-\ce{$e$}\vss}\hss}
+\setbox1=\hbox to .3\hsize{\vtop to 30pt{%
+ \nlp1\*_[-\*-:-\*---\ce{$a$}
+ \gfbsreduziereabstandum20
+ \nlp1\*___\*_'-\*-:-\ce{$c$}
+ \nlp1\*___\*___\*_'-\ce{$e$}\vss}\hss}
+\centerline{\box0 \box1 }
+\gfbsabstandzuruecksetzen
+\endgroup
+
+And this is the code:
+\verbatim
+\offinterlineskip
+\setbox0=\hbox to .3\hsize{\vtop to 30pt{%
+ \nlp4\*_[-\*-:-\*---\ce{$a$}
+ \nlp4\*___\*_'-\*-:-\ce{$c$}
+ \nlp4\*___\*___\*_'-\ce{$e$}\vss}\hss}
+\setbox1=\hbox to .3\hsize{\vtop to 30pt{%
+ \nlp1\*_[-\*-:-\*---\ce{$a$}
+ \gfbsreduziereabstandum20
+ \nlp1\*___\*_'-\*-:-\ce{$c$}
+ \nlp1\*___\*___\*_'-\ce{$e$}\vss}\hss}
+\centerline{\box0 \box1 }
+\gfbsabstandzuruecksetzen
+\endverbatim\Eend1
+
+
+% %%%%%%%%%%%
+\beginsection 16. List of parameters
+
+Nearly all aspects of the lines that build the structure of Frege's
+notation is controlled by parameters. They can be changed to fit
+better with a certain type of font. But note that a couple of tests
+have been made with these values to guarantee, for example, that the
+affirmation can be placed in front of a quantification.\\
+
+\noindent
+Here is the list of registers that make up the style of the
+{\it Begriffsschrift}.
+\item{1.}$¤\gfbsvolleeinheit¤=\rm0.57\,em$; width of one ¤\*¤ triple
+\item{2.}$¤\gfbsraise¤=\rm0.5\,ex$; height of the horizontal line
+\item{3.}$¤\gfbsneg¤=\rm0.25\,ex$; height of the negation indicator
+\item{4.}$¤\gfbsstrichdicke¤=\rm0.5\,pt$; thickness of the horizontal line
+\item{5.}$¤\gfbsurteildicke¤=\rm1\,pt$; thickness of the judgment stroke\\
+\item{6.}$¤\gfbsuht¤=\rm1.5\,ex$; height of the judgment stroke\\
+\item{7.}$¤\gfbsudp¤=\rm0.5\,ex$; depth of the judgment stroke\\
+\item{8.}$¤\gfbsersetzungdicke¤=\rm0.8\,pt$; thickness of the substitution line\\
+\item{9.}$¤\gfbsdefdicke¤=\rm0.75\,pt$; thickness of the definition strokes
+\item{10.}$¤\gfbsschlussabstand¤=\rm2.5\,pt$; distance of double lines in an inference
+\item{11.}$¤\gfbsschlussdicke¤=\rm0.8\,pt$; thickness of the second line in an inference
+\item{12.}$¤\gfbsdpabstand¤=\rm0.2\,em$; distance between colons in front of an inference
+\smallskip
+\item{13.}$¤\gfbsmaxanzahlzeilen¤=25$; the maximal amount of lines
+in a single formula of the short form (the package declares for each
+line one or two token and skip registers; two registers of each kind
+are needed if substitutions are allowed);
+\item{14.}$¤\gfbsnegpct¤=70$; when ¤\ifgfbsnegdirect¤ is set to false the negation
+indicator has only a height of this percentage so that a gap occurs.
+\smallskip
+\noindent
+And this is the list of additional dimen parameters for the style of
+the {\it Grundgesetze}.
+\item{15.}$¤\gfggstrichdicke¤=\rm0.58\,pt$; common line thickness
+\item{16.}$¤\gfggraise¤=\rm0.14\,ex$; height of horizontal line
+\item{17.}$¤\gfggneg¤=\rm0.47\,ex$; height of negation indicator
+\item{18.}$¤\gfgguht¤=\rm1.4\,ex$; height of the judgment stroke
+\item{19.}$¤\gfggudp¤=\rm0.9\,ex$; depth of the judgment stroke
+\item{20.}$¤\gfggdpabstand¤=\rm0.06\,em$; distance between colons in front of an inference
+
+
+% %%%%%%%%%%%
+\beginsection 17. Related work
+
+Other people have worked on the problem to typeset Frege's notation
+in \TeX\ too. J.~Parsons has developed a package {\it begriff.sty\/}
+for \LaTeX\ (see [7]). Later the package was improved by
+Q.~Pamp~([8]). A team that translated the {\it Grundgesetze\/} created
+its own package from {\it begriff.sty\/} and called it {\it
+grundgesetze.sty\/} (see [9]). It uses the fonts [5] that J.~J.~Green
+has developed for the special terminal symbols in the {\it
+Grundgesetze}.
+
+
+% %%%%%%%%%%%
+\beginsection 18. References
+
+\raggedright\frenchspacing
+\item{[1]}Gottlob Frege,
+ {\sl Begriffsschrift, eine der arithmetischen nachgebildete Formelsprache
+ des reinen\hfil\break Denkens\/}
+ (Halle an der Saale: Louis Nebert, 1879)
+\item{}``Begriffsschrift, a formula language, modeled upon that of arthmetic, for
+ pure thought,'' in: Jean van Heijenoort (ed.),
+ {\sl From Frege to G\"odel: A Sourcebook in Mathematical Logic,
+ 1879--1931\/},\hfil\break(Cambridge, MA: Harvard University Press, 1967), 1--82;
+ translation by S. Bauer-Mengelberg
+
+\item{[2]}Gottlob Frege,
+ {\sl Grundgesetze der Arithmetik --- begriffsschriftlich abgeleitet\/}
+ (Jena: Hermann Pohle, Volume 1 1893, Volume 2 1903)
+\item{}{\sl Basic Laws of Arithmetic\/} (Oxford: Oxford Univ. Press, 2013);
+ translation by Philip A. Ebert, Marcus Rossberg, Crispin Wright
+
+\item{[3]}American Mathematical Society, {\tt amstex},
+ ¤http://www.ams.org/publications/authors/tex/tex¤ or
+ ¤http://www.ctan.org/tex-archive/macros/amstex¤
+ (accessed: 2014-11-29)
+
+\item{[4]}{\tt rotate},
+ ¤http://www.ctan.org/tex-archive/macros/plain/contrib/misc¤
+ (accessed: 2014-11-29)
+
+\item{[5]}J. J. Green, {\tt fge},
+ ¤http://www.ctan.org/tex-archive/fonts/fge¤
+ (accessed: 2014-11-29)
+
+\item{[6]}Silvio Levy, ``Using Greek fonts with \TeX,''
+ TUGboat {\bf 9,1} (1988), 20--24
+
+\item{[7]}Josh Parsons, {\tt begriff.sty},
+ ¤http://www.ctan.org/tex-archive/macros/latex/contrib/begriff¤
+ (accessed: 2014-11-29)
+
+\item{[8]}Quirin Pamp, {\tt frege.sty},
+ ¤http://www.ctan.org/tex-archive/macros/latex/contrib/frege¤
+ (accessed: 2014-11-29)
+
+\item{[9]}Marcus Rossberg, {\tt grundgesetze.sty},
+ ¤http://www.ctan.org/tex-archive/macros/latex/contrib/¤\hfil\break¤grundgesetze¤
+ (accessed: 2014-11-29)
+
+\bye
+% Local Variables:
+% coding: iso-latin-9-unix
+% End:
diff --git a/Master/texmf-dist/doc/plain/gfnotation/README b/Master/texmf-dist/doc/plain/gfnotation/README
new file mode 100644
index 00000000000..04e678e9259
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/gfnotation/README
@@ -0,0 +1,33 @@
+GFnotation.tex implements macros to typeset formulas and inferences in
+Gottlob Frege's notation that is used in his book ``Begriffsschrift, eine
+der arithmetischen nachgebildete Formelsprache des reinen Denkens'' or
+in the style of his main work ``Grundgesetze der Arithmetik.''
+
+Besides the two output styles the macros provide two input styles. A
+``symbolic representation'' that codes each element of the notation
+with three symbols. And a ``short form'' that generates the notation
+recursively from a sequential input.
+
+This package is released under the GNU General Public License.
+See the file COPYING.
+
+
+The package requires the following files and packages from CTAN:
+
+ 1) amssym.def (from amstex)
+ 2) amsfonts
+ 3) rotate.tex
+ 4) fge fonts (optional)
+ You need item 4) to compile the users guide.
+
+
+The package consists of the following files:
+
+gfnotation.tex -- the macros for the notation
+ version 2.9, 29.03.2015
+gfnotation-doc.pdf -- a users guide
+gfnotation-doc.tex -- the source of the users guide
+README -- this file
+
+Copyright (C) 2015 Udo Wermuth (author)
+ u dot wermuth (at) icloud dot com
diff --git a/Master/texmf-dist/tex/plain/gfnotation/GFnotation.tex b/Master/texmf-dist/tex/plain/gfnotation/GFnotation.tex
new file mode 100644
index 00000000000..0b861634fed
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/gfnotation/GFnotation.tex
@@ -0,0 +1,2175 @@
+% This file is part of the CTAN package named gfnotation.
+%
+% GFnotation.tex: typeset G. Frege's notation of the Begriffsschrift or
+% the Grundgesetze der Arithmetik in plain TeX
+%
+% Copyright (C) 2015 Udo Wermuth (author)
+%
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
+\message{[(GFnotation.tex) Version 2.9 --- 29.03.2015 10:45]}
+% Werte für den Stil der Begriffsschrift
+% die Weite eines \*-Makroteils (Voreinstellung 0.57 em)
+\newdimen\gfbsvolleeinheit \gfbsvolleeinheit = 0.57 em
+% die Höhe der horizontalen Striche (Voreinstellung 0.5 ex)
+\newdimen\gfbsraise \gfbsraise = 0.5 ex
+% die Höhe des Negationstriches (Voreinstellung 0.25 ex)
+\newdimen\gfbsneg \gfbsneg = 0.25 ex
+% die Dicke der horizontalen Striche (Voreinstellung 0.5 pt)
+\newdimen\gfbsstrichdicke \gfbsstrichdicke = 0.5 pt
+% die Dicke des Urteilsstrichs (Voreinstellung 0.1 em)
+\newdimen\gfbsurteildicke \gfbsurteildicke = 0.1 em
+% die Höhe (ohne Strichdicke) (Voreinstellung 1.5 ex)
+\newdimen\gfbsuht \gfbsuht = 1.5 ex
+% die Tiefe des Urteilsstrichs (Voreinstellung 0.5 ex)
+\newdimen\gfbsudp \gfbsudp = 0.5 ex
+% die Dicke des Ersetzungsstrichs (Voreinstellung 0.08 em)
+\newdimen\gfbsersetzungdicke \gfbsersetzungdicke = 0.08 em
+% die Dicke eines Definitionsstrichs (Voreinstellung 0.075 em)
+\newdimen\gfbsdefdicke \gfbsdefdicke = 0.075 em
+% der Abstand der Striche bei Schlussketten (Voreinstellung 2.5 pt)
+\newdimen\gfbsschlussabstand \gfbsschlussabstand = 2.5 pt
+% und die Dicke des dickeren Striches (Voreinstellung 0.8 pt)
+\newdimen\gfbsschlussdicke \gfbsschlussdicke = 0.8 pt
+% der Abstand in Schlussweisen zwischen Doppelpunkten
+\newdimen\gfbsdpabstand \gfbsdpabstand = 0.2 em
+% Werte für den Grundgesetzestil
+% Einheitsstrichdicke (Voreinstellung 0.58 pt)
+\newdimen\gfggstrichdicke \gfggstrichdicke = 0.58 pt
+% Höhe des Inhaltsstriches (Voreinstellung 0.14 ex)
+\newdimen\gfggraise \gfggraise = 0.14 ex
+% Höhe Negationszeichen (Voreinstellung 0.47 ex)
+\newdimen\gfggneg \gfggneg = 0.47 ex
+% Höhe des Urteilsstriches (Voreinstellung 1.4 ex)
+\newdimen\gfgguht \gfgguht = 1.4 ex
+% Tiefe des Urteilstriches (Voreinstellung 0.9 ex)
+\newdimen\gfggudp \gfggudp = 0.9 ex
+% der Abstand in Schlussweisen zwischen Doppelpunkten
+\newdimen\gfggdpabstand \gfggdpabstand = 0.06 em
+% Prozentangabe für die Höhe eines kurzen Negationsstrichs
+\newcount\gfbsnegpct \gfbsnegpct=70
+% Die kompakte Notation benötigt für die Zeilen Register
+\newcount\gfbsmaxanzahlzeilen \gfbsmaxanzahlzeilen=25
+%
+% ab hier keine Änderungen vornehmen (außer am Ende Buchstaben)
+%
+% Setze folgendes Zeichen für Zeilenumbruch in Meldungen ein
+\newlinechar=`\^^J
+% Substitutionen können unterdrückt werden
+\newif\ifgfbskeinesubst
+\ifx t\nosubst
+ \message{^^JOK, substitutions are disabled^^J}%
+ \gfbskeinesubsttrue
+\else
+ \gfbskeinesubstfalse
+\fi
+\newif\ifggsymloaded
+\ifx t\fgefontsknown
+ \message{^^JThe family ggfam with the fge-fonts is active.^^J}%
+ \ggsymloadedtrue
+\else
+ \ggsymloadedfalse
+\fi
+\newif\ifggrotiere
+\ifx t\showrotation
+ \ggrotieretrue
+\else
+ \message{^^JRotated symbols are shown unrotated.^^J}%
+ \ggrotierefalse
+\fi
+\catcode`@=11
+\def\mynewfam{\alloc@8\fam\chardef\sixt@@n}
+\catcode`@=12
+\ifggsymloaded
+ \font\tengg=fgerm10 \font\tenggi=fgeit10
+ \font\ninegg=fgerm10 at 9pt \font\nineggi=fgeit10 at 9pt
+ \font\eightgg=fgerm10 at 8pt \font\eightggi=fgeit10 at 8pt
+ \mynewfam\ggfam
+\fi
+\font\nineeufm=eufm9
+\font\eighteufm=eufm8
+\font\sixeufm=eufm6
+\font\tencmmib=cmmib10 \skewchar\tencmmib='177
+\font\ninecmmib=cmmib9 \skewchar\ninecmmib='177
+\font\eightcmmib=cmmib8 \skewchar\eightcmmib='177
+\font\sevencmmib=cmmib7 \skewchar\sevencmmib='177
+\font\sixcmmib=cmmib6 \skewchar\sixcmmib='177
+\font\fivecmmib=cmmib5 \skewchar\fivecmmib='177
+\expandafter\ifx\csname cmmibfam\endcsname\relax
+ \mynewfam\cmmibfam
+\else
+ \message{^^JThe family cmmibfam is already defined.^^J}%
+\fi
+\font\tencmbsy=cmbsy10 \skewchar\tencmbsy='60
+\font\ninecmbsy=cmbsy9 \skewchar\ninecmbsy='60
+\font\eightcmbsy=cmbsy8 \skewchar\eightcmbsy='60
+\font\sevencmbsy=cmbsy7 \skewchar\sevencmbsy='60
+\font\sixcmbsy=cmbsy6 \skewchar\sixcmbsy='60
+\font\fivecmbsy=cmbsy5 \skewchar\fivecmbsy='60
+\expandafter\ifx\csname cmbsyfam\endcsname\relax
+ \mynewfam\cmbsyfam
+\else
+ \message{^^JThe family cmbsyfam is already defined.^^J}%
+\fi
+\font\sevenit=cmti7
+\font\sixit=cmti7 at 6pt
+\font\fiveit=cmti7 at 5pt
+\font\twelvei=cmmi10 at 12pt \skewchar\twelvei='177
+\def\hexno#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
+ 9\or A\or B\or C\or D\or E\or F\fi}
+\newtoks\gftextfontaenderung
+\newdimen\ufdimi \newdimen\ufdimii
+\def\bstenpoint{%
+ \scriptfont\itfam=\sevenit
+ \scriptscriptfont\itfam=\fiveit
+ \textfont\eufmfam=\teneufm
+ \scriptfont\eufmfam=\seveneufm
+ \scriptscriptfont\eufmfam=\fiveeufm
+ \textfont\cmmibfam=\tencmmib
+ \scriptfont\cmmibfam=\sevencmmib
+ \scriptscriptfont\cmmibfam=\fivecmmib
+ \textfont\cmbsyfam=\tencmbsy
+ \scriptfont\cmbsyfam=\sevencmbsy
+ \scriptscriptfont\cmbsyfam=\fivecmbsy
+ \ifggsymloaded
+ \textfont\ggfam=\tengg
+ \fi
+ \font\ffont=cmdunh10 at 8pt \font\nfont=cmsl12
+ \font\ufont=cmdunh10 at 9pt {\ufont\global\ufdimi=0.07em \global\ufdimii=0.5ex }%
+ \gftextfontaenderung={\textfont1=\twelvei \textfont\msbfam=\sevenmsb
+ \ifggsymloaded\textfont\ggfam=\tenggi\fi}}
+\def\bsninepoint{%
+ \scriptfont\itfam=\sixit
+ \scriptscriptfont\itfam=\fiveit
+ \textfont\eufmfam=\nineeufm
+ \scriptfont\eufmfam=\sixeufm
+ \scriptscriptfont\eufmfam=\fiveeufm
+ \textfont\cmmibfam=\ninecmmib
+ \scriptfont\cmmibfam=\sixcmmib
+ \scriptscriptfont\cmmibfam=\fivecmmib
+ \textfont\cmbsyfam=\ninecmbsy
+ \scriptfont\cmbsyfam=\sixcmbsy
+ \scriptscriptfont\cmbsyfam=\fivecmbsy
+ \ifggsymloaded
+ \textfont\ggfam=\ninegg
+ \fi
+ \font\ffont=cmdunh10 at 7pt \font\nfont=cmsl10 at 11pt
+ \font\ufont=cmdunh10 at 8pt {\ufont\global\ufdimi=0.11em \global\ufdimii=0.6ex }%
+ \gftextfontaenderung={\textfont1=\twelvei\textfont\msbfam=\sixmsb
+ \ifggsymloaded\textfont\ggfam=\nineggi\fi}}
+\def\bseightpoint{%
+ \scriptfont\itfam=\sixit
+ \scriptscriptfont\itfam=\fiveit
+ \textfont\eufmfam=\eighteufm
+ \scriptfont\eufmfam=\sixeufm
+ \scriptscriptfont\eufmfam=\fiveeufm
+ \textfont\cmmibfam=\eightcmmib
+ \scriptfont\cmmibfam=\sixcmmib
+ \scriptscriptfont\cmmibfam=\fivecmmib
+ \textfont\cmbsyfam=\eightcmbsy
+ \scriptfont\cmbsyfam=\sixcmbsy
+ \scriptscriptfont\cmbsyfam=\fivecmbsy
+ \ifggsymloaded
+ \textfont\ggfam=\eightgg
+ \fi
+ \font\ffont=cmdunh10 at 6pt \font\nfont=cmsl10
+ \font\ufont=cmdunh10 at 7pt {\ufont\global\ufdimi=0.16em \global\ufdimii=0.6ex }%
+ \gftextfontaenderung={\textfont1=\teni\textfont\msbfam=\fivemsb
+ \ifggsymloaded\textfont\ggfam=\eightggi\fi}}
+\bstenpoint
+\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em S$-\TeX}
+\newhelp\gfbskeinbuchstabeinhoehlunghilfe{%
+Either in the current or in the previously typed \string\* macro you must have^^J%
+used as the last symbol one of (1) \string$, %$%
+(2) \string., (3) \string,, (4) \string;,^^J%
+(5) \string`, (6) 7, or (7) \string @ and now a character is expected that is^^J%
+used as the variable for the ``for all''.}
+\newhelp\gfbsunbekanntessymbolhilfe{%
+The shown character is not handled by the \string\* macro.^^J%
+Here is the list of allowed characters:^^J%
+(1) \string" (nothing), (2) \string_ (empty box), (3) \string- (content stroke),^^J%
+(4) \string<, \string(, \string~, \string), or \string> (negation),
+(5) \string+, \string^, or \string/ (double negation),^^J%
+(6) \string: (then), (7) \string' (if), (8) \string! (connector then-if),^^J%
+(9) \string[ (judgement left), (10) \string] (judgement right),^^J%
+(11) \string| (substitution bar), (12) \string= (double inference rule),^^J%
+(13) \string. (half \string-), (14) \string, (half \string~), ^^J%
+(15) \string` (half \string~ moved left), (16) \string; (half \string+),^^J%
+(17) \string @ (for all), (18) \string$ (either \string. or half \string"),^^J% $
+(19) 0 (either \string( or \string)), (20) 1 (either \string^ or \string/),
+(21) 2 (either \string^ or \string+),^^J%
+(22) 3 , (23) 4 (either \string- or \string"),^^J%
+(24) 5 (either \string_ or \string"), (25) 6 (either \string[ or \string]),
+(26) 7 (either \string` or \string,),^^J%
+(27) 8 (either \string< or \string~), (28) 9 (only 1/3 of \string-).^^J%
+(13)-(16), and (26) signal a ``for all'' and must be paired^^J%
+(any combination allowed).^^J%
+(18) signals also a ``for all'' and must be paired with itself.}
+\newhelp\gfbshaelftehilfe{%
+After a signaled ``for all'' one of (1) \string., (2) \string,, (3) \string;,^^J%
+(4) \string`, or (5) 7 must directly follow the variable. These symbols must be^^J%
+paired in any combination around the character that is used as the^^J%
+variable in the ``for all''.}
+\newhelp\gfbsklammerhilfe{%
+A ``for all'' was signaled by a dollar sign. This must be followed by^^J%
+a dollar sign. The other symbols to signal the end of a ``for all''^^J%
+cannot be used here, that is \string., \string,, \string`, or \string; are not allowed.}
+\newhelp\gfggschlussweisehilfe{%
+The `\string?' cannot be used if the style is set to follow the Begriffsschrift.^^J%
+Either the style for the Grundgesetze must be used or the `\string?' sign has to^^J%
+be invoked: You have to set `\string\gfggschlussweisetrue' to use this command.^^J%
+You can activate the style of the Grundgesetze with the command \string\toggleGGstyle.}
+\newhelp\gfbszwischenzeichenhilfe{%
+A character for a single conclusion sign must be introduced by a `\string>'.^^J%
+The character was found but no `\string>' has been read before.}
+\newhelp\gfbszwischenzeichenfehlthilfe{%
+You have entered a `\string>' so that the next conclusion symbol must be^^J%
+either an `x' or an `u'.}
+\newhelp\gfbsunbekannterschlusshilfe{%
+The symbol is not allowed in a \string\*? macro. Here is a list of known symbols:^^J%
+(1) \string_ (empty box), (2) \string" (nothing), (3) \string- (single line),^^J%
+(4) \string. (single dot), (5) \string= (double line),^^J%
+(6) \string* (line and empty box as double line),^^J%
+(7) \string> (signal single character), (8) x (cross), and (9) u (brace).^^J%
+(8) and (9) must be signaled by (7).}
+\newhelp\gfbsnegwdhhilfe{%
+The repetition needs a nonnegative counter to output the^^J%
+text parameters. The negative value is ignored.}
+\newhelp\gfbspositionunbekannthilfe{%
+To position the formula number use either l for left, m for middle,^^J%
+or r for right.}
+\newhelp\gfbsdoppelpunkthilfe{%
+The number of colons (one or two) is given by the number of periods:^^J%
+the period gives one colon, the colon two.}
+\newhelp\gfbszuvieleparameterhilfe{%
+A statement has only three parameters. But here you have used more.^^J%
+The parameter is ignored but it might belong to the next construction^^J%
+and can cause more errors if the grouping was not correct.}
+\newhelp\gfbsfalschesvzhilfe{%
+A sign must be one of (1) \string-, (2) \string+, or (3) \string..^^J%
+They have the meaning negation, confirmation (double negation), and no sign, resp.}
+\newhelp\gfbskeinbuchstabeanhoehlungspositionhilfe{%
+A ``for all'' variable must be a letter.^^J%
+Other error messages from building the \string\*-macros will follow.}
+\newhelp\gfbsfalscherstarthilfe{%
+A formula must start either with `\string|' or `\string.'.^^J%
+The second parameter to \string\formel\space must be one of these characters.}
+\newhelp\gfbsnurterminalhilfe{%
+Only a terminal string was entered, no valid Frege formula found.}
+\newhelp\gfbsnurnullinaushilfe{%
+As substitutions are disabled, a number can only be written in the^^J%
+first line of a formula. The input is ignored and 0 is used instead.}
+\newhelp\gfbskeinesubsthilfe{%
+The last parameter is substitution information and should be empty.^^J%
+You have disabled the use of substitutions in the compact notation^^J%
+by asigning the value ``t'' to \string\nosubst. Don't make this setting^^J%
+before the package is loaded if you need substitutions.}
+\newhelp\gfbsleeresubsthilfe{%
+You cannot substitute a character by a space. Probably some space occurs^^J%
+directly after the colon that should be removed.}
+\newhelp\gfbszweiteposzugrosshilfe{%
+The position for the formel number must be to the left^^J%
+of the postition of the line. Assuming a small positive distance.}
+\newhelp\gfbskeinelaengehilfe{%
+The line denoting the conclusion can only be drawn if it^^J%
+has a positive length. More errors will follow.}
+\newhelp\gfbsdoppelpunktzahlhilfe{%
+The third symbol must be either a period or a colon to^^J%
+give the number of colons. More erros will follow.}
+\newhelp\gfbsposabstandhilfe{%
+The p-parameter of the substitution is not smaller than the^^J%
+p-parameter of the formula. A small distance is assumed, but^^J%
+that might result in a wrong output.}
+\newhelp\ggunbekannteboxnummer{%
+There are four boxes for \string\pfrege\space and \string\pparens, and^^J%
+four boxes for \string\bfrege\space and \string\bparens.^^J%
+To output a box \string\pfbox\space and \string\bfbox\space are used.^^J%
+The listed macros need as the first parameter a number^^J%
+in the range 1 and 4. Other numbers are ignored.}
+\newhelp\ggkeinbekanntessymbol{%
+Macro \string\G\space does not know how to handle the argument.}
+\newhelp\ggkeinvokalbuchstabe{%
+For a value-range the spiritus lenis must be applied to a^^J%
+lowercase greek vowel (\string\alpha, \string\epsilon).^^J%
+The greek letter is given as the argument of the macro and^^J%
+must be expresssed here by its latin representation,^^J%
+f.e., a for \string\alpha. Other letters are rejected.}
+% \ff ist der Formelnummernfont
+\let\ff=\rm
+\newdimen\gfbssdicke \newdimen\gfbsudicke
+\newdimen\gfbsddicke
+\newdimen\gfbsedicke \newdimen\gfbsfdicke
+\newdimen\gfbshoehe
+\newdimen\gfbsneght \newdimen\gfbsnegdp
+\gfbssdicke=\gfbsstrichdicke \gfbsudicke=\gfbsurteildicke
+\gfbsddicke=\gfbsdefdicke
+\gfbsedicke=\gfbsersetzungdicke \gfbsfdicke=\gfbsschlussdicke
+\gfbshoehe=\gfbsraise \gfbsnegdp=\gfbsneg
+% die Überlappung der Striche an den Fugen
+\newdimen\gfbsueberlappung \gfbsueberlappung = -0.001 em
+% eine \gfbseinheit ist um die Überlappung kleiner als die volle Einheit
+\newdimen\gfbseinheit \gfbseinheit = \gfbsvolleeinheit
+ \advance\gfbseinheit by \gfbsueberlappung
+% für zwei Einheiten wird ebenfalls ein Wert benötigt
+\newdimen\gfbszweiheit \gfbszweiheit = 2\gfbsvolleeinheit
+ \advance\gfbszweiheit by \gfbsueberlappung
+% aus drei Teilen wird ein Element erzeugt
+\newdimen\gfbselementdimen \gfbselementdimen = 3\gfbseinheit
+% die Gesamthöhe der horizontalen Striche
+\newdimen\gfbsht \newdimen\gfgght
+\gfbsht=\gfbshoehe \advance\gfbsht by \gfbssdicke \gfgght=\gfbsht
+% \gfbsrulefill ändert sich mit dem Stil, \gfggrulefill bleibt konstant
+\def\gfbsrulefill{\leaders\hrule height \gfbsht depth -\gfbshoehe\hfill}
+\def\gfggrulefill{\leaders\hrule height \gfgght depth -\gfbsraise\hfill}
+% die Strichdicke noch beim Urteilsstrich addieren
+\newdimen\gfbsfuht \newdimen\gfbsfudp
+\gfbsfuht=\gfbsuht \advance\gfbsfuht by \gfbssdicke
+\gfbsfudp=\gfbsudp
+% die Position der Schlussstriche berechnen
+\newdimen\gfbsos \newdimen\gfbsus
+\gfbsos=\gfbsschlussabstand \advance\gfbsos by \gfbsfdicke
+\gfbsus=\gfbsos \advance\gfbsus by -\gfbssdicke
+% und der Abstand bei Doppelpunkten
+\newdimen\gfbsdpa
+\gfbsdpa=\gfbsdpabstand
+\def\gfbsneuestriche{%
+ \ifgfbsuseGGstyle
+ \global\gfbssdicke=\gfggstrichdicke
+ \global\gfbsudicke=\gfggstrichdicke
+ \global\gfbsddicke=\gfggstrichdicke
+ \global\gfbsedicke=\gfggstrichdicke
+ \global\gfbsfdicke=\gfggstrichdicke
+ \global\gfbshoehe=\gfggraise
+ \global\gfbsnegdp=\gfggneg
+ \global\gfbsfuht=\gfgguht
+ \global\gfbsfudp=\gfggudp
+ \global\gfbsdpa=\gfggdpabstand
+ \else
+ \global\gfbssdicke=\gfbsstrichdicke
+ \global\gfbsudicke=\gfbsurteildicke
+ \global\gfbsddicke=\gfbsdefdicke
+ \global\gfbsedicke=\gfbsersetzungdicke
+ \global\gfbsfdicke=\gfbsschlussdicke
+ \global\gfbshoehe=\gfbsraise
+ \global\gfbsnegdp=\gfbsneg
+ \global\gfbsfuht=\gfbsuht
+ \global\gfbsfudp=\gfbsudp
+ \global\gfbsdpa=\gfbsdpabstand
+ \fi
+ \global\gfbsht=\gfbshoehe
+ \global\advance\gfbsht by \gfbssdicke
+ \gdef\gfbsrulefill{\leaders\hrule height \gfbsht depth -\gfbshoehe\hfill}%
+ \global\advance\gfbsfuht by \gfbssdicke
+ \global\gfbsos=\gfbsschlussabstand \global\advance\gfbsos by \gfbsfdicke
+ \global\gfbsus=\gfbsos \global\advance\gfbsus by -\gfbssdicke
+}
+\newif\ifgfbsuseGGstyle \gfbsuseGGstylefalse
+% true falls der Negationsstrich den Inhaltsstrich berühren soll
+\newif\ifgfbsnegdirekt \gfbsnegdirektfalse
+\newif\ifgfbshoehlung \gfbshoehlungfalse
+\newif\ifgfbskompakt \gfbskompaktfalse
+\newif\ifgfbszweitehaelfte \gfbszweitehaelftefalse
+\newif\ifgfbsklammerzu \gfbsklammerzufalse
+\newif\ifgfggschlussweise \gfggschlussweisefalse
+\newif\ifgfbszwischenzeichen
+\mathchardef\diagup="0\hexno\msbfam1E
+\mathchardef\diagdown="0\hexno\msbfam1F
+\newdimen\gfbsfonosenken
+\newbox\gfbsbox \newdimen\gfbsboxht \newdimen\gfbsboxdp
+\newif\ifgfbsfonoohnepunkt \gfbsfonoohnepunktfalse
+\newbox\ggpboxi \newbox\ggbboxi % Boxen für \pfrege und \bfrege
+\newbox\ggpboxii \newbox\ggbboxii
+\newbox\ggpboxiii \newbox\ggbboxiii % und für \pparens und \bparens
+\newbox\ggpboxiv \newbox\ggbboxiv
+\def\gfbsteilelement#1{%
+ \ifgfbshoehlung % Zeichen in eine Höhlung setzen (1. \fi)
+ \ifcat \noexpand#1a\else
+ \errhelp=\gfbskeinbuchstabeinhoehlunghilfe
+ \errmessage{A ``for all'' variable must be a letter not `\string#1'}%
+ \fi
+ \ifdim\gfbssdicke<0.59 pt
+ \setbox0=\hbox{$\mathchar"015E$}% plain \TeX Vorgabe
+ \else
+ \setbox0=\hbox{$\mathchar"0\hexno\cmmibfam5E$}%
+ \fi
+ \dimen0 = \gfbseinheit \advance\dimen0 by -0.5\wd0
+ \dimen2 = \wd0 \divide\dimen2 by 18 \advance\dimen0 by 1.5\dimen2
+ \hbox to \gfbszweiheit{%
+ \hbox to\dimen0{\gfbsrulefill}%
+ \kern-1.2\dimen2
+ \raise\gfbshoehe\hbox{%
+ \lower\ht0\hbox{%
+ \ifx#1ß$\buildrel{\the\dsz}\over{\box0}$%
+ \else$\buildrel{{\frak #1}}\over{\box0}$%
+ \fi
+ }%
+ }%
+ \nobreak
+ \kern-1.5\dimen2
+ \gfbsrulefill
+ }%
+ \kern\gfbsueberlappung
+ \gfbshoehlungfalse
+ \else
+ \ifx #1$%$% halber Inhaltsstrich oder Leerstelle nach Höhlung
+ \ifgfbsklammerzu
+ \gfbsklammerzufalse
+ \else
+ \gfbsklammerzutrue
+ \gfbshoehlungtrue
+ \fi
+ \ifgfbszweitehaelfte
+ \errhelp=\gfbshaelftehilfe
+ \errmessage{Unexpected `\string#1' after signaled ``for all''}%
+ \gfbszweitehaelftefalse
+ \fi
+ \ifgfbskompakt\relax
+ \else
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \fi
+ \else
+ \ifgfbsklammerzu
+ \errhelp=\gfbsklammerhilfe
+ \errmessage{A \string$ expected, not `\string#1'}%$
+ \gfbsklammerzufalse
+ \fi
+ \ifx #1.% halber Inhaltsstrich
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \ifgfbszweitehaelfte
+ \gfbszweitehaelftefalse
+ \else
+ \gfbshoehlungtrue
+ \gfbszweitehaelftetrue
+ \fi
+ \else\ifx #1,% halber verneinter Inhaltsstrich
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \ifgfbszweitehaelfte\hskip-0.3\gfbseinheit
+ \else\hskip-0.2\gfbseinheit\fi
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \ifgfbszweitehaelfte\hskip0.3\gfbseinheit
+ \else\hskip0.2\gfbseinheit\fi
+ \ifgfbszweitehaelfte
+ \gfbszweitehaelftefalse
+ \else
+ \gfbshoehlungtrue
+ \gfbszweitehaelftetrue
+ \fi
+ \else\ifx #1`% halber ganz links verneinter Inhaltsstrich
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \ifgfbszweitehaelfte
+ \gfbszweitehaelftefalse
+ \else
+ \gfbshoehlungtrue
+ \gfbszweitehaelftetrue
+ \fi
+ \else\ifx #1;% halber doppelt verneinter Inhaltsstrich
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \ifgfbszweitehaelfte\hskip-0.42\gfbseinheit
+ \else\hskip-0.27\gfbseinheit\fi
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.27\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \ifgfbszweitehaelfte\hskip0.15\gfbseinheit\fi
+ \ifgfbszweitehaelfte
+ \gfbszweitehaelftefalse
+ \else
+ \gfbshoehlungtrue
+ \gfbszweitehaelftetrue
+ \fi
+ \else\ifx #17% variable Negation
+ \ifgfbskompakt
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \ifgfbszweitehaelfte\hskip-0.3\gfbseinheit
+ \else\hskip-0.2\gfbseinheit\fi
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \ifgfbszweitehaelfte\hskip0.3\gfbseinheit
+ \else\hskip0.2\gfbseinheit\fi
+ \else
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \fi
+ \ifgfbszweitehaelfte
+ \gfbszweitehaelftefalse
+ \else
+ \gfbshoehlungtrue
+ \gfbszweitehaelftetrue
+ \fi
+ \else
+ \ifgfbszweitehaelfte
+ \errhelp=\gfbshaelftehilfe
+ \errmessage{Unexpected `\string#1' after signaled ``for all''}%
+ \gfbszweitehaelftefalse
+ \fi
+ \ifx #1"% Leerstelle
+ \relax
+ \else\ifx #1_% leer
+ \hskip\gfbseinheit
+ \else\ifx #1-% Inhaltsstrich
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \else\ifx #1=% Schlusskette
+ \vrule height \gfbsos depth -\gfbsus width \gfbsvolleeinheit
+ \nobreak
+ \hskip-\gfbsvolleeinheit
+ \vrule height \gfbsfdicke depth 0pt width \gfbsvolleeinheit
+ \nobreak
+ \kern\gfbsueberlappung
+ \else
+ \ifx #1~% verneinter Inhaltsstrich
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \else\ifx #1(% Negation mitte-links
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.75\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.75\gfbseinheit
+ \else\ifx #1<% Negation ganz links
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip\gfbseinheit
+ \else\ifx #1)% Negation mitte-rechts
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.25\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.25\gfbseinheit
+ \else\ifx #1>% Negation ganz rechts
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \else\ifx #1+% doppelter verneinter Inhaltsstrich
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.75\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.25\gfbseinheit
+ \else\ifx #1^% doppelter verneinter Inhaltsstrich links
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \else\ifx #1/% doppelter verneinter Inhaltsstrich rechts
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \else
+ \ifx #1:% dann-Verbindung
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \vrule width \gfbssdicke height \gfbshoehe
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \else\ifx #1'% wenn-Verbindung
+ \hskip0.5\gfbsvolleeinheit
+ \hskip-0.5\gfbssdicke
+ \vrule width \gfbssdicke depth -\gfbshoehe
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hbox to 0.5\gfbsvolleeinheit{\gfbsrulefill}\kern0.5\gfbsueberlappung
+ \nobreak
+ \kern0.5\gfbsueberlappung
+ \else\ifx #1!% senkrechter Strich für Verlängerungen zwischen dann und wenn
+ \hskip0.5\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \vrule width \gfbssdicke
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \else
+ \ifx #1[% Urteilsstrich
+ \smash{\vrule width \gfbsudicke height \gfbsfuht depth \gfbsfudp}%
+ \nobreak
+ \hskip-\gfbsudicke
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \else\ifx #1]% Urteilsstrich rechtsbündig
+ \hskip\gfbseinheit
+ \hskip-\gfbsudicke
+ \smash{\vrule width \gfbsudicke height \gfbsfuht depth \gfbsfudp}%
+ \else\ifx #13% Definitionsstriche rechtsbündig
+ \hskip\gfbseinheit
+ \hskip-4\gfbsddicke
+ \smash{\vrule width \gfbsddicke height \gfbsfuht depth \gfbsfudp}%
+ \nobreak
+ \hskip2\gfbsddicke
+ \smash{\vrule width \gfbsddicke height \gfbsfuht depth \gfbsfudp}%
+ \else\ifx #1|% Ersetzungsstrich
+ \hskip0.5\gfbseinheit
+ \hskip-0.5\gfbsedicke
+ \vrule width \gfbsedicke
+ \nobreak
+ \hskip-0.5\gfbsedicke
+ \hskip0.5\gfbseinheit
+ \else\ifx #1@% Vorbereitung für eine Höhlung
+ \gfbshoehlungtrue
+ \else
+ \ifx #10% Negation mitte-links oder mitte-rechts
+ \ifgfbskompakt
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.25\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.25\gfbseinheit
+ \else
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.75\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.75\gfbseinheit
+ \fi
+ \else\ifx #11% Doppelte Negation links oder rechts
+ \ifgfbskompakt
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \else
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \fi
+ \else\ifx #12% Doppelte Negation links oder zentriert
+ \ifgfbskompakt
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.75\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.25\gfbseinheit
+ \else
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip0.5\gfbseinheit
+ \hskip-\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \fi
+ \else\ifx #14% Inhaltsstrich oder Leerstelle
+ \ifgfbskompakt\relax
+ \else
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \fi
+ \else\ifx #15% leer oder Leerstelle
+ \ifgfbskompakt\relax
+ \else
+ \hskip\gfbseinheit
+ \fi
+ \else\ifx #16% Urteil links- oder rechtsbündig
+ \ifgfbskompakt
+ \hskip\gfbseinheit
+ \hskip-\gfbsudicke
+ \smash{\vrule width \gfbsudicke height \gfbsfuht depth \gfbsfudp}%
+ \else
+ \smash{\vrule width \gfbsudicke height \gfbsfuht depth \gfbsfudp}%
+ \nobreak
+ \hskip-\gfbsudicke
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \fi
+ \else\ifx #18% Negation ganz links oder zentriert
+ \ifgfbskompakt
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-0.5\gfbseinheit
+ \hskip-0.5\gfbssdicke
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-0.5\gfbssdicke
+ \hskip0.5\gfbseinheit
+ \else
+ \hbox to \gfbsvolleeinheit{\gfbsrulefill}\kern\gfbsueberlappung
+ \nobreak
+ \hskip-\gfbseinheit
+ \ifgfbsnegdirekt
+ \vrule width \gfbssdicke height \gfbshoehe depth \gfbsnegdp
+ \else
+ \gfbsneght=.01\gfbshoehe \multiply\gfbsneght by \gfbsnegpct
+ \vrule width \gfbssdicke height \gfbsneght depth \gfbsnegdp
+ \fi
+ \nobreak
+ \hskip-\gfbssdicke
+ \hskip\gfbseinheit
+ \fi
+ \else\ifx #19% Drittelstrich
+ \hbox to 0.333333\gfbsvolleeinheit{\gfbsrulefill}\kern0.3333\gfbsueberlappung
+ \nobreak
+ \else\ifx #1*% 5/3 Leerstelle
+ \hskip1.666667\gfbseinheit
+ \else
+ \errhelp=\gfbsunbekanntessymbolhilfe
+ \errmessage{`\string#1' is not allowed in a \string\* macro}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi
+ \fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi
+ \fi
+}
+\let\discretionarytimes=\*
+\def\*#1#2#3{%
+ \ifx #1?% Schlussweise aus den Grundgesetzen
+ \ifgfggschlussweise
+ \gfbsschluss{#2}%
+ \gfbsschluss{#3}%
+ \else
+ \errhelp=\gfggschlussweisehilfe
+ \errmessage{You cannot use this construction in style Begriffsschrift}%
+ \fi
+ \else
+ \gfbsteilelement{#1}%
+ \gfbsteilelement{#2}%
+ \gfbsteilelement{#3}%
+ \fi
+}
+\def\toggleGGstyle{%
+ \ifgfbsuseGGstyle% gehe zum Stil der Begriffsschrift über
+ \gfbskompaktfalse
+ \gfbsfonoohnepunktfalse
+ \gfggschlussweisefalse
+ \gfbsnegdirektfalse
+ \gfbsuseGGstylefalse
+ \else% verwende den Stil der Grundgesetze
+ \gfbskompakttrue
+ \gfbsfonoohnepunkttrue
+ \gfggschlussweisetrue
+ \gfbsnegdirekttrue
+ \gfbsuseGGstyletrue
+ \fi
+ \gfbsneuestriche
+}
+\def\gfbsschluss#1{%
+ \ifx #1x% Wendung
+ \ifgfbszwischenzeichen
+ \kern\gfbsueberlappung
+ \hbox to 3\gfbsvolleeinheit{\hss$\diagdown$\llap{$\diagup$}\hss}%
+ \kern2\gfbsueberlappung
+ \else
+ \errhelp=\gfbszwischenzeichenhilfe
+ \errmessage{An `x' must be introduced by `\string>'}%
+ \fi
+ \gfbszwischenzeichenfalse
+ \else\ifx #1u% Wandlung
+ \ifgfbszwischenzeichen
+ \kern\gfbsueberlappung
+ \hbox to 3\gfbsvolleeinheit{$\setbox0=\hbox{$\braceld$}%
+ \bracelu\leaders\vrule height\ht0 depth0pt\hfill\braceru$}%
+ \kern2\gfbsueberlappung
+ \else
+ \errhelp=\gfbszwischenzeichenhilfe
+ \errmessage{An `u' must be introduced by `\string>'}%
+ \fi
+ \gfbszwischenzeichenfalse
+ \else
+ \ifgfbszwischenzeichen
+ \errhelp=\gfbszwischenzeichenfehlthilfe
+ \errmessage{Either `x' or `u' expected}%
+ \gfbszwischenzeichenfalse
+ \fi
+ \ifx #1-% einzeln: Strich
+ \hbox to 1.5\gfbsvolleeinheit{\gfggrulefill}\kern1.5\gfbsueberlappung
+ \else\ifx #1.% einzeln: zentrierter Punkt
+ \hbox to 1.5\gfbsvolleeinheit{\hss$\cdot$\hss}\kern1.5\gfbsueberlappung
+ \else
+ \ifx #1=% doppelt: Strich oben, Strich unten
+ \vrule height \gfbsos depth -\gfbsus width 1.5\gfbsvolleeinheit
+ \nobreak
+ \hskip-1.5\gfbsvolleeinheit
+ \vrule height \gfbsfdicke depth 0pt width 1.5\gfbsvolleeinheit
+ \kern1.5\gfbsueberlappung
+ \else\ifx #1*% doppelt: Strich oben, leer unten
+ \vrule height \gfbsos depth -\gfbsus width 1.5\gfbsvolleeinheit
+ \kern1.5\gfbsueberlappung
+ \else
+ \ifx #1_% Leerraum
+ \hskip1.5\gfbseinheit
+ \else\ifx #1"% Leerstelle
+ \relax
+ \else\ifx #1>% Einzelsymbol (Wendung oder Wandlung) folgt
+ \gfbszwischenzeichentrue
+ \else % nicht erlaubt
+ \errhelp=\gfbsunbekannterschlusshilfe
+ \errmessage{`\string#1' is not allowed in a \string\*? macro}%
+ \fi\fi\fi
+ \fi\fi
+ \fi\fi
+ \fi\fi
+}
+\newcount\gfbswiederholung
+\def\wdh#1#2#3#4#5{%
+ \gfbswiederholung=#1
+ \ifnum\gfbswiederholung<0
+ \errhelp=\gfbsnegwdhhilfe
+ \errmessage{Repetition count cannot be negative, found \string#1}%
+ \else
+ \loop
+ \ifnum\gfbswiederholung>0
+ #2#3#4#5%
+ \advance\gfbswiederholung by -1
+ \repeat
+ \fi
+}
+\def\nzp#1{%
+ \ifvmode\noindent\else\hfil\break\fi
+ \gfbsstrut
+ \hskip#1\gfbselementdimen
+ \relax
+ \global\gfbsfonosenken=0pt
+}
+\let\nlp\nzp
+\def\gfbsstrut{%
+ \relax\ifmmode\copy\gfbsbox\else\unhcopy\gfbsbox\fi
+}
+\def\gfbsabstandzuruecksetzen{%
+ \global\gfbsboxht=\ht\strutbox \global\gfbsboxdp=\dp\strutbox
+ \global\setbox\gfbsbox=\hbox{%
+ \vrule height\the\gfbsboxht depth\the\gfbsboxdp width0pt }%
+}
+\gfbsabstandzuruecksetzen
+\def\gfbssetzeabstand#1#2{%
+ \global\gfbsboxht=#1pt \global\gfbsboxdp=#2pt %
+ \global\setbox\gfbsbox=\hbox{%
+ \vrule height\the\gfbsboxht depth\the\gfbsboxdp width0pt }%
+}
+\def\gfbsreduziereabstandum#1#2{%
+ \global\advance\gfbsboxht by -0.#1#2\gfbsboxht
+ \global\advance\gfbsboxdp by -0.#1#2\gfbsboxdp
+ \global\setbox\gfbsbox=\hbox{%
+ \vrule height\the\gfbsboxht depth\the\gfbsboxdp width0pt }%
+}
+\def\zi#1{%
+ \hbox to \gfbselementdimen{\rm\thinspace #1\hss}\ignorespaces
+}
+\def\ze#1{%
+ \hbox{\rm\thinspace #1}%
+}
+\newif\ifgfbsinnen % false: Zeichen werden mit \ze gesetzt, true: mit \zi
+\def\nzpz#1#2{\nzp{#1}\llap{#2}}
+\let\nlpz\nzpz
+\def\fono#1{%
+ \hfill\lower\gfbsfonosenken\hbox{\rm({\ff #1}\ifgfbsfonoohnepunkt\else.\fi}%
+}
+\def\bss#1/#2#3:#4#5\ess{%
+ \nzp{#1}%
+ \ifx #2l%
+ \ifx #4.%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:}\hss}%
+ \else\ifx #4:%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \else
+ \errhelp=\gfbsdoppelpunkthilfe
+ \errmessage{Either a period or a colon is expected for the number of colons}%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \fi\fi
+ \hskip2\gfbseinheit
+ \else\ifx #2r%
+ \hskip2\gfbseinheit
+ \ifx #4.%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:}\hss}%
+ \else\ifx #4:%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \else
+ \errhelp=\gfbsdoppelpunkthilfe
+ \errmessage{Either a period or a colon is expected for the number of colons}%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \fi\fi
+ \else\ifx #2m%
+ \hskip\gfbseinheit
+ \ifx #4.%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:}\hss}%
+ \else\ifx #4:%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \else
+ \errhelp=\gfbsdoppelpunkthilfe
+ \errmessage{Either a period or a colon is expected for the number of colons}%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \fi\fi
+ \hskip\gfbseinheit
+ \else
+ \errhelp=\gfbspositionunbekannthilfe
+ \errmessage{Only l, m, and r are allowed as position parameter}%
+ \hskip\gfbseinheit
+ \ifx #4.%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:}\hss}%
+ \else\ifx #4:%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \else
+ \errhelp=\gfbsdoppelpunkthilfe
+ \errmessage{Either a period or a colon is expected for the number of colons}%
+ \hbox to \gfbseinheit{\rm\hss({\ff #3})\rlap{\kern\gfbsdpa:\kern\gfbsdpa:}\hss}%
+ \fi\fi
+ \hskip\gfbseinheit
+ \fi\fi\fi
+ {\let\gfbsrulefill\gfggrulefill #5}%
+ \vadjust{\penalty-15}\ignorespaces
+}
+%
+% ab hier folgt die Zeilennotation
+%
+\newtoks\dsz \dsz={\xi}% wird für Buchstaben ß eingesetzt
+\newcount\gfbstmpcount
+\catcode`@=11
+\def\mynewskip{\alloc@2\skip\skipdef\insc@unt}
+\def\mynewtoks{\alloc@5\toks\toksdef\@cclvi}
+\catcode`@=12
+\gfbstmpcount=\gfbsmaxanzahlzeilen
+\ifgfbskeinesubst
+ \advance\gfbstmpcount by 1
+\else
+ \multiply\gfbstmpcount by 2
+\fi
+\let\rom\romannumeral
+\count255=1
+\loop
+ \expandafter\mynewtoks\csname gfbstoks\rom\count255\endcsname
+ \expandafter\mynewskip\csname gfbsskip\rom\count255\endcsname
+\ifnum\count255<\gfbstmpcount
+ \advance\count255 by 1
+\repeat
+\newcount\gfbshaengtan \newcount\gfbsgehtbis \newcount\gfbsanzahl
+\newif\ifgfbsdannwenn
+\newtoks\gfbselement \newcount\gfbszeile
+\newcount\gfbsanzahlplus \newcount\gfbsanzahlfest
+\newtoks\gfbsprefix
+\newif\ifgfbsaussagesichtbar \gfbsaussagesichtbarfalse
+\newcount\gfbsgrenze \newcount\gfbszaehler
+\newif\ifgfbskeinekompaktehoehlung \gfbskeinekompaktehoehlungfalse
+\newcount\gfbserstezeile \newcount\gfbsersteanzahl \newcount\gfbserstegehtbis
+\newcount\gfbszweitezeile \newcount\gfbszweitegehtbis
+\newif\ifvzzz \newif\ifvzez
+\newcount\gfbseinzug
+\newif\ifgfbsnurterminal
+\newcount\gfbsgrundeinzug \newcount\gfbssubststart
+\gfbsgrundeinzug=0
+\gfbssubststart=\gfbsmaxanzahlzeilen \advance\gfbssubststart by 1
+\newif\ifgfbslognotation \gfbslognotationfalse
+\newif\ifgfbszeigestats \gfbszeigestatsfalse
+\newcount\gfbsmaxformelzeile
+\newcount\gfbsvorgaenger \gfbsvorgaenger=0
+\def\setskip#1#2#3#4{%
+ %\skip-Register = \gfbsanzahl plus \gfbshaengtan minus \gfbsgehtbis
+ \global\csname gfbsskip\rom#1\endcsname=#2pt plus #3pt minus #4pt%
+}
+\def\verschlucke#1#2{\relax}
+\def\getskip#1.#2 #3 #4.#5 #6 #7.#8{%
+ \global\gfbsanzahl=#1%
+ \global\gfbshaengtan=#4%
+ \global\gfbsgehtbis=#7%
+ \verschlucke
+}
+\def\gfbsformel#1#2#3#4#5{%
+ \gfbsdannwennfalse
+ \ifx #1.% dann-wenn Beziehung
+ \gfbsdannwenntrue
+ \else\ifx #1-% dann-wenn
+ \gfbsdannwenntrue
+ \else\ifx #1+% dann-wenn
+ \gfbsdannwenntrue
+ \else\ifx #1*% Höhlung
+ \global\gfbsnurterminalfalse
+ \ifcat \noexpand#3a\else
+ \errhelp=\gfbskeinbuchstabeanhoehlungspositionhilfe
+ \errmessage{Symbol `\string#3' not allowed as variable}%
+ \fi
+ \bgroup\gfbsvorgaenger=2
+ \ifx #2.\ifx #4.\ifgfbskeinekompaktehoehlung\else
+ \gfbsvorgaenger=3
+ \fi\fi\fi \gfbsformel #5{}{}{}{}\egroup
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \gfbstmpcount=0 % Anzahl der benutzen .
+ \ifx #2-%
+ \ifnum\gfbsvorgaenger<2 \gfbselement={\*,#3}%
+ \else\ifnum\gfbsvorgaenger=2 \gfbselement={\*`#3}%
+ \else\gfbselement={\*7#3}%
+ \fi\fi
+ \else\ifx #2+%
+ \gfbselement={\*;#3}%
+ \else\ifx #2.%
+ \gfbselement={\*.#3}\gfbstmpcount=1
+ \else
+ \errhelp=\gfbsfalschesvzhilfe
+ \errmessage{Symbol `\string#2' not allowed as sign}%
+ \gfbselement={\*___}\gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi\fi\fi
+ \ifx #4-% ebenso nach der Höhlung
+ \gfbselement=\expandafter{\the\gfbselement,}%
+ \else\ifx #4+%
+ \gfbselement=\expandafter{\the\gfbselement;}%
+ \else\ifx #4.%
+ \gfbselement=\expandafter{\the\gfbselement.}%
+ \advance\gfbstmpcount by 1
+ \else
+ \errhelp=\gfbsfalschesvzhilfe
+ \errmessage{Symbol `\string#4' not allowed as sign}%
+ \gfbselement={\*___}\gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi\fi\fi
+ \ifnum\gfbstmpcount=2
+ \ifgfbskeinekompaktehoehlung
+ \gfbsprefix={\*___}\gfbsanzahlfest=3
+ \else\gfbselement={\*$#3$}\gfbsprefix={\*5__}\gfbsanzahlfest=2
+ \fi
+ \else
+ \gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi
+ \gfbsanzahlplus=3
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \else\ifx #1=% Aussage
+ \global\gfbsnurterminalfalse
+ \def\gfbstest{#4}%
+ \ifx\gfbstest\empty
+ \def\gfbstest{#5}%
+ \ifx\gfbstest\empty\else
+ \errhelp=\gfbszuvieleparameterhilfe
+ \errmessage{Too many parameters for statement (found `\string#5')}%
+ \fi
+ \else
+ \errhelp=\gfbszuvieleparameterhilfe
+ \errmessage{Too many parameters for statement (found `\string#4')}%
+ \fi
+ \bgroup\gfbsvorgaenger=4 \gfbsformel #3{}{}{}{}\egroup
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \ifx #2-% auf Negation bzw. doppelte Negation prüfen
+ \ifnum\gfbsvorgaenger>6 \gfbselement={\*484}\else\gfbselement={\*4~4}\fi
+ \gfbsprefix={\*5_5}\gfbsanzahlfest=1
+ \else\ifx #2+%
+ \ifnum\gfbsvorgaenger>6 \gfbselement={\*424}\else\gfbselement={\*4+4}\fi
+ \gfbsprefix={\*5_5}\gfbsanzahlfest=1
+ \else\ifx #2.%
+ \ifgfbsaussagesichtbar
+ \gfbselement={\*4-4}\gfbsprefix={\*5_5}\gfbsanzahlfest=1
+ \else
+ \gfbselement={\*444}\gfbsprefix={\*555}\gfbsanzahlfest=0
+ \fi
+ \else
+ \errhelp=\gfbsfalschesvzhilfe
+ \errmessage{Symbol `\string#2' not allowed as sign}%
+ \gfbselement={\*___}\gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi\fi\fi
+ \gfbsanzahlplus=3
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \else\ifx #1!% Sequenz oder Makroaufruf
+ \gfbselement=\expandafter{#2#3#4#5}%
+ \edef\gfbstoken{\the\gfbselement}%
+ \bgroup\expandafter\gfbsformel\gfbstoken {}{}{}{}\egroup
+ \else % einzelnes Zeichen
+ \ifgfbsinnen
+ \gfbselement={\zi{$#1#2#3#4#5$}}%
+ \else
+ \gfbselement={\ze{$#1#2#3#4#5$}}%
+ \fi
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \setskip{\the\gfbszeile}3{\the\gfbszeile}{\the\gfbszeile}%
+ \fi\fi\fi\fi\fi\fi
+ \ifgfbsdannwenn
+ \global\gfbsnurterminalfalse
+ \bgroup\gfbsvorgaenger=5 \gfbsformel #3{}{}{}{}\egroup
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \gfbserstezeile=\gfbszeile
+ \gfbsersteanzahl=\gfbsanzahl
+ \gfbserstegehtbis=\gfbsgehtbis
+ \gfbszeile=\gfbsgehtbis \advance\gfbszeile by 1
+ \bgroup\gfbsvorgaenger=6 \gfbsformel #5{}{}{}{}\egroup
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \gfbszweitezeile=\gfbszeile
+ \gfbszweitegehtbis=\gfbsgehtbis
+ \global\vzezfalse
+ \ifx #2-%
+ \global\vzeztrue
+ \else\ifx #2+%
+ \global\vzeztrue
+ \else\ifx #2.\else
+ \errhelp=\gfbsfalschesvzhilfe
+ \errmessage{Symbol `\string#2' not allowed as sign}%
+ \gfbselement={\*___}\gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi\fi\fi
+ \global\vzzzfalse
+ \ifx #4-%
+ \global\vzzztrue
+ \else\ifx #4+%
+ \global\vzzztrue
+ \else\ifx #4.\else
+ \errhelp=\gfbsfalschesvzhilfe
+ \errmessage{Symbol `\string#4' not allowed as sign}%
+ \gfbselement={\*___}\gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi\fi\fi
+ {\advance\gfbsersteanzahl by -\gfbsanzahl
+ \ifnum\gfbsersteanzahl>0 % fülle zweite Zeile auf
+ \advance\gfbsersteanzahl by -1
+ \gfbstmpcount=\gfbsersteanzahl
+ \loop
+ \ifnum\gfbstmpcount>2
+ \advance\gfbstmpcount by -3
+ \repeat
+ \ifcase\gfbstmpcount
+ \gfbselement={\*""}\gfbsprefix={\*""_}\gfbsanzahlplus=1 \gfbsanzahlfest=1
+ \or\gfbselement={\*"-}\gfbsprefix={\*"__}\gfbsanzahlplus=2 \gfbsanzahlfest=2
+ \or\gfbselement={\*-}\gfbsprefix={\*___}\gfbsanzahlplus=3 \gfbsanzahlfest=3
+ \fi
+ \advance\gfbsersteanzahl by -\gfbstmpcount
+ \ifnum\gfbstmpcount=2
+ \gfbselement=\expandafter{\the\gfbselement-}%
+ \fi
+ \ifvzzz
+ \ifx #4-%
+ \gfbselement=\expandafter{\the\gfbselement(}%
+ \else
+ \gfbselement=\expandafter{\the\gfbselement+}%
+ \fi
+ \global\vzzzfalse
+ \else
+ \gfbselement=\expandafter{\the\gfbselement-}%
+ \fi
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \gfbselement={\*---}\gfbsprefix={\*___}\gfbsanzahlfest=3 \gfbsanzahlplus=3
+ \loop
+ \ifnum\gfbsersteanzahl>2
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \advance\gfbsersteanzahl by -3
+ \repeat
+ \fi
+ \ifnum\gfbsersteanzahl<0 % fülle erste Zeile auf
+ \advance\gfbsersteanzahl by 1
+ \gfbstmpcount=-\gfbsersteanzahl
+ \loop
+ \ifnum\gfbstmpcount>2
+ \advance\gfbstmpcount by -3
+ \repeat
+ \ifcase\gfbstmpcount
+ \gfbselement={\*""}\gfbsprefix={\*""_}\gfbsanzahlplus=1 \gfbsanzahlfest=1
+ \or\gfbselement={\*"-}\gfbsprefix={\*"__}\gfbsanzahlplus=2 \gfbsanzahlfest=2
+ \or\gfbselement={\*-}\gfbsprefix={\*___}\gfbsanzahlplus=3 \gfbsanzahlfest=3
+ \fi
+ \advance\gfbsersteanzahl by \gfbstmpcount
+ \ifnum\gfbstmpcount=2
+ \gfbselement=\expandafter{\the\gfbselement-}%
+ \fi
+ \ifvzez
+ \ifx #2-%
+ \gfbselement=\expandafter{\the\gfbselement(}%
+ \else
+ \gfbselement=\expandafter{\the\gfbselement+}%
+ \fi
+ \global\vzezfalse
+ \else
+ \gfbselement=\expandafter{\the\gfbselement-}%
+ \fi
+ \advance\gfbstmpcount by 1
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbserstezeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbserstezeile\endcsname=\expandafter{\gfbstoken}%
+ \global\advance\csname gfbsskip\rom\gfbserstezeile\endcsname by \number\gfbstmpcount pt
+ \gfbsfuegelinksan{\gfbserstezeile}{\gfbserstegehtbis}%
+ \gfbselement={\*---}\gfbsprefix={\*___}\gfbsanzahlfest=3 \gfbsanzahlplus=3
+ \loop
+ \ifnum\gfbsersteanzahl<-2
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbserstezeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbserstezeile\endcsname=\expandafter{\gfbstoken}%
+ \global\advance\csname gfbsskip\rom\gfbserstezeile\endcsname by 3 pt
+ \gfbsfuegelinksan{\gfbserstezeile}{\gfbserstegehtbis}%
+ \advance\gfbsersteanzahl by 3
+ \repeat
+ \fi}%
+ \gfbszeile=\gfbserstezeile
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \gfbsanzahlfest=0
+ \gfbsanzahlplus=3
+ \ifx #1-% auf Negation bzw. doppelte Negation prüfen
+ \ifnum\gfbsvorgaenger<2 \gfbselement={\*):}%
+ \else\ifnum\gfbsvorgaenger<4 \gfbselement={\*~:}%
+ \else\ifnum\gfbsvorgaenger<7 \gfbselement={\*8:}%
+ \else\gfbselement={\*0:}\fi\fi\fi
+ \gfbsprefix={\*_!}\gfbsanzahlfest=2
+ \else\ifx #1+%
+ \ifnum\gfbsvorgaenger<2 \gfbselement={\*/:}%
+ \else\ifnum\gfbsvorgaenger>6 \gfbselement={\*1:}%
+ \else\gfbselement={\*+:}%
+ \fi\fi
+ \gfbsprefix={\*_!}\gfbsanzahlfest=2
+ \else\ifx #1.%
+ \gfbselement={\*4:}\gfbsprefix={\*5!}\gfbsanzahlfest=1
+ \fi\fi\fi
+ \ifvzez
+ \ifx #2-%
+ \gfbselement=\expandafter{\the\gfbselement(}%
+ \else
+ \gfbselement=\expandafter{\the\gfbselement+}%
+ \fi
+ \advance\gfbsanzahlfest by 1
+ \gfbsprefix=\expandafter{\the\gfbsprefix_}%
+ \else
+ \ifvzzz
+ \gfbselement=\expandafter{\the\gfbselement-}%
+ \advance\gfbsanzahlfest by 1
+ \gfbsprefix=\expandafter{\the\gfbsprefix_}%
+ \else
+ \gfbselement=\expandafter{\the\gfbselement4}%
+ \gfbsprefix=\expandafter{\the\gfbsprefix5}%
+ \fi
+ \fi
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \gfbszeile=\gfbszweitezeile
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \gfbsanzahlplus=3
+ \ifx #1.%
+ \gfbselement={\*5}\gfbsprefix={\*5}\gfbsanzahlfest=0
+ \else
+ \gfbselement={\*_}\gfbsprefix={\*_}\gfbsanzahlfest=1
+ \fi
+ \ifvzzz
+ \ifx #4-%
+ \gfbselement=\expandafter{\the\gfbselement'(}%
+ \else
+ \gfbselement=\expandafter{\the\gfbselement'+}%
+ \fi
+ \advance\gfbsanzahlfest by 2
+ \gfbsprefix=\expandafter{\the\gfbsprefix__}%
+ \else
+ \ifvzez
+ \gfbselement=\expandafter{\the\gfbselement'-}%
+ \advance\gfbsanzahlfest by 2
+ \gfbsprefix=\expandafter{\the\gfbsprefix__}%
+ \else
+ \gfbselement=\expandafter{\the\gfbselement'4}%
+ \advance\gfbsanzahlfest by 1
+ \gfbsprefix=\expandafter{\the\gfbsprefix_5}%
+ \fi\fi
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \setskip{\the\gfbszweitezeile}{\the\gfbsanzahl}{\the\gfbserstezeile}{\the\gfbsgehtbis}%
+ \gfbszeile=\gfbserstezeile
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbszweitegehtbis}%
+ \fi
+}
+\def\gfbsfuegelinksan#1#2{\bgroup
+ \gfbstmpcount=0 \advance\gfbstmpcount by #2% höchste zu ändernde Zeilennummer
+ \count255=0 \advance\count255 by #1% Startzeile (nicht zu ändern)
+ \loop
+ \ifnum\gfbstmpcount>\count255
+ \edef\gfbstoken{\the\gfbsprefix\the\csname gfbstoks\rom\gfbstmpcount\endcsname}%
+ \global\csname gfbstoks\rom\gfbstmpcount\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\csname gfbsskip\rom\gfbstmpcount\endcsname
+ by \number\gfbsanzahlfest pt
+ \else
+ \global\advance\csname gfbsskip\rom\gfbstmpcount\endcsname
+ by \number\gfbsanzahlplus pt
+ \fi
+ \advance\gfbstmpcount by -1
+ \repeat
+\egroup}
+\outer\def\formel p#1#2#3{%
+ \global\gfbseinzug=#1%
+ \global\gfbszeile=1
+ \setskip 1011
+ \gfbsanzahlfest=0 \gfbsanzahlplus=0 \gfbsprefix={}\gfbselement={}%
+ \gfbsnurterminaltrue
+ \bgroup\gfbsvorgaenger=8 \gfbsformel #3{}{}{}{}\egroup
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \ifx #2|% | markiert ein Urteil, sonst ist es eine Vorstellung
+ \gfbsprefix={\*55_}%
+ \ifnum\gfbsanzahl<4 % Formel besteht nur aus einem Terminal
+ \ifgfbsnurterminal
+ \errhelp=\gfbsnurterminalhilfe
+ \errmessage{No Frege formula entered}%
+ \gfbselement={\*55]}\gfbsanzahlfest=1
+ \else\gfbselement={\*5]9}\gfbsanzahlfest=2
+ \fi
+ \else\gfbselement={\*556}\gfbsanzahlfest=1
+ \fi
+ \else\ifx #2.%
+ \gfbsprefix={\*555}%
+ \ifnum\gfbsanzahl<4 % Formel besteht nur aus einem Terminal
+ \ifgfbsnurterminal
+ \errhelp=\gfbsnurterminalhilfe
+ \errmessage{No Frege formula entered}%
+ \gfbselement={\*555}\gfbsanzahlfest=0
+ \else\gfbselement={\*559}\gfbsanzahlfest=1
+ \fi
+ \else\gfbselement={\*554}\gfbsanzahlfest=0
+ \fi
+ \else
+ \errhelp=\gfbsfalscherstarthilfe
+ \errmessage{Unknown formula type `\string#2'}%
+ \gfbselement={\*___}\gfbsprefix={\*___}\gfbsanzahlfest=3
+ \fi\fi
+ \gfbsanzahlplus=3
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \expandafter\getskip\the\gfbsskipi\relax
+ \ifnum\gfbsmaxformelzeile<\gfbsgehtbis
+ \global\gfbsmaxformelzeile=\gfbsgehtbis
+ \ifgfbszeigestats\zeigezeilenstatistik\fi
+ \fi
+ \gfbszaehler=\gfbshaengtan
+ \gfbsgrenze=1 \advance\gfbsgrenze by \gfbsgehtbis
+ \gfbszeile=\gfbssubststart
+ \ifnum\gfbsgrundeinzug>0
+ \advance\gfbseinzug by -\gfbsgrundeinzug
+ \ifnum\gfbseinzug>0\else
+ \errhelp=\gfbsposabstandhilfe
+ \errmessage{The formula must be positioned to the right of substitutions}%
+ \gfbseinzug=2
+ \fi\fi
+ \par\noindent\leavevmode
+ \vbox\bgroup\offinterlineskip
+ \loop
+ \ifnum\gfbszaehler<\gfbsgrenze
+ \bgroup
+ \count255=\csname gfbsskip\rom\gfbszeile\endcsname
+ \divide\count255 by 65536
+ \gfbstmpcount=\count255
+ \divide\gfbstmpcount by 3
+ \advance\gfbseinzug by -\gfbstmpcount
+ \multiply\gfbstmpcount by -3
+ \advance\gfbstmpcount by \count255
+ \ifcase\gfbstmpcount
+ \edef\gfbstoken{\noexpand\wdh\noexpand{\the\gfbseinzug
+ \noexpand}\noexpand\*___}%
+ \or
+ \advance\gfbseinzug by -1
+ \edef\gfbstoken{\noexpand\*"__\noexpand\wdh\noexpand{\the\gfbseinzug
+ \noexpand}\noexpand\*___}%
+ \or
+ \advance\gfbseinzug by -1
+ \edef\gfbstoken{\noexpand\*""_\noexpand\wdh\noexpand{\the\gfbseinzug
+ \noexpand}\noexpand\*___}%
+ \fi
+ \global\gfbselement=\expandafter{\gfbstoken}%
+ \egroup
+ \hbox{%
+ \nlp{\the\gfbsgrundeinzug}%
+ \the\csname gfbstoks\rom\gfbszeile\endcsname
+ \the\gfbselement
+ \the\csname gfbstoks\rom\gfbszaehler\endcsname
+ }%
+ \ifgfbslognotation
+ \dimen255=\csname gfbsskip\rom\gfbszeile\endcsname
+ \wlog{\string\nlp\string{\the\gfbsgrundeinzug\string}}%
+ \ifdim\dimen255>0pt \wlog{\the\csname gfbstoks\rom\gfbszeile\endcsname}\fi
+ \wlog{\the\gfbselement}%
+ \wlog{\the\csname gfbstoks\rom\gfbszaehler\endcsname}%
+ \fi
+ \global\csname gfbstoks\rom\gfbszaehler\endcsname={}%
+ \global\csname gfbsskip\rom\gfbszaehler\endcsname=0pt
+ \global\advance\gfbszaehler by 1
+ \global\csname gfbstoks\rom\gfbszeile\endcsname={}%
+ \global\csname gfbsskip\rom\gfbszeile\endcsname=0pt
+ \ifgfbskeinesubst\else
+ \global\advance\gfbszeile by 1
+ \fi
+ \repeat
+ \ifgfbskeinesubst\else
+ \loop
+ \ifnum\csname gfbsskip\rom\gfbszeile\endcsname>0
+ \hbox{\nlp{\the\gfbsgrundeinzug}\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \ifgfbslognotation
+ \wlog{\string\nlp\string{\the\gfbsgrundeinzug\string}}%
+ \wlog{\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \fi
+ \global\csname gfbstoks\rom\gfbszeile\endcsname={}%
+ \global\csname gfbsskip\rom\gfbszeile\endcsname=0pt
+ \global\advance\gfbszeile by 1
+ \repeat
+ \fi
+ \egroup
+ \gfbsgrundeinzug=0
+}
+\def\gfbsaus p#1,#2"#3"mit#4\also{%
+ \global\gfbsgrundeinzug=#1%
+ \gfbszeile=\the\gfbssubststart
+ \ifgfbskeinesubst
+ \ifnum #2>0
+ \errhelp=\gfbsnurnullinaushilfe
+ \errmessage{Zero expected; read ``#2''}%
+ \fi
+ \else
+ \advance\gfbszeile by #2%
+ \fi
+ \global\csname gfbstoks\rom\gfbszeile\endcsname={\zi{\hss\thinspace #3\hss}}%
+ \setskip{\the\gfbszeile}3{\the\gfbszeile}{\the\gfbszeile}%
+ \gfbsanzahlfest=0 \gfbsanzahlplus=0 \gfbsprefix={}\gfbselement={}%
+ \def\next{#4}%
+ \ifx\next\empty
+ \else\ifgfbskeinesubst
+ \errhelp=\gfbskeinesubsthilfe
+ \errmessage{Substitutions disabled}%
+ \else
+ \bgroup
+ \gfbsinnentrue
+ \advance\gfbszeile by 1
+ \gfbssubst #4\gfbssubstend
+ \egroup
+ \fi\fi
+}
+\outer\def\aus p#1,#2"#3"mit#4\also{%
+ \gfbsaus p#1,#2"#3"mit#4\also
+}
+\outer\def\verwende p#1"#2"{%
+ \gfbsaus p#1,0"#2"mit\also
+}
+\let\ziehan\verwende
+\def\gfbssubst#1:#2 #3\gfbssubstend{%
+ \def\gfbstest{#1}%
+ \ifx\gfbstest\empty% Ende der Substitutionen
+ \null
+ \else
+ \def\gfbstest{#2}%
+ \ifx\gfbstest\empty
+ \if#1\ \else
+ \errhelp=\gfbsleeresubsthilfe
+ \errmessage{Empty substitution}%
+ \fi
+ \bgroup\gfbsformel \ {}{}{}{}{}\egroup
+ \else
+ \gfbsanzahlplus=0 \gfbsanzahlfest=0 \gfbsprefix={}\gfbselement={}%
+ \bgroup\gfbsvorgaenger=1 \gfbsformel #2{}{}{}{}{}\egroup
+ \fi
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \gfbselement={\*_|_}\gfbsprefix={\*_|_}\gfbsanzahlfest=3 \gfbsanzahlplus=3
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \gfbselement={\llap{$#1$}}%
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \def\gfbstest{#3}%
+ \ifx\gfbstest\empty
+ \else
+ \gfbsanzahlplus=0 \gfbsanzahlfest=0 \gfbsprefix={}\gfbselement={}%
+ \bgroup
+ \gfbszeile=\gfbsgehtbis
+ \advance\gfbszeile by 1
+ \gfbssubst #3\gfbssubstend
+ \egroup
+ \fi
+ \fi
+}
+\outer\def\folgtmit p#1"#2"a#3p#4s#5{%
+ \gfbsgrundeinzug=#4 \advance\gfbsgrundeinzug by -#1
+ \advance\gfbsgrundeinzug by -1
+ \ifnum #1<#4\else
+ \errhelp=\gfbszweiteposzugrosshilfe
+ \errmessage{The second p-value must be larger than the first}%
+ \gfbsgrundeinzug=1
+ \fi
+ \ifnum 0>#5
+ \errhelp=\gfbskeinelaengehilfe
+ \errmessage{The s-value must be nonnegative}%
+ \fi
+ \ifx #3.%
+ \else
+ \ifx #3:\else
+ \errhelp=\gfbsdoppelpunktzahlhilfe
+ \errmessage{Invalid symbol `#3' for number of colons}%
+ \fi
+ \fi
+ \bss{#1}/m{#2}:#3\wdh{\the\gfbsgrundeinzug}\*___\wdh{#5}\*---\ess
+ \ifgfbslognotation
+ \wlog{\string\bss\string{#1\string}/m\string{#2\string}:#3%
+ \string\wdh\string{\the\gfbsgrundeinzug\string}\string\*___%
+ \string\wdh\string{#5\string}\string\*---\string\ess}%
+ \fi
+}
+\def\gfbsdurch p#1 #2\folgende{%
+ \ifgfbskeinesubst
+ \errhelp=\gfbskeinesubsthilfe
+ \errmessage{Substitutions disabled}%
+ \fi
+ \global\gfbsgrundeinzug=#1%
+ \gfbszeile=\the\gfbssubststart
+ \setskip{\the\gfbszeile}0{\the\gfbszeile}{\the\gfbszeile}%
+ \gfbsanzahlfest=0 \gfbsanzahlplus=0 \gfbsprefix={}\gfbselement={}%
+ \bgroup\gfbsinnentrue\gfbssubst #2\gfbssubstend\egroup
+}
+\outer\def\durch p#1 #2\folgende{%
+ \gfbsdurch p#1 #2\folgende
+}
+\def\formelName "#1"{%
+ \fono{#1}%
+ \ifgfbslognotation
+ \wlog{\string\fono\string{#1\string}}%
+ \wlog{==========}%
+ \wlog{}%
+ \fi
+ \ignorespaces
+}
+\outer\def\genannt{\formelName}
+\def\zeigezeilenstatistik{\bgroup
+ \message{^^JMaximum number of lines: \the\gfbsmaxformelzeile. }%
+\egroup}
+\def\frege#1#2{%
+ \global\gfbszeile=1
+ \setskip 1011
+ \gfbselement={}\gfbsprefix={}\gfbsanzahlfest=0 \gfbsanzahlplus=0
+ \gfbsnurterminaltrue
+ \bgroup\gfbsvorgaenger=7 \gfbsformel #2{}{}{}{}\egroup
+ \expandafter\getskip\the\csname gfbsskip\rom\gfbszeile\endcsname
+ \ifx #1|% Urteil
+ \gfbsprefix={\*""_}%
+ \ifnum\gfbsanzahl<4
+ \ifgfbsnurterminal
+ \errhelp=\gfbsnurterminalhilfe
+ \errmessage{No Frege formula entered}%
+ \gfbselement={\*""[}\gfbsanzahlfest=1
+ \else\gfbselement={\*"]9}\gfbsanzahlfest=2
+ \fi
+ \else\gfbselement={\*""6}\gfbsanzahlfest=1
+ \fi
+ \else\ifx #1.%
+ \gfbsprefix={\*""5}%
+ \ifnum\gfbsanzahl<4
+ \ifgfbsnurterminal
+ \errhelp=\gfbsnurterminalhilfe
+ \errmessage{No Frege formula entered}%
+ \gfbselement={\*""5}\gfbsanzahlfest=0
+ \else\gfbselement={\*"--}\gfbsanzahlfest=2
+ \fi
+ \else\gfbselement={\*""4}\gfbsanzahlfest=0
+ \fi
+ \else
+ \errhelp=\gfbsfalscherstarthilfe
+ \errmessage{Unknown formula type `\string#1'}%
+ \gfbselement={\*""-}\gfbsprefix={\*""_}\gfbsanzahlfest=1
+ \fi\fi
+ \gfbsanzahlplus=1
+ \edef\gfbstoken{\the\gfbselement\the\csname gfbstoks\rom\gfbszeile\endcsname}%
+ \global\csname gfbstoks\rom\gfbszeile\endcsname=\expandafter{\gfbstoken}%
+ \ifgfbskompakt
+ \global\advance\gfbsanzahl by \gfbsanzahlfest
+ \else
+ \global\advance\gfbsanzahl by \gfbsanzahlplus
+ \fi
+ \setskip{\the\gfbszeile}{\the\gfbsanzahl}{\the\gfbshaengtan}{\the\gfbsgehtbis}%
+ \gfbsfuegelinksan{\gfbszeile}{\gfbsgehtbis}%
+ \expandafter\getskip\the\gfbsskipi\relax
+ \gfbszaehler=\gfbshaengtan \gfbsgrenze=1 \advance\gfbsgrenze by \gfbsgehtbis
+ \leavevmode\vtop\bgroup\offinterlineskip
+ \loop
+ \ifnum\gfbszaehler<\gfbsgrenze
+ \hbox{\gfbsstrut\the\csname gfbstoks\rom\gfbszaehler\endcsname}%
+ \global\csname gfbstoks\rom\gfbszaehler\endcsname={}%
+ \global\csname gfbsskip\rom\gfbszaehler\endcsname=0pt
+ \global\advance\gfbszaehler by 1
+ \repeat
+ \egroup
+}
+\def\klammerfrege#1#2#3#4#5#6#7{% \frege#1#2 mit Klammern #3 und #4;
+% #5=1 <=> ohne \frege#1; #6 Boxtyp; #7 Boxnr.
+ \setbox0=\hbox{\ifnum#5=0 \frege#1{#2}\else#2\fi}\dimen0=\ht0
+ \setbox1=\hbox{(}\advance\dimen0 by .5\dp1
+ \setbox0=\hbox{\delimiterfactor=100 \delimitershortfall=8pt
+ $\left#3\vcenter{\box0}\right#4$}%
+ \dimen1=\ht0 \advance\dimen1 by -\dimen0
+ \ifnum#7>0 \ifnum#7<5
+ \global\setbox\csname gg#6box\romannumeral#7\endcsname=\hbox{%
+ \vbox to\dimen0{\hbox{\lower\dimen1\box0}}}%
+ \else\errhelp=\ggunbekannteboxnummer
+ \errmessage{The box number must be 1, 2, 3, or 4}%
+ \fi
+ \else\errhelp=\ggunbekannteboxnummer
+ \errmessage{The box number must be \string>0 and \string<5}%
+ \fi
+ \ignorespaces
+}
+\def\pfrege#1#2#3{\klammerfrege#2{#3}()0p{#1}}%
+\def\bfrege#1#2#3{\klammerfrege#2{#3}[]0b{#1}}%
+\def\pparens#1#2{\klammerfrege{}{$#2$}()1p{#1}}%
+\def\bparens#1#2{\klammerfrege{}{$#2$}[]1b{#1}}%
+\def\ggpoderbboxausgeben#1#2{\ifnum#1>0
+ \ifnum#1<5
+ \copy\csname gg#2box\romannumeral#1\endcsname
+ \else\errhelp=\ggunbekannteboxnummer
+ \errmessage{The box number must be 1, 2, 3, or 4}%
+ ???
+ \fi
+ \else\errhelp=\ggunbekannteboxnummer
+ \errmessage{The box number must be \string>0 and \string<5}%
+ ???
+\fi}
+\def\pfbox#1{\ggpoderbboxausgeben{#1}p}
+\def\bfbox#1{\ggpoderbboxausgeben{#1}b}
+%
+% weitere Einstellungen
+%
+\def\erklaerung p#1#2 #3#4=#5{%
+\ifgfbsuseGGstyle
+ \nlp{#1}\ifx #2|\*_[-\else\*_39\fi
+ $\;
+ \vtop{\hbox{%
+ \ifx #2:%
+ $#3#4$%
+ \else
+ \frege #3{#4}%
+ \fi}}
+ =\vtop{\hbox{$#5$}}$%
+ \else\nlp{#1}\ifx #2|\*_[-\else\*_3-\fi
+ $\left\lgroup
+ \left\lgroup
+ \vcenter{\hbox{\frege #3{#4}}}
+ \right\rgroup
+ \equiv\vcenter{\hbox{$#5$}}%
+ \right\rgroup$%
+ \fi
+}
+\def\gfvererbe#1#2#3#4{{%
+ \setbox0=\vbox{\offinterlineskip\hbox{\gfbsstrut$#1$}\hbox{$\vert$}\hbox{\gfbsstrut$#2$}}%
+ \setbox2=\vbox{\offinterlineskip\hbox{\gfbsstrut$#3$}\hbox{\phantom{$\vert$}}\hbox{\gfbsstrut$#4$}}%
+ \ifdim\ht0>\ht2
+ \global\gfbsfonosenken=0.5\ht0 \global\advance\gfbsfonosenken by -\dp0
+ \else\global\gfbsfonosenken=0.5\ht2 \global\advance\gfbsfonosenken by -\dp2 \fi
+ \vcenter{\unvbox0 }\!\left(\vcenter{\unvbox2 }\right.%
+}}
+\def\gffolgt#1#2#3{%
+ \!\!{\textstyle\phantom t#1\atop\textstyle\phantom)\widetilde#2}#3%
+}
+\def\gfgehoertan#1#2#3{%
+ \!\!{\textstyle\phantom t\underline#1\atop\textstyle\phantom{)}\widetilde#2}#3%
+}
+\def\gfeindeutig#1#2#3{{%
+ \setbox0=\vbox{\offinterlineskip\hbox{\gfbsstrut$#1$}\hbox{\rm I}\hbox{\gfbsstrut$#2$}}%
+ \setbox2=\vbox{\hbox{\gfbsstrut$#3$}}%
+ \ifdim\ht0>\ht2
+ \global\gfbsfonosenken=0.5\ht0 \global\advance\gfbsfonosenken by -\dp0
+ \else\global\gfbsfonosenken=0.5\ht2 \global\advance\gfbsfonosenken by -\dp2 \fi
+ \vcenter{\unvbox0 }\vcenter{\unvbox2 }%
+}}
+\def\G#1{%
+ \ifx#1!% 1. Eintrag
+ \hbox{$\scriptstyle\mathchar"0\hexno\cmbsyfam6E
+ \mkern-9.1mu
+ \mathchar"0\hexno\cmbsyfam6E$}%
+ \else\ifx#1^% 2. Eintrag
+ \mathbin{\raise.5ex
+ \hbox{$\scriptscriptstyle\mathchar"0\hexno\cmmibfam5F$}}%
+ \else\ifx#1>% 3. Eintrag
+ \hbox{$\mathchar"0269\thinspace$}%
+ \else\ifx#10% 4. Eintrag
+ {\rm0\raise.35ex\llap{$\scriptstyle\mathchar"026E$\kern.02em}}%
+ \else\ifx#11% 5. Eintrag
+ {\rm1\raise.35ex\llap{$\scriptscriptstyle\mathchar"026E$\kern.05em}}%
+ \else\ifx#1-% 6. Eintrag
+ \hbox{\lower1ex\hbox{$\acute{\raise1ex\hbox{{\tt\char95 }}}\>$}}%
+ \else\ifx#1~% 7. Eintrag
+ \hbox{%
+ \lower.7ex\hbox{$\acute{\raise.3ex\hbox{\smash{$\mathchar"0\hexno\msafam60$}}}\>$}}%
+ \else\ifx#1_% 8. Eintrag
+ \mathbin{\hbox{%
+ \vrule width0.4pt height0.25ex depth0pt
+ \vrule width0.6em height0.4pt depth0pt
+ \vrule width0.4pt height0.25ex depth0pt}}%
+ \else\ifx#1;% 9. Eintrag
+ \mathbin{\mskip-2mu;}%
+ \else\ifx#1<% 10. Eintrag
+ \mathbin{{\scriptstyle\mathchar"026E}%
+ \hskip-.375em \hbox to.5em{\rm
+ \leaders\hrule height 1.35ex depth -1.22ex\hfill}}%
+ \else\ifx#1*% 11. Eintrag
+ \mathord{{}_{\textstyle*\,}}%
+ \else\ifx#16% 12. Eintrag
+ \mathchar"0\hexno\msbfam67
+ \else\errhelp\ggkeinbekanntessymbol
+ \errmessage{^^JUnknown symbol after \string\G}%
+ ???
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+}
+\newif\ifgefunden
+\def\ist #1 in #2?{%
+ \def\finde##1#1##2\ednif{%
+ \ifx\empty##2\empty
+ \gefundenfalse
+ \else
+ \gefundentrue
+ \fi
+ \ignorespaces}%
+ \finde#2#1\ednif
+}
+\def\gfwerteverlauf#1{%
+ \ist #1 in ae?\ifgefunden
+ \hbox{{$\mathaccent"0027\csname k#1\endcsname$}}%
+ \else\errhelp=\ggkeinvokalbuchstabe
+ \errmessage{The operator must be applied to a lowercase (greek) vowel}%
+ \mathaccent"0027\ka
+ \fi}%
+\def\kasl{\gfwerteverlauf{a}}
+\def\kesl{\gfwerteverlauf{e}}
+\def\GI{\hbox{\rm I\kern.05em}}
+\def\GU{\hbox{\ufont
+ \setbox0=\hbox{\ufont U}\dimen0=\wd0 \advance\dimen0 by.05em
+ \rlap{\raise.1ex\hbox to\dimen0{\leaders\hrule height.11ex\hfill\kern.1em}}\kern-.01em
+ \lower\ufdimii\box0\kern\ufdimi
+ \llap{\raise.4ex\hbox{$\the\gftextfontaenderung\mathchar"0\hexno\msbfam1F$}}%
+ \kern0.1em
+}}
+\ifggsymloaded
+ \let\GUorg=\GU
+ \def\GU{\setbox0=\hbox{$\GUorg$}%
+ \mathord{\hbox to \wd0{\hss$\mathchar"0\hexno\ggfam55$\hss}}}%
+\fi
+\def\Gn{\hbox{\lower.2ex\hbox{\nfont
+ n\kern.1em}%
+ \llap{\raise.2ex\hbox{$\the\gftextfontaenderung\scriptstyle\mathchar"015E$}}}\kern.01em}
+\ifggsymloaded
+ \let\Gnorg=\Gn
+ \def\Gn{\setbox0=\hbox{$\Gnorg$}%
+ \mathord{\hbox to \wd0{\hss$\the\gftextfontaenderung\mathchar"0\hexno\ggfam11$\hss}}}%
+\fi
+\def\Gbf{\mkern0mu \setbox0=\hbox{{\ffont f}}\ffont
+ \kern-.02em\copy0\kern-\wd0 \kern.04em\copy0\kern-\wd0
+ \kern-.02em\raise.03ex\box0 \kern.1em
+ \llap{\raise2ex\hbox{\ffont.}}}
+\let\Gff\Gbf
+\def\Guu{\mathop{\kern0pt
+ \smash{\hbox{$\scriptscriptstyle\mathchar"0\hexno\cmmibfam5E\mkern-4mu\mathchar"0\hexno\cmmibfam5E$}}}%
+ \limits^{\lower.1ex\hbox{{$\the\gftextfontaenderung\mathchar"015F$}}}}
+\def\Gfm{\mathbin{\mathop{\kern0pt \smash{-}}%
+ \limits^{\raise.2ex\hbox{$\scriptstyle\mathchar"2\hexno\msafam61$}}}}
+\def\Gsm{\mathbin{\mathop{\kern0pt \smash{-}}%
+ \limits^{\raise.2ex\hbox{$\scriptstyle\mathchar"2\hexno\msafam60$}}}}
+\newbox\ggunrotbox \newbox\ggrotbox
+\def\ggrotate#1#2#3{\global\setbox\ggunrotbox=\hbox{#1}%
+ \expandafter\ifx\csname rot#2\endcsname\relax
+ \message{^^JCan't do that kind of rotation.^^J}%
+ \global\setbox\ggrotbox=\copy\ggunrotbox
+ \else
+ \ifnum#3=0 \else\ht\ggunrotbox=#3ex \fi
+ \global\setbox\ggrotbox=\hbox{\csname rot#2\endcsname\ggunrotbox}%
+ \global\setbox\ggunrotbox=\hbox to\wd\ggrotbox{\hss#1\hss}%
+ \fi}
+\def\prtggrotbox{\ifggrotiere\box\ggrotbox\else\box\ggunrotbox\fi}
+\def\Gy{\ggrotate{\hbox{\accent22 y}}u1%
+ \mathbin{\prtggrotbox}}
+\def\Ge{\ggrotate{\lower.65ex\hbox{%
+ $\scriptscriptstyle\mathchar"0\hexno\cmmibfam2C$}%
+ \llap{e\kern-.1em}}u1%
+ \mathbin{\,\prtggrotbox\,}}
+\def\Gc{\ggrotate{\lower.64ex\hbox{%
+ $\scriptscriptstyle\mathchar"0\hexno\cmmibfam2C$}%
+ \llap{c\kern-.1em}}u1%
+ \mathbin{\,\prtggrotbox\,}}
+\def\Gmf{\mathbin{\mathop{\kern0pt \smash{\scriptstyle\mathchar"2\hexno\msafam61}}%
+ \limits^{\lower1ex\hbox{$\scriptstyle-$}}}}
+\def\Gf{\ggrotate{$f$}u0%
+ \mathord{\ifggrotiere\rlap{\raise.1ex\hbox{$\scriptstyle\gamma$}}\kern.025em\lower.5ex\box\ggrotbox
+ \else\rlap{\raise.4ex\hbox{$\scriptstyle\gamma$}}\kern.02em\box\ggunrotbox\fi}}
+\def\GF{\ggrotate{$F$}u1%
+ \mathbin{\prtggrotbox}}
+\def\Gl{\mathbin{\hbox{\l}}}
+\def\Gp{\mathord{%
+ \rlap{\raise.45ex\hbox{$\scriptstyle\gamma$}}\kern.15em
+ \hbox{$p$}\,}}
+\def\Gss{\ggrotate{\ss}u0%
+ \mathbin{\ifggrotiere\lower.5ex\box\ggrotbox\else\box\ggunrotbox\fi}}
+\let\Gsz\Gss
+% Zuordnung nach TUGboat, V.9, p.20
+\def\gA{A}
+\def\gB{B}
+\def\gG{{\it\Gamma}}
+\def\gD{{\it\Delta}}
+\def\gL{{\it\Lambda}}
+\def\gM{M}
+\def\gN{N}
+\def\gR{P}
+\def\gS{{\it\Sigma}}
+\def\gF{{\it\Phi}}
+\def\gQ{X}
+\def\gY{{\it\Psi}}
+\def\gE{E}
+\def\gZ{Z}
+\def\gH{H}
+\def\gJ{{\it\Theta}}
+\def\gI{I}
+\def\gK{K}
+\def\gX{{\it\Xi}}
+\def\gO{O}
+\def\gP{{\it\Pi}}
+\def\gT{T}
+\def\gU{{\it\Upsilon}}
+\def\gW{{\it\Omega}}
+\def\ka{\alpha}
+\def\kb{\beta}
+\def\kg{\gamma}
+\def\kd{\delta}
+\def\ke{\epsilon}
+\def\kz{\zeta}
+\def\kh{\eta}
+\def\kj{\vartheta}
+\def\ki{\iota}
+\def\kk{\kappa}
+\def\kl{\lambda}
+\def\km{\mu}
+\def\kn{\nu}
+\def\kx{\xi}
+\def\ko{o}
+\def\kp{\pi}
+\def\kr{\varrho}
+\def\ks{\sigma}
+\def\kt{\tau}
+\def\ku{\upsilon}
+\def\kf{\varphi}
+\def\kq{\chi}
+\def\ky{\psi}
+\def\kw{\omega}
+\def\da{{\frak a}}
+\def\dd{{\frak d}}
+\def\de{{\frak e}}
+\def\df{{\frak f}}
+\def\dF{{\frak F}}
+\def\dc{{\frak c}}
+\def\dg{{\frak g}}
+\def\dm{{\frak m}}
+\def\dn{{\frak n}}
+\def\ddo{{\frak o}}
+\def\ddp{{\frak p}}
+\def\dq{{\frak q}}
+\def\dr{{\frak r}}
+\def\dt{{\frak t}}
+\def\du{{\frak u}}
+\def\trenner #1{%
+ \vskip 0pt plus 0.5\baselineskip minus 0.25\baselineskip
+ \centerline{\hbox to 0.#1\hsize{\leaders\hrule height 1pt\hfill}}%
+ \vskip 2pt plus 0.5\baselineskip minus 0.25\baselineskip
+}
+\def\gfggtrenner{\hbox to 6\gfbseinheit{\leaders\hrule height 1pt\hfill}%
+ \ \lower.5ex\hbox{$\bullet$}\
+ \hbox to 6\gfbseinheit{\leaders\hrule height 1pt\hfill}%
+}
+\def\ggtrenner{%
+ \vskip 0pt plus 0.5\baselineskip minus 0.25\baselineskip
+ \centerline{\hskip\leftskip\gfggtrenner\hskip\rightskip}%
+ \vskip 2pt plus 0.5\baselineskip minus 0.25\baselineskip
+}
+\let\nlpc\nzpz % NewLine Position Character
+\let\ci\zi % Character Inside
+\let\ce\ze % Character End
+\let\rep\wdh % REPeat
+\def\bcc#1/#2#3:#4#5\ecc{% ConClusion
+ \bss#1/#2#3:#4#5\ess
+}
+\let\formula\formel
+\let\followswith\folgtmit
+\let\named\genannt
+\let\use\verwende
+\let\decollator\trenner
+\let\separator\ggtrenner
+\outer\def\outof p#1,#2"#3"with#4\thatis{%
+ \gfbsaus p#1,#2"#3"mit#4\also
+}
+\outer\def\substituting p#1 #2\whichgives{%
+ \gfbsdurch p#1 #2\folgende
+}
+\let\gfdefinition\erklaerung
+% Local Variables:
+% coding: iso-latin-9-unix
+% End:
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 3f64be3e539..6298b5d7665 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -252,7 +252,7 @@ my @TLP_working = qw(
gb4e gcard gchords gcite
gender geschichtsfrkl genealogy genealogytree gene-logic
genmisc genmpage gentium-tug gentle geometry geometry-de
- german germbib germkorr getfiledate getmap getoptk
+ german germbib germkorr getfiledate getmap getoptk gfnotation
gfsartemisia gfsbaskerville gfsbodoni gfscomplutum gfsdidot gfsneohellenic
gfsporson gfssolomos
ghab ghsystem gillcm gillius gincltex ginpenc gitinfo gitinfo2
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 1f89ff6b473..bd4c4e9d0ca 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1497,6 +1497,7 @@ $standardtex='\.(.bx|cfg|sty|clo|ldf|cls|def|fd|fontspec|cmap|4ht)$';
'geometry-de', 'NULL', # all doc
'german', '\.sty',
'getoptk', '\.tex',
+ 'gfnotation', 'notation\.tex',
'ginpenc', '\.gie|\.sty',
'graphics-pln','^[^e].*\.tex|.*\.sty', # not exmpl*
'greek-inputenc', '\.def|\.dfu$',
diff --git a/Master/tlpkg/tlpsrc/collection-plainextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-plainextra.tlpsrc
index 344ba4c0164..476a3d5145b 100644
--- a/Master/tlpkg/tlpsrc/collection-plainextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-plainextra.tlpsrc
@@ -10,6 +10,7 @@ depend fixpdfmag
depend font-change
depend fontch
depend getoptk
+depend gfnotation
depend graphics-pln
depend hyplain
depend js-misc
diff --git a/Master/tlpkg/tlpsrc/gfnotation.tlpsrc b/Master/tlpkg/tlpsrc/gfnotation.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/gfnotation.tlpsrc