summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bibarts
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/bibarts
Initial commit
Diffstat (limited to 'macros/latex/contrib/bibarts')
-rw-r--r--macros/latex/contrib/bibarts/COPYING339
-rw-r--r--macros/latex/contrib/bibarts/README.txt159
-rw-r--r--macros/latex/contrib/bibarts/ba-short.pdfbin0 -> 310457 bytes
-rw-r--r--macros/latex/contrib/bibarts/ba-short.tex762
-rw-r--r--macros/latex/contrib/bibarts/bibarts.pdfbin0 -> 997855 bytes
-rw-r--r--macros/latex/contrib/bibarts/bibarts.sty3991
-rw-r--r--macros/latex/contrib/bibarts/bibarts.tex6267
-rw-r--r--macros/latex/contrib/bibarts/bibsort.c7173
8 files changed, 18691 insertions, 0 deletions
diff --git a/macros/latex/contrib/bibarts/COPYING b/macros/latex/contrib/bibarts/COPYING
new file mode 100644
index 0000000000..a43ea2126f
--- /dev/null
+++ b/macros/latex/contrib/bibarts/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) 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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. 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.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: 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
+convey 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) 19yy <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 2 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This 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 Library General
+Public License instead of this License.
diff --git a/macros/latex/contrib/bibarts/README.txt b/macros/latex/contrib/bibarts/README.txt
new file mode 100644
index 0000000000..4176a231ad
--- /dev/null
+++ b/macros/latex/contrib/bibarts/README.txt
@@ -0,0 +1,159 @@
+
+BibArts is a package to administer bibliographical references in footnotes,
+and for creating a bibliography from these references simultaneously;
+it requires a program, for which source and Windows executable are provided.
+(A summary of contents is in English; the full documentation is in German.)
+
+===
+
+BibArts 2.2 is a LaTeX package to assist in making bibliographical features
+common in the arts, and in the humanities (history, political science,
+philosophy, etc.). bibarts.sty provides commands for quotation, register
+keywords, abbreviations, and especially for a formatted citation of
+literature, journals (periodicals), published documents, and unpublished
+archive documents.
+
+BibArts will also copy the arguments of all those commands into lists for an
+automatically generated appendix. These lists are optionally referring to
+page and footnote numbers in your text (index). BibArts has nothing to do
+with BibTeX, and it does not use any data bank except your own LaTeX text.
+
+The lists are created by bibsort. A file bibsort.exe is part of the package
+( CTAN mirrors > BibArts > bibarts.zip ) and runs on newer Windows systems.
+Other users first have to create a binary file from bibsort.c (ANSI-C) with
+their own C-compiler. BibArts 2.2 is developed and tested on Windows 10
+with the 2018-12-01 LaTeX 2e distribution, but even LaTeX 2.09 should work.
+
+ BibArts 2.2 (9 files, 8 dated 2019-03-03):
+ README.txt This file here
+ bibarts.sty The LaTeX style file
+ ba-short.pdf Short introduction (English)
+ ba-short.tex Source of ba-short.pdf
+ bibarts.pdf Full documentation (German)
+ bibarts.tex Source of bibarts.pdf
+ bibsort.exe Binary to create the lists
+ bibsort.c Source of bibsort.exe
+ COPYING License (dated 1993-11-28)
+
+===
+
+Changes from BibArts versions 1.x (1990s) to versions 2.x:
+
+Version 2.0 was a completely new package with massive extensions. Since,
+bibarts.sty helps to use slanted fonts (italics), and is able to set ibidem
+automatically in footnotes. Therefore, it is now possible to add volume and
+page numbers e.g. to the \vli command (\vli did also exist in 1.x for full
+references to literature), and the new \kli command (shortened references).
+Pre-defined text elements (captions) are provided as \bacaptionsenglish,
+\bacaptionsfrench, and \bacaptionsgerman (default).
+
+bibsort 2.x creates the index numbers (BibArts 2.x does not use MakeIndex).
+
+bibarts.sty 2.x starts an emulation for 1.3 texts, when you type \makebar,
+but you better keep copies of the package files of a BibArts 1.x, if you
+wrote texts with it. BibArts 2.x uses .aux files instead of a .bar file.
+Even if you set \makebar, any changes to commands \schrift, \barschrift, and
+\indschrift will be ignored. \verw and \punctuation do not exist any more;
+see examples for the new commands \frompagesep and \ntsep in bibarts.pdf.
+
+===
+
+Changes from BibArts version 2.0 (2015) to version 2.1 (2016):
+
+BibArts 2.0 set \footnotesep to 2ex, whereas 2.1 and 2.2 do *not* change the
+pre-set value. If you want to continue with the 2.0-distance between two
+footnotes, you will have to type \setlength{\footnotesep}{2ex} in your text.
+
+Some of the pre-defined text elements (captions) have been modernized. The
+\evkctitlename changed from {Short Titles} to {Shortened References}. And
+\gannouncektitname changed to "... im Folgenden". To restore its 2.0 def.:
+\renewcommand{\gannouncektitname}{ (\kern 0.015em im folgenden \baupcorr}
+
+bibarts.sty will be even loaded, when ~":;!?'`<> are active (catcode 13);
+and bibsort is sorting also "z (not only "s) as \ss now; see bibarts.pdf.
+
+You now may choose your own order of page and footnote numbers in the index
+(roman--arabic, arabic--roman, etc.). Type bibsort -s2 xxxx for page and
+... -f2 xxxx for footnote numbers. xxxx are permutations of 4 letters
+out of nRrAas (a=alph, A=Alph, n=arabic, R=Roman, r=roman, s=fnsymbol);
+you always have to set n and s, and to choose R *or* A, and r *or* a. E.g.
+srnR means, that you can use \Roman in your text, but you do not have to.
+
+bibsort is able to evaluate the new fnsymbols (which expand to \TextOrMath).
+
+If bibsort should write into files with a different prefix as the .aux input
+file, you have to use -o <outfile> now. And you may type bibsort <infile>,
+*or* bibsort -i <infile> (e.g. when the input file name begins with '-').
+
+bibsort sorts the 'official' $Greek variables$ since version 2.0. To write
+single words in Old Greek, BibArts 2.1 also provides \Alpha [A], \Beta [B],
+\Epsilon [E], \Zeta [Z], \Eta [H=sort=>E], \Iota [I], \Kappa [K], \Mu [M],
+\Nu [N], \Rho [P==>R], \Tau [T], \Chi [X==>Ch], \Omicron [O], \omicron [o].
+
+===
+
+Changes from BibArts version 2.1 (2016) to version 2.2 (now, 2019):
+
+(1) bibsort 2.2, the sorting program of the package, has 3 new options:
+
+Use bibsort -h [...] to sort hyphens ( - \hy \fhy "= "~ ) as spaces.
+
+Use bibsort -b [...] to begin the sorting of the title at \bago, e.g.:
+ \vli{J.}{Smith}{The \bago \ktit{Book}, London 2005}
+
+ bibsort -n1 [...] will create blocks of footnote numbers only, if
+the entries are from footnotes on the same page, e.g.: 10^{3-6}, 11^{7-9}
+
+(2) If there are two entries of \kli{Smith}{Book} from two successive
+pages, but with *the same* footnote number, bibsort 2.2 will print out
+e.g. 10^{3}, 11^{3} . bibsort 2.0 and 2.1 ignored 11^{3} in that case.
+
+(3) bibsort 2.2 checks your input concerning the \ktit{Shortened Title}.
+You will find warnings on the screen and as comments in the created files.
+
+(4) \vli{J.}{Smith}{The \ktit{\onlyvoll{r}\onlykurz{R}ed Book}, 2006}
+has to be used (for index and ibidem), if the shortened title is not just
+a part of the full title ("red" and "Red"). In some cases, bibsort 2.1
+printed out wrong only-arguments on the lists. This error has been fixed.
+And errors in the sorting of entries with only-commands were eliminated.
+
+(5) You may say now \renewcommand{\ntsep}{\bapoint\ } to print out a
+full stop between name and title; BibArts is avoiding e.g. "Smith, J..".
+
+(6) If you '\renewcommand' a pre-defined text element (caption), you
+sometimes will have to adapt the italic correction. Bibarts 2.2 provides
+the homogenous command \bacorr instead of the four different commands
+\bakxxcorr, \baabkcorr, \balistcorr, and \bakntsepcorr (but those old
+commands are still valid). To print the lists, you may say now e.g.:
+ \renewcommand{\frompagesep}{\bacorr ; } \printnumvli \printnumvkc
+
+(7) If you use babel, BibArts 2.2 will not execute \originalTeX between
+list items (that's prepared by bibsort, if the catcode of " changes): It
+was useless with germanb-babel and caused errors with french-babel. With
+german.sty or ngerman.sty, the use of \originalTeX is still reproduced.
+
+(8) bibarts.sty provides new commands for the hyphenation in German:
+- \oldhyss to set a \ss, which is splitted s-s (to be used between vovels,
+ e.g. au\oldhyss er; you have to use your sharp S else, e.g. da\ss);
+- \newhyss to set a \ss, which is splitted s-s only in small caps, and
+ else is printing a sharp S, which is splitted as \language says (-\ss);
+- \hyss to execute \oldhyss, if \language is \l@german, and \newhyss else
+ (e.g. if \language is \l@ngerman --- so, \hyss can be used *always*);
+- commands for the handling of "tripple consonant before vovel" in German:
+ E.g. Sto\hyf figur, Scha\hyl leistung, Sta\hym mutter, Ke\hyn nummer,
+ Ste\hyp pullover, Sta\hyr rahmen, and Schri\hyt tempo: If \language is
+ \l@german, BibArts will PRINT AND SORT \hyf as f, and ELSE as ff, etc.
++ All commands are ready to be used in \MakeUppercase (also Dru\hyc ker).
+
+(9) If you \conferize, e.g. \kli{A}{B} will print a cross-reference to
+\vli{}{A}{\ktit{B}}. The INTERNAL KEYWORD is created from the letters,
+and some accents you use in {A} and {B}. The accents are REPRESENTED as
+\`=[ \'=] \"=* \ss=(ss \l=(l \L=(L \o=(o \O=(O \^=) \~=- \c=+
+in the keyword. The active " and \= \. \b \d are not represented any more.
+
+
+===
+
+Published under the terms of the GNU General Public License.
+
+BibArts 2.2 (C) Timo Baumann 2019
diff --git a/macros/latex/contrib/bibarts/ba-short.pdf b/macros/latex/contrib/bibarts/ba-short.pdf
new file mode 100644
index 0000000000..7e602453fc
--- /dev/null
+++ b/macros/latex/contrib/bibarts/ba-short.pdf
Binary files differ
diff --git a/macros/latex/contrib/bibarts/ba-short.tex b/macros/latex/contrib/bibarts/ba-short.tex
new file mode 100644
index 0000000000..0b64496bcb
--- /dev/null
+++ b/macros/latex/contrib/bibarts/ba-short.tex
@@ -0,0 +1,762 @@
+ \documentclass[12pt,a4paper]{article}
+ \usepackage{bibarts} \usepackage[utf8]{inputenc} %\usepackage[english]{babel}
+
+ %% bibsort -h -k
+
+ \bacaptionsenglish
+\setlength{\footnotesep}{2ex} %% ... as in bibarts.sty 2.0; see README.txt %%
+
+\hyphenation{Last-Name}
+
+ \title{The \LaTeX\hy Package \BibArts \\[.25ex] {\normalsize\slshape
+ A package to assist in making bibliographical features common in the arts}}
+ \author{\textsc{Timo Baumann}}
+ \date{\small Version 2.2, \copyright\,2019}
+
+ \setcounter{secnumdepth}{0}
+ %\renewcommand{\kxxemph}{\em}
+
+ \newcommand{\pkTitle}{k\kern -0.05em Title}
+ \newcommand{\kTitle}{\sort{kTitle}\protect\pkTitle}
+
+ \newcommand{\pbs}{\string\ \unskip}
+ \newcommand{\bs}{\protect\pbs}
+
+ \let\lbashortmem=\{
+ \let\rbashortmem=\}
+ \renewcommand{\{}{{\normalfont\lbashortmem}}
+ \renewcommand{\}}{{\normalfont\rbashortmem}}
+
+\long\def\Doppelbox#1#2{\nopagebreak\vspace{2.25ex}%
+ {\fbox{\parbox{.45\textwidth}{\frenchspacing\raggedright\footnotesize\ttfamily
+ \ignorespaces #1}\hfill\parbox{.45\textwidth}{\vspace{1ex}%
+ \begin{minipage}{.45\textwidth}\sloppy\small
+ \renewcommand{\thempfootnote}{\arabic{mpfootnote}}%
+ \setcounter{mpfootnote}{\arabic{footnote}}%
+ {\ignorespaces #2}%
+ \setcounter{footnote}{\arabic{mpfootnote}}%
+ \end{minipage}
+ \vspace{1ex}}}\vspace{2.4ex}}}
+
+\let\mempage=\thepage
+\renewcommand{\pbapageframe}[1]{\underline{#1}}
+\renewcommand{\thepage}{\textit{\bapageframe{\roman{page}}}}
+\pagestyle{myheadings}
+
+
+\begin{document}
+
+\maketitle \thispagestyle{empty}
+
+{\small\tableofcontents}
+
+\vfill\noindent\rule{\textwidth}{.1pt}
+
+\vspace{1.75ex}
+\hbox{\parbox{7.7cm}{\footnotesize\noindent
+\textbf{\BibArts~2.2 (9 files, 8 dated 2019\ko/03\ko/03):} \\[.875ex]
+ \begin{tabular}{ll}%
+ \texttt{README.txt} & Version history since 1.3 \\[-1.75pt]
+ \texttt{bibarts.sty} & The \LaTeX\ style file \\[-1.75pt]
+ \texttt{ba-short.pdf} & This documentation here \\[-1.75pt]
+ \texttt{ba-short.tex} & Source of \texttt{ba-short.pdf}\\[-1.75pt]
+ \texttt{bibarts.pdf} & Full documentation (German) \\[-1.75pt]
+ \texttt{bibarts.tex} & Source of \texttt{bibarts.pdf} \\[-1.75pt]
+ \texttt{bibsort.exe} & Binary to create the lists \\[-1.75pt]
+ \texttt{bibsort.c} & Source of \texttt{bibsort.exe} \\[-1.75pt]
+ \texttt{COPYING} & License (dated 1993/11/28) \\
+ \end{tabular}}
+\\
+\hspace*{2.4mm}
+\parbox{5.6cm}{\vspace{-.4ex}%
+ {\footnotesize\normalfont
+ \hfil\texttt{bibarts}\kern.075em(\kern-.05em at\kern-.075em)\kern.075em\texttt{gmx.de}} \\[1.4ex]
+ \tiny\sffamily
+ 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 2 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+}}
+
+
+\newpage
+\section{Introduction}
+ Type \verb|\usepackage{bibarts}| into your \textit{file}.\texttt{tex}, and
+ \verb|\bacaptionsenglish| to switch to English captions (to name pages p.,
+ not S.). They are used here. \verb|\bacaptionsfrench| sets French captions;
+ default is \verb|\bacaptionsgerman|.
+
+ \vspace{.75ex}\noindent
+ Full references to literature are created with (a page number \verb|[Pg]| is optional):
+
+ \vspace{-.4ex}
+ \Doppelbox
+ {
+ \bs vli\{FirstName\}\{LastName\}
+ \\ \ \ \{The \bs ktit\{kTitle\},
+ \\ \ \ \ Publishing Reference\}[Pg].
+ }
+ {
+ \vli{FirstName}{LastName}
+ {The \ktit{\kTitle}, Publishing Reference}[Pg].
+ }
+
+ \noindent
+ Now, \BibArts\ can also write your appendix! \texttt{bibarts.sty} writes
+ the arguments of your \verb|\vli|\hy commands into the
+ \textit{file}.\texttt{aux}, and \texttt{bibsort} creates your
+ List of Literature: Type \verb|\printvli| (p.\,\pageref{appendix}),
+ \hspace{.1em}and start \LaTeX\ + \texttt{bibsort} \textit{file} + \LaTeX.
+
+ \vspace{.75ex}\noindent
+ After you have introduced literature fully, you may use a shortened reference:
+
+ \vspace{-.6ex}
+ \Doppelbox
+ {
+ \bs kli\{LastName\}\{kTitle\}[Pg].
+ }
+ {\vspace{1.75ex}
+ \kli{LastName}{\kTitle}[Pg].
+ }
+
+ \vspace{-.3ex}\noindent
+ Use \verb|\vqu| and \verb|\kqu| \hspace{.1em}in the same way
+ \hspace{.1em}to cite published historical documents:
+
+\vspace{-.25ex}
+\Doppelbox
+{
+ \bs vqu \{Carl von\} \{Clausewitz\} \{\bs ktit\{Vom Kriege\}.
+ \\ \ Hinterlassenes Werk, 3\bs fup\{rd\}
+ \\ \ ed.\bs\ Frankfurt/M. 1991\}[3].
+ \\[2.6ex]
+ \bs kqu\{Clausewitz\}\{Vom Kriege\}[3].
+}
+{
+ \vqu {Carl von} {Clausewitz} {\ktit{Vom Kriege}.
+ Hinterlassenes Werk, 3\fup{rd} ed.\ Frankfurt/M. 1991}[3].
+ \\[1.25ex]
+ \kqu{Clausewitz}{Vom Kriege}[3].
+}
+
+ \vspace{-.25ex}\noindent
+ Then, \verb|\printvqu| will print a List of Published Documents
+ (full references).
+
+ \vspace{.75ex}\noindent
+ And \verb|\printnumvkc| (p.\,\pageref{vkc}) will print an index
+ of all your shortened references (from \verb|\kli|, \verb|\kqu|, and
+ from \verb|\ktit| inside the last argument of \verb|\vli| or \verb|\vqu|).
+
+ \vspace{.75ex}\vfill\noindent
+ There are also \BibArts\hy commands to cite periodicals
+ and archive documents:
+
+ \vspace{-.35ex}
+ \Doppelbox
+ {
+ \bs per\{Journal\}\string_Num\string_[Pg]
+ \\[1ex]
+ \bs arq\{Unpublished Document\}
+ \\ \ \{Archive File Sig\}\string|Vol\string|(Folio)
+ }
+ {
+ \per{Journal}_Num_[Pg]
+ \\[.5ex]
+ \arq{Unpublished Document}
+ {Archive File Sig}|Vol|(Folio)
+ }
+
+ \vspace{-.25ex}\noindent
+ \verb|\printper| your Periodicals, and \verb|\printarq| the List of Archive
+ Files. Spaces are forbidden before the optional arguments \verb+[Pg]+,
+ \verb+(Foilo)+, \verb+|Vol|+, or \verb+_Num_+.
+
+
+\newpage
+\noindent
+In footnotes and \texttt{minipage} footnotes, \BibArts\ is introducing
+\textsc{ibidem} automatically. That means, that \verb|\kli|, \verb|\kqu|,
+\verb|\per|, and \verb|\arq| can change to \textsc{ibidem}:
+
+\setcounter{footnote}{0}
+{\footnotesize\begin{verbatim}
+ <1> ...\footnote{ \vli{Niklas} {Luhmann} {\ktit{Soziale Systeme}.
+ Grundriß einer allgemeinen Theorie, Frankfurt/M. 1984}.}
+
+ <2> ...\footnote{\kli{Luhmann}{Soziale Systeme}|1|[22], and
+ \kli{Luhmann}{Soziale Systeme}|1|[23].}
+ <3> ...\footnote{\kli{Luhmann}{Soziale Systeme}|1|[23]. Next sentence.}
+ <4> \footnote{\kli{Luhmann}{Soziale Systeme}|2|[56].}
+
+ <5> ...\footnote{\arq{Haber to Kultusminister, 17 December 1914}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|2|(223\f).}
+
+ <6> \footnote{\arq{Setsuro Tamaru to Clara Haber, 24 December 1914}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|2|(226-231).}
+
+ <7> \footnote{\arq{Setsuro Tamaru to Clara Haber, 24 December 1914}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|2|(226-231).}
+
+ <8> \footnote{\arq{Valentini to Schmidt, 13 March 1911}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|1|(47).}
+
+ \fillarq{GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108} {2\,Vols.}
+\end{verbatim}}
+
+ \noindent
+ When you introduce a book,\footnote{ \vli{Niklas}{Luhmann}{\ktit{Soziale Systeme}.
+ Grundriß einer allgemeinen Theorie, Frankfurt/M. 1984}.}
+ you are free to add a \verb+|Vol|+, or not. But if you once have setted a \verb+|Vol|+,
+ you will have to repeat that, when you refer to the same book in the following
+ footnote (or say \verb|\clearbamem|).
+ \verb+[Pg]+ is equivalent.\footnote{\kli{Luhmann}{Soziale
+ Systeme}|1|[22], and \kli{Luhmann}{Soziale Systeme}|1|[23].}
+ Here are different page numbers in the foregoing
+ footnote.\footnote{\kli{Luhmann}{Soziale Systeme}|1|[23]. Next sentence.}\,%
+ \footnote{\kli{Luhmann}{Soziale Systeme}|2|[56].}
+
+ \vspace{1ex}\noindent
+ And here are examples about how to cite archive sources.\footnote{\arq{Haber to
+ Kultusminister, 17 December 1914}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23, Litt~A, Nr.\,108}|2|(223\f).}\,%
+ \footnote{\arq{Setsuro Tamaru to Clara Haber, 24 December 1914}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|2|(226-231).}\,%
+ \footnote{\arq{Setsuro Tamaru to Clara Haber, 24 December 1914}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|2|(226-231).}\,%
+ \footnote{\arq{Valentini to Schmidt, 13 March 1911}
+ {GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108}|1|(47).}
+ \fillarq{GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23,
+ Litt~A, Nr.\,108} {2\,Vols.}
+ The \verb|\fillarq| is adding to the entry in the
+ arq\hy list, that ``Nr.\,108'' has 2 volumes \baref{arqlist}.
+
+
+\newpage
+\renewcommand{\thepage}{\mempage}
+\setcounter{page}{1}
+\setcounter{footnote}{0}
+\section{Switches}
+ For writing an essay without a List of Literature, type \verb|\conferize|
+ at the top of your \LaTeX\ file; then, \verb|\kli| will print a cross\hy
+ reference to the full reference:
+
+ \Doppelbox
+ {\bs conferize\ ...\bs footnote\{
+ \\[.15ex] \ \ Full ref.: \ \bs vli\{Niklas\}
+ \\[.05ex] \ \ \ \{Luhmann\} \b{\{}\bs ktit\{Soziale
+ \\[.15ex] \ \ \ \ \ \ \ \ Systeme\}. Grundriß
+ \\ \ \ \ \ einer allgemeinen Theorie,
+ \\ \ \ \ \ Frankfurt/M. 1984\b{\}}[22].\}
+ \\[1.5ex] ... pp.\bs footnote\{ \bs notibidemize
+ \\ \ \ \ \%no ibidem in this footnote\%
+ \\ \ \ Shortened ref.: \bs kli\{Luhmann\}
+ \\ \ \ \ \ \ \ \{Soziale Systeme\}[23 \bs f].\}
+ }
+ {\conferize ...\footnote{
+ Full ref.: \vli{Niklas}{Luhmann} {\ktit{Soziale Systeme}.
+ Grundriß einer allgemeinen Theorie, Frankfurt/M. 1984}[22].}
+ \texttt{[u, v]} or \texttt{[w-x]} or \texttt{[y\bs f]} or
+ \texttt{[z\bs baplural]} are creating pp.\footnote{\notibidemize
+ %no ibidem in this footnote%
+ Shortened ref.: \kli{Luhmann} {Soziale Systeme}[23 \f].}
+ }
+
+ \noindent
+ If \textit{k\fhy commands} \verb|\kli| and \verb|\kqu| are never
+ used, \verb|\notannouncektit| shortened references at \textit{v\fhy commands}
+ ({\footnotesize cited as ...} will not be printed at \verb|\vli| and
+ \verb|\vqu|).
+
+ No historian? Set \verb|\notprinthints| $-$ you will never use \verb|\vqu|
+ or \verb|\kqu|, and therefore, it is unnecessary to print \ehinttovliname,
+ because there is only one \textit{v-list}.
+
+
+\section{The extra \texttt{*}\{\ko\textit{argument}\} of v- and k\fhy commands}
+
+ To cite \textit{books from teams}, set co\hy authors in star\hy arguments; use
+ x\fhy commands:
+
+ \Doppelbox
+ {
+ Set names ...\bs footnote\{Two:\
+ \\ \ \bs xvli\{FirstName\}\{LastName\}
+ \\ \ \ *\b{\{}\bs vauthor\{co-FirstName\}
+ \\ \ \ \ \ \ \{co-LastName\}\b{\}}
+ \\ \ \ \{The \bs ktit\{kTitle2\} ETC\}.\}
+ \\[1.25ex]
+ ... to ibidemize.\bs footnote\{
+ \\ \ \bs xkli\{LastName\}
+ \\ \ \ *\{\bs kauthor\{co-LastName\}\}
+ \\ \ \ \{kTitle2\}[11-14].\}
+ }
+ {
+ Set names in \texttt{\bs vauthor}~$-$\,\texttt{\bs kauthor}.\footnote{Two:
+ \xvli{FirstName}{LastName}
+ *{\vauthor{co-FirstName}
+ {co-LastName}}
+ {The \ktit{\kTitle2} ETC}.}
+
+ That's necessary to ibidemize.\footnote{\xkli{LastName}*{\kauthor{co-LastName}}{\kTitle2}[11-14].}
+ }
+
+ \noindent
+ You may use a \texttt{*}\fhy argument also in \verb|\vli| $-$ to mask text in the
+ ibidemization:
+
+ \Doppelbox
+ {
+ ...\bs footnote\{An edited book is
+ \\ \ \bs vli\{FirstName\}\{LastName\}
+ \\ \ \ *\{\bs onlyvoll\{\bs editor\}\}
+ \\ \ \ \{The \bs ktit\{kTitleEd\} ETC\}[2].\}
+ \\[1.25ex]
+ \bs footnote\{ \%Without *-argument:\
+ \\ \ \bs kli\{LastName\}\{kTitleEd\}[3, 6].\}
+ }
+ {
+ \texttt{\bs editor} has no sorting
+ weight.\footnote{An edited book is
+ \vli{FirstName}{LastName}
+ *{\onlyvoll{\editor}}
+ {The \ktit{\kTitle Ed} ETC}[2].}
+ \footnote{ %Without *-argument:\
+ \kli{LastName}{\kTitle Ed}[3, 6].}
+ }
+
+
+ \newpage
+ \noindent
+ For books with three or more authors, you have to set all `middle' authors
+ in \verb|\midvauthor| (or \verb|\midkauthor|), and the `last' in
+ \verb|\vauthor| (or \verb|\kauthor|):
+
+ \vspace{-.125ex}
+\Doppelbox
+ {
+ ...\bs footnote\{See
+ \\ \ \bs xvli\{Manfred F.\}\{Boemeke\}
+ \\ \ \ *\b{\{}\bs midvauthor\{Roger\}
+ \\ \ \ \ \ \ \ \ \ \ \ \{Chickering\}
+ \\ \ \ \ \ \bs vauthor\{Stig\}\{Förster\}\%
+ \\ \ \ \ \ \bs onlyvoll\{ \bs editors\}\b{\}}
+ \\[.2ex] \ \ \b{\{}\bs ktit\{Anticipating Total War\}.
+ \\ \ \ \ The German and American
+ \\ \ \ \ Experiences 1871-{}-1914,
+ \\ \ \ \ Cambridge/U.K. 1999\b{\}}.\}
+ \\[1ex]
+ ... all LastNames.\bs footnote\{
+ \\ \ \bs xkli\{Boemeke\}
+ \\ \ \ *\b{\{}\bs midkauthor\{Chickering\}
+ \\ \ \ \ \ \bs kauthor\{Förster\}\b{\}}
+ \\ \ \ \{Anticipating Total War\}[9\bs f]!\}
+ }
+ {
+ \texttt{bibsort} is sorting \texttt{\bs vauthor\{F\}\{L\}}
+ and \texttt{\bs midvauthor\{F\}\{L\}} as \texttt{L F}.\footnote{See
+ \xvli{Manfred F.}{Boemeke}*{\midvauthor{Roger}{Chickering}
+ \vauthor{Stig}{Förster}%
+ \onlyvoll{ \editors}}{\ktit{Anticipating Total War}.
+ The German and American Experiences 1871--1914, Cambridge/U.K. 1999}.}
+
+ You have to repeat all LastNames, but not the argument of
+ \texttt{\bs onlyvoll}.\footnote{\xkli{Boemeke}*{\midkauthor{Chickering} \kauthor{Förster}}
+ {Anticipating Total War}[9\f]!}
+ }
+
+
+\vspace{-1ex}
+\section{IBIDEM and inner references to literature}
+
+\vspace{-.125ex}
+ To cite articles in journals, use \verb|\per| inside the last argument of a
+ v\fhy command:
+
+\Doppelbox
+{
+...\bs footnote\{See \bs vqu \{John
+\\ \ \ Frederick Charles\} \{Fuller\}
+\\ \ \b{\{}Gold Medal (Military)
+\\ \ \ \bs ktit\{Prize Essay\} for 1919,
+\\ \ \ first published in:
+\\ \ \ \bs per\{Journal of the Royal
+\\ \ \ \ \ \ \ \ United Service
+\\ \ \ \ \ \ \ \ Institution\}\string_458
+\\ \ \ \ \ \ \ \ \ (1920)\string_[239-274]\b{\}}*[240].\}
+\\[1.5ex]
+...\bs footnote\{ \bs kqu \{Fuller\}
+\\ \ \ \ \ \ \ \ \ \ \ \{Prize Essay\}[241].\}
+\\[1.5ex]
+... here.\bs footnote\{ \bs vqu\{R.\}
+\\ \ \{Chevenix Trench\}
+\\ \ \{Gold Medal (Military)
+\\ \ \ \bs ktit\{Prize Essay\} for 1922,
+\\ \ \ in: \bs per\{Journal of the
+\\ \ \ \ \ \ \ \ Royal United Service
+\\ \ \ \ \ \ \ \ Institution\}\string_470
+\\ \ \ \ \ \ \ \ \ (1923)\string_[199-227]\}*[200].\}
+}
+{
+You can use \texttt{*[Pg]} to cite a
+certain page inside \texttt{[PgBegin-PgEnd]}.
+Do not type spaces before \texttt{*[Pg]}.\footnote{See
+\vqu {John Frederick Charles} {Fuller}
+{Gold Medal (Military) \ktit{Prize Essay} for 1919,
+first published in: \per{Journal of the Royal United Service
+Institution}_458 (1920)_[239-274]}*[240].}
+
+\BibArts\ creates an outer \textsc{ibidem}
+here.\footnote{ \kqu {Fuller} {Prize Essay}[241].}
+
+\BibArts\ creates an inner \textsc{ibidem}
+here.\footnote{ \vqu{R.}
+{Chevenix Trench}
+{Gold Medal (Military) \ktit{Prize Essay} for 1922,
+in: \per{Journal of the Royal United Service
+Institution}_470 (1923)_[199-227]}*[200].\label{third}}
+}
+
+ \noindent
+ After the main arguments of \verb|\per|, or \verb|\vli|, etc., you are free
+ to type \verb+_Num_+, or \verb+|Vol|+; both are only printing different
+ separators (see in note~\ref{third}: {\footnotesize no.\,Num}).
+
+ \noindent
+ To cite articles in books, you can use \verb|\vli|\,+\,\verb|\ktit| for the book
+ \textit{inside the last v\fhy argument}. \verb|\printvli| is \textit{printing} such inner
+ references \textit{as shortened references}; the \textit{full inner reference}
+ appears as separate item (see \underline{Publ}). For further articles from
+ the same book you may use an inner \verb|\kli| for the book:
+
+ \Doppelbox{
+ ...\bs footnote\{\bs vli\{FN1\}\{LN1\} \b{\b{\{}}The
+ \\[-.2ex] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \bs ktit\{First\},
+ \\[.25ex] \ in: \bs vli\{iFN\}\{iLN\}\{The \bs ktit\{iT\}
+ \\[.25ex] \ \ \ \bs protect\bs underline\{Publ\}\}\b{\b{\}}}.\}
+ \\[1ex] \bs footnote\{\bs kli\{LN1\}\{First\}.\}
+ \\[1ex] \bs footnote\{\bs vli[m]\{FN1\}\{LN1\} \b{\{}The
+ \\[.2ex] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \bs ktit\{Second\},
+ \\[-.05ex] \ in: \bs kli\{iLN\}
+ \\[.15ex] \ \ \ \{iT\}[PgBegin\bs hy PgEnd]\b{\}}*[Pg].\}
+ }
+ {
+ \texttt{\bs vli[f]}...\ or \texttt{\bs kli[f]}...\ would refer to `the same female author'.%
+ \footnote{\vli{FN1}{LN1}{The \ktit{First}, in: \vli{iFN}{iLN} {The \ktit{\protect\fbox{iT}} \protect\underline{Publ}}}.}
+ \footnote{\kli{LN1}{First}.}
+ \footnote{\vli[m]{FN1}{LN1} {The \ktit{Second}, in: \kli{iLN}{\protect\fbox{iT}}[PgBegin\hy PgEnd]}*[Pg].}
+ }
+
+\noindent
+If an inner ibidemization (as well as an inner shortened referencing in the bibliography)
+is not wanted, use \verb|\ntvauthor| instead of the inner v\fhy command:
+
+\Doppelbox
+{
+ \bs footnote\{\bs vli\{Jost\}\{Dülffer\}
+ \\ \ \{\bs em \bs ktit\{Einleitung\}\bs em, in:
+ \\ \ \ \bs ntvauthor\{Jost\}\{Dülffer\}
+ \\ \ \ Bereit zum Krieg\}[9].\}
+ \\[1ex]
+ \bs footnote\{\bs kli\{Dülffer\}
+ \\ \ \{Einleitung\}[9].\}
+}
+{
+ This is also an example to show how to {\em emphasize}
+ inside the full title.\footnote{\vli{Jost}{Dülffer}
+ {\em \ktit{Einleitung}\em, in:
+ \ntvauthor{Jost}{Dülffer} Bereit zum Krieg}[9].}
+ \footnote{\kli{Dülffer}
+ {Einleitung}[9].}
+}
+
+
+\vfill\noindent
+If you use \verb|\printnumvli| instead of \verb|\printvli|, the page and
+footnote numbers will be printed additionally (\textsc{iLN}: inner\,LastName
+/ \fbox{iT}: inner\,k\kern -0.05em Title):
+
+\vfill
+{\baonecolitemdefs\printnumvlilist}
+
+
+\let\memvlititlename=\evlititlename
+\renewcommand{\evlititlename}{\texttt{\bs printvli} \ \memvlititlename}
+
+\let\memvqutitlename=\evqutitlename
+\renewcommand{\evqutitlename}{\texttt{\bs printvqu} \ \memvqutitlename}
+
+\let\membibtitlename=\ebibtitlename
+\renewcommand{\ebibtitlename}{\texttt{\bs printbibtitle} \ \membibtitlename}
+
+
+\newpage\noindent
+The command sequence \verb|\printbibtitle| \verb|\printvli| \verb|\printvqu|
+\label{appendix} will print an easy appendix. If you type \hspace{.01em}
+\texttt{bibsort -k} \hspace{.02em} to DOS, you will get \hspace{.005em}
+$\sim$ \hspace{.005em} in both v\fhy lists, when the name (first name and last
+name) of an author is repeated:
+
+\printbibtitle \printvli \printvqu
+
+\vfill\noindent
+To change the size, in which a list is printed,
+you may type e.\,g.\ \verb|{\small| \verb|\printvli}|. \BibArts\
+provides further commands to be executed on bigger lists:
+\verb|\bibsortheads| will print capital letters between two items inside the
+lists, if the initial letter changes, whereas \verb|\bibsortspaces| will
+print only a bigger vertical space there instead. Both features are
+prepared by \verb|bibsort|.
+
+
+\newpage
+\noindent
+\subsection*{\texttt{\bs printnumvkc} \ \evkctitlename}
+\addcontentsline{toc}{subsection}{\texttt{\bs printnumvkc} \ \evkctitlename}
+\verb|\printnumvkc| prints an index of all your shortened references in
+\texttt{twocolumn}, whereas \verb|\printnumvkclist| \label{vkc} just prints
+your list without \texttt{headings} or title:\vspace{.5ex}
+
+{\batwocolitemdefs\printnumvkclist}
+
+\let\mempertitlename=\epertitlename
+\renewcommand{\epertitlename}{\texttt{\bs printper} \ \mempertitlename}
+\vspace{-.5ex}\printper
+
+\renewcommand{\epertitlename}{\texttt{\bs printnumper} \ \mempertitlename}
+\vspace{-.5ex}\printnumper
+
+\let\memarqtitlename=\earqtitlename
+\renewcommand{\earqtitlename}{\texttt{\bs printarq} \ \memarqtitlename}
+\vspace{-.5ex}\printarq \balabel{arqlist}
+
+\renewcommand{\earqtitlename}{\texttt{\bs printnumarq} \ \memarqtitlename}
+\vspace{-.5ex}\printnumarq
+
+\vspace{2ex}\noindent
+If you type \verb|\arqsection{GStAPK}{Geheimes Staatsarchiv}|,
+you will get ``\textsf{GStAPK} $-$ \textbf{Geheimes Staatsarchiv}''
+on top of all GStAPK\hy entries.
+
+
+\newpage
+\section{Additional features}
+
+\BibArts\ provides an environment to send unused bibliographical information into
+the lists. This information appears on the vqu\fhy list, but is invisible here:
+
+\vspace{-1.25ex}
+{\footnotesize\begin{verbatim}
+ !\begin{unused} \sethyphenation{ngerman}% %% other hyphenation optional
+ \vqu{Karl}{Marx}{Das \ktit{Kapital}, in: \midvauthor{Karl}{Marx}
+ \ntvauthor{Friedrich}{Engels} Werke, \ersch|3|[1]{Berlin}{1962--1964}}
+ \end{unused}! Note, that in %% vol.|3| and ed.[1] are optional
+\end{verbatim}}
+
+\vspace{-1.25ex}\noindent
+ !\begin{unused} \sethyphenation{ngerman}% %% other hyphenation optional
+ \vqu{Karl}{Marx}{Das \ktit{Kapital}, in: \midvauthor{Karl}{Marx}
+ \ntvauthor{Friedrich}{Engels} Werke, \ersch|3|[1]{Berlin}{1962--1964}}
+ \end{unused}! Note, that in %% vol.|3| and ed.[1] are optional
+\verb|{unused}|\hy environments, \textit{inner v-commands} will not send
+an own item (full reference) to the v\hy list; so, you have to repeat
+them separately.
+
+\vspace{1ex}\noindent
+\BibArts\ does not only help to cite. The environment \verb|{originalquote}|
+helps to quote from literature or sources. You may call all hyphenation
+settings, which your \LaTeX\ possesses, in the \verb|[|\textit{optional
+argument}\verb|]| of the environment:
+
+\vspace{-.5ex}
+\Doppelbox
+{\vspace{.3ex}
+ \bs begin\{originalquote\}[german]\%old
+ \\[.4ex] \ \ \string`\string`Dies ist die erste
+ \\ \ \ Wechselwirkung und das
+ \\ \ \ erste Äu\bs hyss erste, \bs fabra
+ \\ \ \ \{...\}.\string'\string'\bs footnote \b{\{}This \string`inner
+ \\ \ \ \ \ Eszett\string' splits new:
+ \\ \ \b{\b{\{}}\bs sethyphenation\{ngerman\}
+ \\[-.4ex] \ \ Au\bs hyss er\b{\b{\}}}. \bs kqu\{Clausewitz\}
+ \\[-.4ex] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Vom Kriege\}[19].\b{\}}
+ \\[.3ex] \bs end\{originalquote\}
+ \vspace{.2ex}
+}
+{\renewcommand{\originalquotetype}{\footnotesize}%
+ \begin{originalquote}[german]%old
+ ``Dies ist die erste
+ Wechselwirkung und das
+ erste Äu\hyss erste, \fabra
+ {...}.''\footnote {This `inner
+ Eszett' splits new:
+ {\sethyphenation{ngerman}
+ Au\hyss er}. \kqu{Clausewitz}
+ {Vom Kriege}[19].
+ \\[.5ex] \hspace*{3mm} \texttt{\% In \bs scshape, \bs hyss prints }{\scshape \hyss}\texttt{,}
+ \\ \hspace*{3mm} \texttt{\% and splits }{\scshape s-s}\,\texttt{ (old AND new)!}%
+ \vspace{-1.5ex}%
+ }
+ \end{originalquote}
+}
+
+\vspace{-.125ex}\noindent
+In quotations, you may use \verb|\abra| to print certain
+additives in small angular brackets; \verb|\fabra| affixes
+the argument to the following text (no line breaks):
+
+\vspace{.75ex}\noindent
+{\small
+ \verb| \abra{,} => | Red\abra{,} blue and green were the \\[-.25ex]
+ \verb| \abra{.}\newsentence => | colours\abra{.}\newsentence And \hspace{2.25em} \verb|% spacing| \\[-.25ex]
+ \verb| \abra{...} \abra{\dots} => | there \abra{...} were \abra{\dots} others, \\[-.25ex]
+ \verb| \abra{---} => | \abra{---} let's say \abra{---} \\[-.25ex]
+ \verb| \abra{-} \abra{--} => | green\abra{-}red\abra{--}painted. \\[-.25ex]
+ \verb| \fabra{`} \fabra{'} => | \hbox to 6em{\fabra{`}Ha\fabra{'},\hfill} \verb|% ASCIIs 96 and 39| \\[-.25ex]
+ \verb| \fabra{``} \abra{''} => | \fabra{``}Good!\abra{''} \\[-.25ex]
+ \verb| \fabra{"} \abra{"} => | \hbox to 6em{\fabra{"}Good!\abra{"}\hfill} \verb|% or \abra{\dq}| \\[-.25ex]
+ \verb| \fabra{e}g. => | \hbox to 6em{\fabra{e}g.\hfill} \verb|% unknown = normal|}
+
+\vspace{1.5ex}\vfill\noindent
+\BibArts\ defines
+\hspace{.1em}\verb|S\fup{te}|\hspace{.3em}\verb|=>|\hspace{.3em}S\fup{te}
+(if that command for \textit{French up} is undefined), and it provides
+commands to set ordinals in English, French and German:
+
+\vspace{.875ex}\vfill\noindent
+{\small
+ \verb| \eordinal{103} Assistant. => | \eordinal{103} Assistant. \\[-.2ex]
+ \verb| Le \fordinalm{1} homme. => | Le \fordinalm{1} homme. \\[-.25ex]
+ \verb| La \fordinalf{1} femme. => | La \fordinalf{1} femme. \\[-.2ex]
+ \verb| Der 1\te August. => | Der 1\te August.}
+
+
+ \newpage\noindent
+ For printing formatted abbreviations in your text, you may use
+ \verb|\abk{|\textit{xyz}\verb|}|. \textit{xyz} will only appear
+ on the List of Abbreviations, if it is resolved (defined):
+
+ \vspace{-.25ex}
+ \Doppelbox
+ {
+ \bs abkdef\{HMS\}\{Her Majesty\string's Ship\}
+ \\[.35ex] \ \ or
+ \\[.35ex] \bs defabk\{Her Majesty\string's Ship\}\{HMS\}
+ \\[.35ex] \ \ and then \bs texttt\{bibsort\}
+ \\[.35ex] \ \ will accept \bs abk\{HMS\}.
+ \vspace{-1ex}\strut
+ }
+ {
+ \abkdef{HMS}{Her Majesty's Ship}
+ \\ or
+ \\ \defabk{Her Majesty's Ship}{HMS}
+ \\ and then \texttt{bibsort}
+ \\ will accept \abk{HMS}.
+ \vspace{-1ex}\strut
+ }
+
+\noindent
+For a correct spacing at the end of a sentence, you can repeat
+a full stop: \verb|\abk{U.\,K.}. Next |... \verb|=>| \abk{U.\,K.}. Next
+... (also: \verb|\abk{e.\,g.}. Next |...).
+You may use \verb|\printnumabk| (or \verb|\printabk|) to print a
+List of Abbreviations:
+
+\vspace{-.325ex}
+\printnumabklist
+
+\noindent
+\BibArts\ provides no index with sub\hy items, but registers (geographical,
+subject, and person). The commands to fill the registers have one argument;
+they are invisible in your text, e.\,g.: \verb|\addtogrr{London}|,
+\verb|\addtosrr{Ship}|, and \verb|\addtoprr{Churchill}|\,.
+\verb|\printnumgrr|, \verb|\printnumsrr|, and \verb|\printnumprr| the
+registers in your appendix. This has nothing do do with \textsc{MakeIndex}.
+
+\vspace{1ex}\noindent
+A last feature of \BibArts\ are fill\hy commands. \verb|\fillgrr|,
+\verb|\fillsrr|, \verb|\fillprr|, \verb|\fillper|, and \verb|\fillarq|
+have two arguments. The first has to be identical with \textit{the} argument
+of a register\hy entry or \verb|\per|\hy command, or \textit{the second}
+argument of an \verb|\arq|\hy command (the archive file information). Use
+fill\hy commands for adding text componds, which you don't want to type
+in every single entry:
+
+\vspace{-.25ex}
+\Doppelbox
+{\vspace{1.2ex}
+ \ \bs fillprr\{Churchill\}\{1874-1965\} \\[1.5ex]
+ Churchill \bs addtoprr\{Churchill\}
+ was prime minister.\bs footnote\b{\{}
+ \\ \ Born \bs addtoprr\{Churchill\}
+ \\ \ Blenheim Palace.\b{\}} \\[1.325ex]
+ \bs renewcommand\{\bs xrrlistemph\}\{\bs em\} \\
+ \bs printnumprr
+ \vspace{1ex}
+}
+{\vspace{-1.1ex}%
+ \fbox{\begin{minipage}{.95\textwidth}
+ \setcounter{mpfootnote}{\arabic{footnote}}%
+ \vspace{.125ex}
+ \fillprr{Churchill}{1874-1965}
+ Churchill \addtoprr{Churchill}
+ was prime minister.\footnote
+ { Born \addtoprr{Churchill}
+ Blenheim Palace.}
+ \setcounter{footnote}{\arabic{mpfootnote}}%
+ \end{minipage}}
+ \\[1.6ex]
+ \fbox{\begin{minipage}{.95\textwidth}
+ \vspace{.875ex}
+ \subsubsection*{\eprrtitlename}
+ \vspace{-.75ex}%
+ \renewcommand{\xrrlistemph}{\em}%
+ {\footnotesize \printnumprrlist}%
+ \vspace{-1.375ex}%
+ \end{minipage}}%
+ \vspace{-1.3ex}%
+}
+
+\vspace{.5ex}\vfill\noindent
+Please use commands like \verb|\bfseries| to change
+the fonts, but not \verb|\textbf|:
+
+
+\vspace{1.5ex}\vfill\noindent
+{\small\begin{tabular}{lll}
+\textsf{Command} & \textsf{Predefined} & \textsf{Executed on} \\[.325ex]
+\verb|\xrrlistemph| & \verb|{}| & entries on grr\fhy, srr\fhy, and prr\hy lists\\
+\verb|\abkemph| & \verb|{\sffamily}| & abbreviations in your text \\
+\verb|\abklistemph| & \verb|{\bfseries}| & abbreviations on the abk\hy list \\
+\verb|\kxxemph| & \verb|{}| & last argument of k\hy commands \\
+\verb|\peremph| & \verb|{\normalfont\scshape}| & periodicals (\,\verb|=> {\upshape}|\,) \\
+\end{tabular}}
+
+
+\end{document}
+
+
+
+
+
+
+
+
diff --git a/macros/latex/contrib/bibarts/bibarts.pdf b/macros/latex/contrib/bibarts/bibarts.pdf
new file mode 100644
index 0000000000..ddd051a2fc
--- /dev/null
+++ b/macros/latex/contrib/bibarts/bibarts.pdf
Binary files differ
diff --git a/macros/latex/contrib/bibarts/bibarts.sty b/macros/latex/contrib/bibarts/bibarts.sty
new file mode 100644
index 0000000000..72a6cb5613
--- /dev/null
+++ b/macros/latex/contrib/bibarts/bibarts.sty
@@ -0,0 +1,3991 @@
+%% BibArts 2.2 assists you to write LaTeX texts in arts and humanities.
+%% Copyright (C) 2019 Timo Baumann bibarts[at]gmx.de (2019/03/03)
+%%
+%% 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 2 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, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+
+%% FILES OF THE PACKAGE AND DOCUMENTATION
+%% CTAN mirrors > BibArts > bibarts.zip
+%% bibarts.sty This file (a LaTeX style)
+%% ba-short.pdf Short documentation (English)
+%% ba-short.tex Source of ba-short.pdf
+%% bibarts.pdf Full documentation (German)
+%% bibarts.tex Source of bibarts.pdf
+%% bibsort.exe Binary to create the lists
+%% bibsort.c Source of bibsort.exe
+%% COPYING The license of the package
+
+
+
+%% COMPATIBILITY
+%% Change \DeclareRobustCommand into \def before using LaTeX 2.09.
+%% Then, you still NOT have to \protect BibArts-cmds in args of v-cmds.
+%% BibArts 2.2 ONLY has an EMULATION for 1.3 texts: Keep copies of 1.x?
+
+
+
+
+ %% INTERNE MINIMALIA %%
+
+%% ~"<`'>:;!? may be active:
+
+\def\grave@ba{\string`}
+ {\catcode\grave@ba\~=13%
+ \catcode\grave@ba\"=13%
+ \catcode\grave@ba\:=13%
+ \catcode\grave@ba\;=13%
+ \catcode\grave@ba\!=13%
+ \catcode\grave@ba\?=13%
+ \catcode\grave@ba\'=13%
+ \catcode\grave@ba\`=13%
+ \catcode\grave@ba\<=13%
+ \catcode\grave@ba\>=13%
+\gdef\protectchars@active{%
+ \ifnum\catcode\grave@ba\~=13\def~{\string~}\fi%
+ \ifnum\catcode\grave@ba\"=13\def"{\string"}\fi%
+ \ifnum\catcode\grave@ba\:=13\def:{\string:}\fi%
+ \ifnum\catcode\grave@ba\;=13\def;{\string;}\fi%
+ \ifnum\catcode\grave@ba\!=13\def!{\string!}\fi%
+ \ifnum\catcode\grave@ba\?=13\def?{\string?}\fi%
+ \ifnum\catcode\grave@ba\'=13\def'{\string'}\fi%
+ \ifnum\catcode\grave@ba\`=13\def`{\string`}\fi%
+ \ifnum\catcode\grave@ba\<=13\def<{\string<}\fi%
+ \ifnum\catcode\grave@ba\>=13\def>{\string>}\fi%
+}%
+}
+
+
+\def\typeout@ba#1{{\protectchars@active\typeout{#1}}}
+
+\def\errmessage@ba#1{{\protectchars@active\errmessage{#1.^^J \space. . . . . . . . . . . }}}
+
+\typeout@ba{Style Option BibArts, Version 2.2 [2019] ...}
+
+\def\msg@bafontsubst#1#2{\typeout@ba{{\string#1 ...} is unknown; I'll substitute {\string#2 ...}.}}
+
+\expandafter\ifx\csname bfseries\endcsname\relax\def\bfseries{\bf}\msg@bafontsubst{\bfseries}{\bf}\fi
+\expandafter\ifx\csname scshape\endcsname\relax\def\scshape{\sc}\msg@bafontsubst{\scshape}{\sc}\fi
+\expandafter\ifx\csname sffamily\endcsname\relax\def\sffamily{\sf}\msg@bafontsubst{\sffamily}{\sf}\fi
+\expandafter\ifx\csname slshape\endcsname\relax\def\slshape{\sl}\msg@bafontsubst{\slshape}{\sl}\def\ba@sls{}\else\let\ba@sls=\slshape\fi
+\expandafter\ifx\csname itshape\endcsname\relax\def\itshape{\it}\msg@bafontsubst{\itshape}{\it}\def\ba@its{}\else\let\ba@its=\itshape\fi
+\expandafter\ifx\csname normalfont\endcsname\relax\def\normalfont{\rm}\msg@bafontsubst{\normalfont}{\rm}\fi
+\expandafter\ifx\csname upshape\endcsname\relax
+ \def\pupshape{\ifdim\fontdimen\@ne\font=\z@\else\rm\relax\fi}%
+ \def\upshape{\protect\pupshape}\msg@bafontsubst{\upshape}{\rm[if it/sl]}\fi
+
+
+
+
+ %% corr for slanted fonts %%
+
+\def\resetcorr@ba{\gdef\bacorr{}\gdef\barefcorr{}}
+\resetcorr@ba
+
+\def\bakxxcorr{\bacorr}
+\def\baabkcorr{\bacorr}
+\def\balistcorr{\bacorr}
+\def\bakntsepcorr{\bacorr}
+%% Only \barefcorr not yet unified in 2.2 %%
+
+\def\setup@ba#1#2{\let\@bahdtest-{#1{%
+ \ifdim\fontdimen\@ne\font=\z@{\ignorespaces #2\ba@textmode\iflasthasdot@ba{\global\let\@bahdtest+}{}}\else
+ \if@reportbaup\type@bawarn{Add \string\upshape \space to \string#1}\fi
+ {\upshape{\ignorespaces #2\ba@textmode\iflasthasdot@ba{\global\let\@bahdtest+}{}}}\fi}}%
+ \iflasthasdot@ba{}{\ifx\@bahdtest+\@bahasdot\fi}}
+
+\def\init@bacorr#1#2#3{\ifdim\lastskip=\hasdotcode@ba\gdef#3{}\else
+ {\let\@testa=-\bagetnext@arg#1\endlist@ba
+ \ifx\@testa-\makecorrcmd@ba{#2}{#3}\else\gdef#3{}\@bahasdot\fi}\fi}
+
+\def\init@baXcorr#1#2#3{\ifdim\lastskip=\hasdotcode@ba\gdef#3{}\else
+ {\let\@testa=-\bagetnext@arg#1\endlist@ba
+ \ifx\@testa-\makeXcorrcmd@ba{#2}{#3}\else\gdef#3{}\@bahasdot\fi}\fi}
+
+\def\finddot@ba#1{\ifdim\lastskip=\hasdotcode@ba\let\@testa=+\else
+ \bagetnext@arg#1\endlist@ba\fi}
+
+\def\corrrrule@ba{\vrule width 0.1pt height 3pt depth 1pt\kern -0.1pt}
+\let\TeXitcorr@ba=\/
+\def\dofrco@ba@abk{%
+ \if@bafrontcorr\ifhmode
+ \TeXitcorr@ba \if@showbacorr\ifdim\lastkern=\z@\else\corrrrule@ba\fi\fi
+ \fi\fi}
+\def\dofrco@ba{\ba@textmode
+ \if@bafrontcorr\ifhmode
+ \TeXitcorr@ba \if@showbacorr\ifdim\lastkern=\z@\else\corrrrule@ba\fi\fi
+ \fi\fi}
+
+\def\@bacorrkern{\kern0.1em\if@showbacorr\corrrrule@ba\fi}
+\def\@baXcorrkern{\kern0.1em\if@showbacorr\corrrrule@ba\kern-0.1em\strut\kern0.1em\fi}
+\def\@banegkern{\kern-0.1em}
+
+\def\makeXcorrcmd@ba#1#2{{#1{\ifdim\fontdimen\@ne\font=\z@%
+ \gdef#2{}\else\gdef#2{\ifdim\fontdimen\@ne\font=\z@\nulskip@ba\strut\@baXcorrkern\fi{}}\fi}}}
+
+\def\makecorrcmd@ba#1#2{{#1{\ifdim\fontdimen\@ne\font=\z@%
+ \gdef#2{}\else\gdef#2{\ifdim\fontdimen\@ne\font=\z@\@bacorrkern\nulskip@ba\fi}\fi}}}
+
+\def\@baupcorr{\ifhmode\ifdim\fontdimen\@ne\font=\z@\else\@bacorrkern\nulskip@ba\fi\fi}
+\def\pbaupcorr{\iflasthasdot@ba{\nulskip@ba\strut}{\@baupcorr}}
+\def\baupcorr{\protect\pbaupcorr}
+
+\def\@badowncorr{\ifhmode\ifdim\fontdimen\@ne\font=\z@\@banegkern\nulskip@ba\fi\fi}
+\def\@baendcorr{\ifhmode\ifdim\fontdimen\@ne\font=\z@\else\@banegkern\nulskip@ba\fi\fi}
+
+\def\bagetnext@arg{\afterassignment\do@ba@pt\let\next@ba= }
+\def\do@ba@pt{%
+ \ifx \next@ba\endlist@ba \let\next@ba\relax
+ \else
+ \ifx .\next@ba \let\@testa=+\else
+ \ifx\egroup\next@ba \else
+ \let\@testa=-%
+ \fi\fi
+ \let\next@ba\bagetnext@arg
+ \fi \next@ba}
+
+
+
+ %% emphes %%
+
+\def\kxxemph{} %{\itshape}
+
+\def\peremph{\normalfont\scshape} %{\upshape}
+
+\def\authoremph{\normalfont\scshape} %{\upshape}
+
+\def\balistnumemph{\sffamily} %{} %{\small\itshape}
+
+\def\arqemph{\normalfont\sffamily} %{\upshape}
+
+\def\edibidemph{\scshape} %% do not change because of IBIDEM %%
+
+
+
+ %% types %%
+
+\def\originalquotetype{\small} %{\small\itshape}
+
+\def\balisttype{} %{\slshape}
+
+
+
+ %% names and seps for lists %%
+
+\def\killname{$\sim$\kern 0.05em}
+\def\femalename{\cap@ba{eadem}} %% \vli{\female ...}{...}{...}
+\def\malename{\cap@ba{idem}} %% \vli{\male ...}{...}{...}
+
+
+\newif\ifgendering\genderingfalse
+\newif\iffemale\femalefalse
+\def\female{\global\genderingtrue\global\femaletrue} %% not for use in \vauthor ...
+\def\male{\global\genderingtrue\global\femalefalse} %% ... or \midvauthor!
+\def\Ikillname{\ifgendering
+ \iffemale \femalename \else \malename \fi
+ \else \killname \fi}
+\def\Pkillname{\cap@ba{iidem}}
+
+
+\def\prep@bakntsepcorr{\def\bacorr{\ifdim\fontdimen\@ne\font=\z@\else{\kxxemph{\ifdim\fontdimen\@ne\font=\z@\@bacorrkern\nulskip@ba\fi}}\fi}}
+\def\not@bakntsepcorr{\def\bacorr{}}
+\def\ntsep{: \bacorr} %{\ifbashortcite{:\hskip0pt plus 0pt\bacorr}{: }}
+\def\ppntsep{{\@kxxbafalse\not@bakntsepcorr\ntsep}}
+\def\printntsep{\protect\ppntsep}
+
+\def\nsep{\baslash} %{, } %{ / \baupcorr} %{\upshape{\protect\nolinebreak[3] /\protect\linebreak[3] }}
+
+
+\def\listlnfnsep{, }
+
+\def\arqsep{, } %{: } %{\bapoint\newsentence}
+
+
+
+
+ %% switches %%
+
+\def\pnotaffixhints{\@affixhintsfalse}
+\def\notaffixhints{\protect\pnotaffixhints}
+
+\def\paffixhints{\@affixhintstrue}
+\def\affixhints{\protect\paffixhints}
+
+\def\pannouncektit{\@heraldktittrue}
+\def\announcektit{\protect\pannouncektit}
+
+\def\pnotannouncektit{\@heraldktitfalse}
+\def\notannouncektit{\protect\pnotannouncektit}
+
+\def\pshowbacorr{\@showbacorrtrue}
+\def\showbacorr{\protect\pshowbacorr}
+
+\def\pnotshowbacorr{\@showbacorrfalse}
+\def\notshowbacorr{\protect\pnotshowbacorr}
+
+\def\pnotbafrontcorr{\@bafrontcorrfalse}
+\def\notbafrontcorr{\protect\pnotbafrontcorr}
+
+\def\pbafrontcorr{\@bafrontcorrtrue}
+\def\bafrontcorr{\protect\pbafrontcorr}
+
+\def\pprinthints{\@printhinttrue}
+\def\printhints{\protect\pprinthints}
+
+\def\pnotprinthints{\@printhintfalse}
+\def\notprinthints{\protect\pnotprinthints}
+
+\def\pktitaddtok{\@makektitktrue}
+\def\ktitaddtok{\protect\pktitaddtok}
+
+\def\pnotktitaddtok{\@makektitkfalse}
+\def\notktitaddtok{\protect\pnotktitaddtok}
+
+
+\def\pkurzaddtoarq{\@kurztoarqtrue}
+\def\kurzaddtoarq{\protect\pkurzaddtoarq}
+
+\def\pnotkurzaddtoarq{\@kurztoarqfalse}
+\def\notkurzaddtoarq{\protect\pnotkurzaddtoarq}
+
+
+\def\pibidemize{\@ibidemizetrue}
+\def\ibidemize{\protect\pibidemize}
+
+\def\pnotibidemize{\@ibidemizefalse}
+\def\notibidemize{\protect\pnotibidemize}
+
+\def\pclearbamem{\clearmem@ba}
+\def\clearbamem{\protect\pclearbamem}
+
+\def\pshowbamem{\@bashowmemtrue}
+\def\showbamem{\protect\pshowbamem}
+
+\def\pnotshowbamem{\@bashowmemfalse}
+\def\notshowbamem{\protect\pnotshowbamem}
+
+
+\def\pnotwriteidemwarnings{\wriwarn@bafalse}
+\def\notwriteidemwarnings{\protect\pnotwriteidemwarnings}
+
+\def\pwriteidemwarnings{\wriwarn@batrue}
+\def\writeidemwarnings{\protect\pwriteidemwarnings}
+%% \bullet : Ders. fehlt moeglicherweise (gleiche Nachnamen registriert).
+%% \heartsuit: Ders. ist offenbar richtig gesetzt (gleiche Nachnamen registriert).
+%% \nabla : Ders. wegen fehlender Autoren in vorausgehender Fussnote unberechtigt.
+%% \spadesuit: Ders. ueberscheibt einen Namen, der nicht der vorausgehende ist.
+%% \clubsuit : Ders. steht irrefuehrenderweise nach einer Fussnote mit mehreren Autoren.
+
+
+\def\pconferize{\ba@varstringtrue}
+\def\conferize{\protect\pconferize}
+
+\def\pnotconferize{\ba@varstringfalse}
+\def\notconferize{\protect\pnotconferize}
+
+\def\pexeditnum{\@bamathaufltrue}
+\def\exponenteditionnumber{\protect\pexeditnum}
+
+\def\pnotexeditnum{\@bamathauflfalse}
+\def\notexponenteditionnumber{\protect\pnotexeditnum}
+
+\def\pprintlpafo{\@prnbapftrue}
+\def\printlongpagefolio{\protect\pprintlpafo}
+
+\def\pnotprintlpafo{\@prnbapffalse}
+\def\notprintlongpagefolio{\protect\pnotprintlpafo}
+
+\def\pprintlpevo{\@prnbapevotrue}
+\def\printlongpervol{\protect\pprintlpevo}
+
+\def\pnotprintlpevo{\@prnbapevofalse}
+\def\notprintlongpervol{\protect\pnotprintlpevo}
+
+\def\if@batone#1#2{{\def\@testa{T1}\ifx\@testa\encodingdefault{#1}\else{#2}\fi}}
+\def\ifbatone{\protect\if@batone}
+\def\ifbaibidem#1#2{\ifx\isibidem@ba+{#1}\else{#2}\fi}
+\def\ifbaperiodical#1#2{\if@perba{#1}\else{#2}\fi}
+\def\ifbashortcite#1#2{\if@kxxba{#1}\else{#2}\fi}
+\def\ifbaprinthints#1#2{\if@printhint{#1}\else{#2}\fi}
+\def\ifbahaspervol#1#2{\ifx\lockpevo@ba+{#1}\else{#2}\fi}
+
+\def\hasdotcode@ba{0.0011pt}
+\def\notdotcode@ba{0.0021pt}
+\def\@bahasdot{{\nobreak \hskip \hasdotcode@ba}}
+\def\@banotdot{{\nobreak \hskip \notdotcode@ba}}
+\def\pbahasdot{\@bahasdot}
+\def\pbanotdot{\@banotdot}
+\def\bahasdot{\protect\pbahasdot}
+\def\banotdot{\protect\pbanotdot}
+\def\iflasthasdot@ba#1#2{\ifdim\lastskip=\hasdotcode@ba #1\relax\else #2\relax\fi}
+\def\pifbahasdot#1#2{\iflasthasdot@ba{{#1}}{{#2}}}
+\def\ifbahasdot{\protect\pifbahasdot}
+\def\iflastnotdot@ba#1#2{\ifdim\lastskip=\notdotcode@ba #1\relax\else #2\relax\fi}
+\def\pbapoint{\iflasthasdot@ba{\nulskip@ba\strut}{\iflastnotdot@ba{\nulskip@ba\strut}{.}}}
+\def\bapoint{\protect\pbapoint}
+
+\def\pbadelsb{\ifhmode\ifdim\lastkern=\z@\else\kern-\lastkern\nobreak\fi
+ \ifdim\lastskip=\z@\nobreak\else\ifdim\lastskip=\hasdotcode@ba\nobreak\else\ifdim\lastskip=\notdotcode@ba\nobreak\else\hskip-\lastskip\fi\fi\fi\fi}
+\def\badelspacebefore{\protect\pbadelsb}
+
+\def\pernosep{\bacorr\nobreak\ } %{\bastrut\ \bacorr}
+\def\pervolshortsep{\ifbaperiodical{\ifbaibidem{, }{\pernosep}}{, }} %{\bastrut\ \bacorr}
+\def\pagefolioshortsep{\bacorr : } %{\bastrut\ \bacorr}
+
+\def\pwnsn{\@wnsntrue}
+\def\warnsamename{\protect\pwnsn}
+
+\def\pnotwnsn{\@wnsnfalse}
+\def\notwarnsamename{\protect\pnotwnsn}
+
+\def\@bastrut{\iflasthasdot@ba{\strut}{}\iflastnotdot@ba{\strut}{}}
+\def\pbastrut{\protect\@bastrut}
+\def\bastrut{\protect\pbastrut}
+\def\frompagesep{\bastrut\hskip 1.25em minus 0.25em\bacorr} %{, } %{\bacorr; } %{\bapoint\space ---\nobreak\ }
+
+\def\fromnopagevxxsep{\bapoint}
+\def\fromnopagevkcsep{} %{\bapoint}
+
+\def\fromnopagexrrsep{}
+\def\fromnopagearqsep{\bapoint}
+\def\fromnopageabksep{} %{\bapoint}
+\def\fromnopagepersep{\bapoint}
+
+ \def\pxrrlo{\bastrut\ \bacorr(}
+ \def\pxrrlc{)}
+\def\xrrlistopen{\protect\pxrrlo}
+\def\xrrlistclose{\protect\pxrrlc}
+
+ \def\parqlo{\bastrut\hskip 1em minus 0.3em\bacorr}
+ \def\parqlc{}
+\def\arqlistopen{\protect\parqlo}
+\def\arqlistclose{\protect\parqlc}
+
+\def\arqsectionopen{\bastrut\ \bacorr $-$ }
+\def\arqsectionclose{\bahasdot}
+\def\arqsubsectionopen{\bastrut\ \bacorr $-$ }
+\def\arqsubsectionclose{\bahasdot}
+\def\arqsubsubsectionopen{\bastrut\ \bacorr $-$ }
+\def\arqsubsubsectionclose{\bahasdot}
+
+\def\arqsectionbegin{\vskip 4ex plus 1ex minus 1ex\pagebreak[3]\normalsize\bfseries}
+\def\arqsubsectionbegin{\vskip 3.5ex plus 0.8ex minus 0.8ex\pagebreak[2]\small\bfseries}
+\def\arqsubsubsectionbegin{\vskip 3ex plus 0.6ex minus 0.6ex\pagebreak[2]\footnotesize\bfseries}
+\def\arqsectionend{\nopagebreak[3]\vspace{0.5ex}\nopagebreak[3]}
+\def\arqsubsectionend{\nopagebreak[3]\vspace{0.5ex}\nopagebreak[3]}
+\def\arqsubsubsectionend{\nopagebreak[3]\vspace{0.5ex}\nopagebreak[3]}
+
+ \def\pperlo{\bastrut\ \bacorr $-$ }
+ \def\pperlc{}
+\def\perlistopen{\protect\pperlo}
+\def\perlistclose{\protect\pperlc}
+
+ \def\pabklo{\bastrut\hskip 1.2em minus 0.3em\bacorr}
+ \def\pabklc{}
+\def\abklistopen{\protect\pabklo}
+\def\abklistclose{\protect\pabklc}
+
+\def\abkdefopen{\bacorr\ (}
+\def\abkdefclose{)}
+\def\defabkopen{\bastrut\ (\bacorr}
+\def\defabkclose{\bacorr)}
+
+\def\xrrlistemph{} %{\itshape}
+\def\arqlistemph{\arqemph\relax\normalsize}
+\def\perlistemph{\peremph}
+\def\abklistemph{\bfseries} %{\abkemph}
+
+
+
+
+ %% Captions %%
+
+
+\newif\if@ibidhp\@ibidhpfalse
+\newif\if@giep\@giepfalse
+\newif\if@fiep\@fiepfalse
+\newif\if@eiep\@eiepfalse
+
+\def\psetibid#1#2#3{%\@bsphack
+ \def\@testa{#1}%
+ \ifx#1g\def\gibidemname{#2#3}\ifx#3.\@gieptrue\else\@giepfalse\fi\fi
+ \ifx#1f\def\fibidemname{#2#3}\ifx#3.\@fieptrue\else\@fiepfalse\fi\fi
+ \ifx#1e\def\eibidemname{#2#3}\ifx#3.\@eieptrue\else\@eiepfalse\fi\fi
+ \ifx\@testa\langcap@ba\ifx#3.\@ibidhptrue\else\@ibidhpfalse\fi\fi
+ {\errhelp{Usage:
+ ^^J\setibidem{g}{abbr}{.} OR \setibidem{e}{abbr}{.} OR \setibidem{f}{abbr}{.}
+ ^^J\setibidem{g}{text}{} OR \setibidem{e}{text}{} OR \setibidem{f}{text}{}}%
+ \ifx#1g\else\ifx#1f\else\ifx#1e\else\errorcontextlines=-1%
+ \@qqertypeout{setibid}{...}\errmessage@ba{Reject undefined language {#1}}%
+ \fi\fi\fi}%
+ \def\@testa{}%\@esphack
+ }
+\def\setibidem{\protect\psetibid}
+
+\def\cap@ba#1{{\csname \langcap@ba#1name\endcsname}}
+\def\pbacaptionsgerman{\def\langcap@ba{g}\if@giep\@ibidhptrue\else\@ibidhpfalse\fi}
+\def\pbacaptionsfrench{\def\langcap@ba{f}\if@fiep\@ibidhptrue\else\@ibidhpfalse\fi}
+\def\pbacaptionsenglish{\def\langcap@ba{e}\if@eiep\@ibidhptrue\else\@ibidhpfalse\fi}
+\def\bacaptionsgerman{\protect\pbacaptionsgerman}
+\let\bacaptionsngerman=\bacaptionsgerman
+\def\bacaptionsfrench{\protect\pbacaptionsfrench}
+\def\bacaptionsenglish{\protect\pbacaptionsenglish}
+
+\expandafter\ifx\csname fup\endcsname\relax
+\def\pfup#1{\iflasthasdot@ba{}{\@baupcorr}\escb@ba
+ \lower-0.75ex\hbox{\scriptsize{\upshape\ignorespaces #1\ba@textmode}}{\@baendcorr}{\kern 0.01pt}}%
+\def\fup{\protect\pfup}%
+\else
+\typeout{\string\fup-command used. I do not redefine.}%
+\fi
+
+\expandafter\ifx\csname editor\endcsname\relax
+%\def\peditor{\dofrco@ba\setup@ba{\edibidemph}{\cap@ba{editor}}}%
+\def\peditor{\cap@ba{editor}}%
+\def\editor{\protect\peditor}%
+\else
+\typeout{\string\editor-command used. I do not redefine.}%
+\fi
+
+\expandafter\ifx\csname editors\endcsname\relax
+%\def\peditors{\dofrco@ba\setup@ba{\edibidemph}{\cap@ba{editorp}}}%
+\def\peditors{\cap@ba{editorp}}%
+\def\editors{\protect\peditors}%
+\else
+\typeout{\string\editors-command used. I do not redefine.}%
+\fi
+
+\def\ibidemname@ba{\setup@ba{\edibidemph}{\cap@ba{ibidem}}}
+
+\def\pbaplural{\let\@testb=+}
+\def\baplural{\protect\pbaplural}
+
+\def\pbasingular{\let\@testb=.}
+\def\basingular{\protect\pbasingular} %% at the end of __||()[] %%
+
+{\catcode\grave@ba\;=12\gdef\dopassemi@ba{\ifx;\next@ba \let\@testb=+\fi}}
+{\catcode\grave@ba\;=13\gdef\doaktsemi@ba{\ifx;\next@ba \let\@testb=+\fi}}
+\def\kommin@string#1{\getnext@km#1\endlist@ba}
+\def\getnext@km{\afterassignment\do@ba@km\let\next@ba= }
+\def\do@ba@km{%
+ \ifx \next@ba\endlist@ba \let\next@ba\relax
+ \else
+ \ifx -\next@ba \let\@testb=+\fi
+ \ifx ,\next@ba \let\@testb=+\fi
+ \ifx \hy\next@ba \let\@testb=+\fi
+ \ifx \fhy\next@ba \let\@testb=+\fi
+ %\ifx \phy\next@ba \let\@testb=+\fi
+ %\ifx\pfhy\next@ba \let\@testb=+\fi
+ \ifx \f\next@ba \let\@testb=+\fi
+ \ifx \ff\next@ba \let\@testb=+\fi
+ \ifx \pf\next@ba \let\@testb=+\fi
+ \ifx \pff\next@ba \let\@testb=+\fi
+ \ifx \sq\next@ba \let\@testb=+\fi
+ \ifx \sqq\next@ba \let\@testb=+\fi
+ \ifx \psq\next@ba \let\@testb=+\fi
+ \ifx\psqq\next@ba \let\@testb=+\fi
+ \ifx \basingular\next@ba \basingular\fi
+ \ifx \baplural \next@ba \baplural \fi
+ \ifx\pbasingular\next@ba \basingular\fi
+ \ifx\pbaplural \next@ba \baplural \fi
+ \dopassemi@ba
+ \doaktsemi@ba
+ \let\next@ba\getnext@km
+ \fi \next@ba}
+
+\def\erripfpevo@ba#1{%{ \erri@ba}%
+ \ifx#1x\type@bawarn{Empty [] or ()}\else\type@bawarn{Empty || or __}\fi}
+
+\def\printpf@ba#1#2{\if@pfvba{\errorcontextlines=-1%
+ \def\@testa{#2}%
+ \let\@testb=.%
+ \ifx\@testa\@leer \erripfpevo@ba{x}\else
+ \ifx\@testa\@leerz\erripfpevo@ba{x}\else
+ \if@prnbapf\kommin@string{#2}\fi
+ {\if@prnbapf\ifx.\@testb\cap@ba{#1}\else\cap@ba{#1p}\fi
+ \else{\pagefolioshortsep}\fi
+ {\ignorespaces #2}\let\@testa=-\finddot@ba{#2}\ifx\@testa+\@bahasdot\fi}\fi\fi}\fi}
+
+\def\printpevo@ba#1#2{\if@pfvba{\errorcontextlines=-1%
+ \def\@testa{#1}%
+ \let\@testb=.%
+ \ifx\@testa\@leer \erripfpevo@ba{}\else
+ \ifx\@testa\@leerz\erripfpevo@ba{}\else
+ \if@prnbapevo\kommin@string{#1}\fi
+ {\if@prnbapevo\ifx.\@testb\cap@ba{#2}\else\cap@ba{#2p}\fi
+ \else{\pervolshortsep}\fi
+ {\ignorespaces #1}\let\@testa=-\finddot@ba{#1}\ifx\@testa+\@bahasdot\fi\gdef\bacorr{}}\fi\fi}\fi}
+
+\def\prints@ba#1#2{{\@herefunctions
+ \def\@testa{#2}%
+ \def\@testb{#1}%
+ \ifx\@testa\@leer \global\let\isibidem@ba=-%
+ \else\ifx\@testa\@leerz \global\let\isibidem@ba=-%
+ \else{\upshape{%
+ \let\@testa=-%
+ \ifx\@testb\@leer {\ignorespaces #2\ba@textmode}\finddot@ba{#2}\else
+ \ifx\@testb\@leerz {\ignorespaces #2\ba@textmode}\finddot@ba{#2}\else
+ {\ignorespaces #1\ba@textmode}\finddot@ba{#1}\fi\fi
+ \ifx\@testa+\@bahasdot\fi \arqsep}}%
+ \fi\fi}}
+
+\def\initprintpf@ba#1#2#3{\if@pfvba
+ {\@memfunctions\@outsavety\@herefunctions\fillpref@ba{#2}{#3}}%
+ {\if@footnote
+ \ifx\pmem@ba\pref@ba
+ \ifx\isibidem@ba-\printpf@ba{#1}{#3}%
+ \else\ifx\lastp@ba+\printpf@ba{#1}{#3}%
+ \else \global\let\lookpage@ba=+%
+ \fi
+ \fi
+ \else\printpf@ba{#1}{#3}%
+ \if@baouter
+ \ifx\isibidem@ba+\ifx\pos@ba1\else\global\let\thisp@ba=+\fi\fi
+ \fi
+ \fi
+ \else\printpf@ba{#1}{#3}\fi
+ \global\let\lastp@ba=-%
+ }\global\let\pmem@ba=\pref@ba\fi}
+
+\def\initprintpevo@ba#1#2{\if@pfvba
+ {\@memfunctions\@outsavety\@herefunctions\fillvolref@ba{#1}}%
+ {\if@footnote
+ \ifx\volmem@ba\volref@ba
+ \ifx\isibidem@ba-\printpevo@ba{#1}{#2}%
+ \else\ifx\lastvol@ba+\printpevo@ba{#1}{#2}%
+ \else \global\let\onlypevo@ba=-%
+ \fi
+ \fi
+ \else\printpevo@ba{#1}{#2}%
+ \fillpmem@ba{}{}%
+ \global\let\pfilled@ba=-%
+ \if@baouter
+ \ifx\isibidem@ba+\ifx\pos@ba1\else\global\let\thisvol@ba=+\fi\fi
+ \fi
+ \fi
+ \else\printpevo@ba{#1}{#2}\fi
+ \global\let\lastvol@ba=-%
+ }\global\let\volmem@ba=\volref@ba\fi}
+
+
+\def\initprints@ba#1#2{%
+ {\@memfunctions\@outsavety\@herefunctions\fillsref@ba{#2}}%
+ {\if@footnote
+ \ifx\smem@ba\sref@ba
+ \ifx\isibidem@ba-\prints@ba{#1}{#2}%
+ \else \ifx\lasts@ba+\prints@ba{#1}{#2}\fi
+ \fi
+ \else\prints@ba{#1}{#2}%
+ \if@baouter
+ \ifx\isibidem@ba+\ifx\pos@ba1\else\global\let\thiss@ba=+\fi\fi
+ \fi
+ \fi
+ \else\prints@ba{#1}{#2}\fi
+ \global\let\lasts@ba=-%
+ }\global\let\smem@ba=\sref@ba}
+
+\def\@bapg#1{\initprintpf@ba{isonpage}{p}{#1}}
+\def\@baxpg#1{\initprintpf@ba{isonxpage}{p}{#1}}
+\def\@bafolio#1{\initprintpf@ba{isonfolio}{f}{#1}}
+\def\@baxfolio#1{\initprintpf@ba{isonxfolio}{f}{#1}}
+
+
+\bacaptionsgerman %% default
+%% German:
+\def\ganonymousname{[Anonym]}
+\def\geditorname{[\kern 0.04em Hrsg.]\kern 0.02em}
+\let\geditorpname=\geditorname
+\setibidem{g}{ebd\kern -0.07em}{.}
+\def\gidemname{ders\kern -0.04em.\bahasdot} %%
+\def\geademname{dies\kern -0.04em.\bahasdot} %% \bahasdot new in 2.2 %%
+\def\giidemname{diesn\kern -0.07em.\bahasdot} %%
+\def\gvolname{, Bd.\,}
+\def\gvolpname{, Bde.\,}
+\def\gpername{\ifbaibidem{, Nr.\,}{\pernosep}}
+\def\gperpname{\ifbaibidem{, Nr.\,}{\pernosep}}
+\def\gisonfolioname{, Bl.\,}
+\def\gisonfoliopname{, Bl.\,}
+\def\gisonxfolioname{, dort: Bl.\,}
+\def\gisonxfoliopname{, dort: Bl.\,}
+\def\gisonpagename{, S.\,}
+\def\gisonpagepname{, S.\,}
+\def\gisonxpagename{, dort: S.\,}
+\def\gisonxpagepname{, dort: S.\,}
+\def\gabktitlename{Ab\-k\"ur\-zungen}
+\def\gbibtitlename{Quellen und Literatur} %% (Bibliographie:)
+\def\gvlititlename{Literatur} %% <- [L] (Sekundaerliteratur)
+\def\gvqutitlename{Gedruckte Quellen} %% <- [Q] (Primaerliteratur)
+\def\ghinttovliname{[L]} %% -> [L] Literatur
+\def\ghinttovquname{[Q]} %% -> [Q] Gedruckte Quellen
+\def\gpertitlename{Zeitschriften}
+\def\garqtitlename{Ungedruckte Quellen}
+\def\gvkctitlename{Verwendete Kurztitel}
+\def\ggrrtitlename{Ortsregister}
+\def\gprrtitlename{Personenregister}
+\def\gsrrtitlename{Sachregister}
+\def\gannouncektitname{\bastrut\ (\kern 0.015em im Folgenden \baupcorr} %at:fortan
+\def\gannouncekendname{)}
+\def\grefvbegname{(}
+\def\grefverbname{siehe}
+\def\grefvpagname{S.\,}
+\def\grefvfntname{, Anm.\,}
+\def\grefvendname{\barefcorr)}
+\def\gconfername{\kern -0.03em wie}
+\def\gerscheditionname{\teskip Auf{\kern.03em}l.,} %{\teskip Aufl.,}
+\def\gerschvolumename{Bd.,}
+\def\gerschvolumepname{Bde.,}
+\def\gerschnohousename{\oO,} %{ohne Ort,}
+\def\gerschnoyearname{\oJ} %.% %{ohne Jahr}
+ \def\oD{\protect\poD} \def\poD{o.\kern 0.1em D\kern -0.08em.\bahasdot}
+ \def\oO{\protect\poO} \def\poO{o.\kern 0.1em O\kern -0.08em.\bahasdot}
+ \def\oJ{\protect\poJ} \def\poJ{o.\kern 0.1em J\kern -0.09em.\bahasdot}
+\def\gfolpagename{\badelspacebefore\,f\kern -0.1pt.\bahasdot}
+\def\gxfolpagename{\badelspacebefore\,ff\kern -0.1pt.\bahasdot}
+
+\expandafter\ifx\csname f\endcsname\relax
+ \def\f{\protect\pf}%
+ \def\pf{\cap@ba{folpage}}%
+\else
+\typeout{\string\f-command used. I do not redefine.}%
+\fi
+
+\expandafter\ifx\csname sq\endcsname\relax
+ \def\sq{\protect\psq}%
+ \def\psq{\cap@ba{folpage}}%
+\else
+\typeout{\string\sq-command used. I do not redefine.}%
+\fi
+
+\expandafter\ifx\csname ff\endcsname\relax
+ \def\ff{\protect\pff}%
+ \def\pff{\cap@ba{xfolpage}}%
+\else
+\typeout{\string\ff-command used. I do not redefine.}%
+\fi
+
+\expandafter\ifx\csname sqq\endcsname\relax
+ \def\sqq{\protect\psqq}%
+ \def\psqq{\cap@ba{xfolpage}}%
+\else
+\typeout{\string\sqq-command used. I do not redefine.}%
+\fi
+
+%% French:
+\def\fanonymousname{[Anonyme]}
+\def\feditorname{(\kern -0.03em \'ed.\kern -0.06em)\kern 0.02em}
+\let\feditorpname=\feditorname
+\setibidem{f}{ibid\kern -0.07em}{.}
+\def\fidemname{le m\^e\-me}
+\def\feademname{la m\^e\-me}
+\def\fiidemname{les m\^e\-mes}
+\def\fvolname{, vol.\,}
+\def\fvolpname{, vol.\,}
+\def\fpername{\ifbaibidem{, n\fup{o}\,}{\pernosep}}
+\def\fperpname{\ifbaibidem{, n\fup{os}\,}{\pernosep}}
+\def\fisonfolioname{, folio\nobreak \ }
+\def\fisonfoliopname{, folii\nobreak \ }
+\def\fisonxfolioname{, l\`a: Folio\nobreak \ }
+\def\fisonxfoliopname{, l\`a: Folii\nobreak \ }
+\def\fisonpagename{, p.\,}
+\def\fisonpagepname{, p.\,}
+\def\fisonxpagename{, l\`a: p.\,}
+\def\fisonxpagepname{, l\`a: p.\,}
+\def\fabktitlename{Ab\-r\'e\-viations}
+\def\fbibtitlename{Bibliographie} %% (Travaux+Sources:)
+\def\fvlititlename{Travaux} %% <- [T]
+\def\fvqutitlename{Sources im\-pri\-m\'ees} %% <- [S]
+\def\fhinttovliname{[T]} %% -> [T] Travaux
+\def\fhinttovquname{[S]} %% -> [S] Sources imprim\'ees
+\def\fpertitlename{P\'e\-riodiques}
+\def\farqtitlename{Sources in\-\'edi\-tes}
+\def\fvkctitlename{Titres ab\-r\'e\-g\'ees}
+\def\fgrrtitlename{Registre g\'eo\-graphique}
+\def\fprrtitlename{Registre des personnes}
+\def\fsrrtitlename{Registre des sujets}
+\def\fannouncektitname{\bastrut\ (\kern 0.02em par la suite \baupcorr}
+\def\fannouncekendname{)}
+\def\frefvbegname{(}
+\def\frefverbname{voir}
+\def\frefvpagname{p.\,}
+\def\frefvfntname{, n.\,}
+\def\frefvendname{\barefcorr)}
+\def\fconfername{\kern -0.03em op.\ cit.\bahasdot}
+\def\ferscheditionname{\fupskip \'edi\-tion,} %% -> \fordinal=\fordinalf
+\def\ferschvolumename{vol.,}
+\def\ferschvolumepname{vol.,}
+\def\ferschnohousename{s.\kern 0.15em l\kern 0.02em.,} %% sans lieu
+\def\ferschnoyearname{s.\kern 0.13em d.\bahasdot} %% sans date
+\def\ffolpagename{\badelspacebefore\ sq.\bahasdot}
+\def\fxfolpagename{\badelspacebefore\ sqq.\bahasdot}
+
+%% English:
+\def\eanonymousname{[Anonymous]}
+\def\eeditorname{(\kern -0.03em ed.\kern -0.06em)\kern 0.02em}
+\def\eeditorpname{(\kern -0.03em eds.\kern -0.08em)\kern 0.02em}
+\setibidem{e}{ibidem}{}
+\def\eidemname{idem}
+\def\eeademname{eadem}
+\def\eiidemname{iidem}
+\def\evolname{, vol.\,}
+\def\evolpname{, vols.\,}
+\def\epername{\ifbaibidem{, no.\,}{\pernosep}}
+\def\eperpname{\ifbaibidem{, no.\,}{\pernosep}}
+\def\eisonfolioname{, folio\nobreak \ }%{, f.\,}
+\def\eisonfoliopname{, folii\nobreak \ }
+\def\eisonxfolioname{, there: Folio\nobreak \ }
+\def\eisonxfoliopname{, there: Folii\nobreak \ }
+\def\eisonpagename{, p.\,}
+\def\eisonpagepname{, pp.\,}
+\def\eisonxpagename{, there: p.\,}
+\def\eisonxpagepname{, there: pp.\,}
+\def\eabktitlename{Abbreviations}
+\def\ebibtitlename{Bibliography} %% (Literature+Sources:)
+\def\evlititlename{Literature} %% <- [L] (Secondary Literature)
+\def\evqutitlename{Published Documents} %% <- [D] (Primary Literature)
+\def\ehinttovliname{[L]} %% -> [L] Literature
+\def\ehinttovquname{[D]} %% -> [D] Printed Sources
+\def\epertitlename{Periodicals}
+\def\earqtitlename{Unpublished Documents}
+\def\evkctitlename{Shortened References}
+\def\egrrtitlename{Geographical index}
+\def\eprrtitlename{Person index}
+\def\esrrtitlename{Subject index}
+\def\eannouncektitname{\bastrut\ (\kern -0.02em cited as \baupcorr} %henceforth
+\def\eannouncekendname{)}
+\def\erefvbegname{[\nobreak \hskip 1pt plus 0pt}
+\def\erefverbname{see}
+\def\erefvpagname{p.\,}
+\def\erefvfntname{, n.\,}
+\def\erefvendname{\nobreak \hskip 1pt plus 0pt\barefcorr]}
+\def\econfername{\kern -0.05em cf.\bahasdot}
+\def\eerscheditionname{\fupskip edition,}
+\def\eerschvolumename{vol.,}
+\def\eerschvolumepname{vols.,}
+\def\eerschnohousename{n.\kern 0.15em p.,} %% no place
+\def\eerschnoyearname{n.\kern 0.13em d.\bahasdot} %% no date
+\def\efolpagename{\badelspacebefore\,f\kern -0.1pt.\bahasdot}
+\def\exfolpagename{\badelspacebefore\,ff\kern -0.1pt.\bahasdot}
+
+\def\pnewsentence{{\ifnum\sfcode\grave@ba\.=3000\spacefactor3000\@leerz\fi\@leerz}}
+\def\newsentence{\protect\pnewsentence}
+\def\spacefactorMMM@ba{\if@unusedbib\else\ifhmode\ifnum\sfcode\grave@ba\.=3000\spacefactor3000\fi\fi\fi}
+\def\spacefactorM@ba{\if@unusedbib\else\ifhmode\ifnum\sfcode\grave@ba\.=3000\spacefactor1000\fi\fi\fi}
+
+%%
+
+\def\ba@textmode{\ifmmode $\type@bawarn{Set forgotten \string$}\fi}
+
+
+\def\@herefunctions{%
+ \errorcontextlines=-1%
+ \def\onlyout##1{}% %% Genauso in \@hereRfunctions.
+ \def\onlyhere##1{##1}% %% Dito.
+ \def\onlyvoll##1{##1}% %% Umgekehrt in \@hereRfunctions.
+ \def\onlykurz##1{}% %% Dito.
+ \def\sort##1{}%
+ \def\bago{}%
+ \def\verb{\errmessage{verbatim is forbidden inside BibArts args}}%
+}
+
+
+%%
+
+
+\def\@outsavety{% %% not protect \nsep %%
+ \protectchars@active%
+ \def\newpage{\protect\newpage}%
+ \def\frq{\protect\frq}%
+ \def\flq{\protect\flq}%
+ \def\frqq{\protect\frqq}%
+ \def\flqq{\protect\flqq}%
+ \def\"{\string\"}%
+ \def\ddot{\protect\ddot}%
+ \def\.{\string\.}%
+ \def\dot{\protect\dot}%
+ \def\={\string\=}%
+ \def\bar{\protect\bar}%
+ \def\vec{\protect\vec}%
+ \def\^{\string\^}%
+ \def\hat{\protect\hat}%
+ \def\'{\string\'}%
+ \def\acute{\protect\acute}%
+ \def\`{\string\`}%
+ \def\grave{\protect\grave}%
+ \def\~{\string\~}%
+ \def\tilde{\protect\tilde}%
+ \def\P{\protect\P}%
+ \def\S{\protect\S}%
+ \def\aa{\protect\aa}%
+ \def\ae{\protect\ae}%
+ \def\AA{\protect\AA}%
+ \def\AE{\protect\AE}%
+ \def\b{\protect\b}%
+ \def\c{\protect\c}%
+ \def\d{\protect\d}%
+ \def\H{\protect\H}%
+ \def\i{\protect\i}%
+ \def\j{\protect\j}%
+ \def\l{\protect\l}%
+ \def\L{\protect\L}%
+ \def\o{\protect\o}%
+ \def\O{\protect\O}%
+ \def\ss{\protect\ss}%
+ \def\3{\string\3}%
+ \def\newhyss{\protect\newhyss}%
+ \def\NEWHYSS{\protect\NEWHYSS}%
+ \def\oldhyss{\protect\oldhyss}%
+ \def\OLDHYSS{\protect\OLDHYSS}%
+ \def\oldhyc{\protect\oldhyc}%
+ \def\OLDHYC{\protect\OLDHYC}%
+ \def\oldhyf{\protect\oldhyf}%
+ \def\OLDHYF{\protect\OLDHYF}%
+ \def\oldhyl{\protect\oldhyl}%
+ \def\OLDHYL{\protect\OLDHYL}%
+ \def\oldhym{\protect\oldhym}%
+ \def\OLDHYM{\protect\OLDHYM}%
+ \def\oldhyn{\protect\oldhyn}%
+ \def\OLDHYN{\protect\OLDHYN}%
+ \def\oldhyp{\protect\oldhyp}%
+ \def\OLDHYP{\protect\OLDHYP}%
+ \def\oldhyr{\protect\oldhyr}%
+ \def\OLDHYR{\protect\OLDHYR}%
+ \def\oldhyt{\protect\oldhyt}%
+ \def\OLDHYT{\protect\OLDHYT}%
+ \def\ck{\protect\ck}%
+ \def\CK{\protect\CK}%
+ \def\k{\protect\k}%
+ \def\r{\protect\r}%
+ \def\mathring{\protect\mathring}%
+ \def\t{\protect\t}%
+ \def\u{\protect\u}%
+ \def\breve{\protect\breve}%
+ \def\v{\protect\v}%
+ \def\check{\protect\check}%
+ %%\def\|{\string\|}% %% \fnsymbol ? %%
+ \def\,{\string\,}%
+ \def\*{\string\*}%
+ \def\@{\string\@}%
+ \def\-{\string\-}%
+ \def\_{\string\_}%
+ \def\${\string\$}%
+ \def\\{\string\\}%
+ \def\{{\string\{}%
+ \def\}{\string\}}%
+ \def\leavevmode{\protect\leavevmode}%
+ \def\rlap{\protect\rlap}%
+ \def\llap{\protect\llap}%
+ \def\nobreak{\protect\nobreak}%
+ \def\mathhexbox{\protect\mathhexbox}%
+ \def\authoremph{\protect\authoremph}%
+ \def\cal{\protect\cal}%
+ \def\mit{\protect\mit}%
+ \def\footnotesize{\protect\footnotesize}%
+ \def\huge{\protect\huge}%
+ \def\Huge{\protect\Huge}%
+ \def\large{\protect\large}%
+ \def\Large{\protect\Large}%
+ \def\LARGE{\protect\LARGE}%
+ \def\scriptsize{\protect\scriptsize}%
+ \def\small{\protect\small}%
+ \def\tiny{\protect\tiny}%
+ \def\normalsize{\protect\normalsize}%
+ %\def\label##1{}%
+ \def\label{\protect\label}% %% 2.09/2e? %%
+ \def\index{\protect\index}%
+ \def\glossary{\protect\glossary}%
+ \def\Alpha{\protect\Alpha}%
+ \def\Beta{\protect\Beta}%
+ \def\Epsilon{\protect\Epsilon}%
+ \def\Zeta{\protect\Zeta}%
+ \def\Eta{\protect\Eta}%
+ \def\Iota{\protect\Iota}%
+ \def\Kappa{\protect\Kappa}%
+ \def\Mu{\protect\Mu}%
+ \def\Nu{\protect\Nu}%
+ \def\Rho{\protect\Rho}%
+ \def\Tau{\protect\Tau}%
+ \def\Chi{\protect\Chi}%
+ \def\Omicron{\protect\Omicron}%
+ \def\omicron{\protect\omicron}%
+ \def\backslash{\protect\backslash}%
+ \def\sz{\protect\sz}%
+ \def\SZ{\protect\SZ}%
+ \def\selectlanguage{\protect\selectlanguage}%
+ \def\sethyphenation{\protect\sethyphenation}%
+ \def\frac{\protect\frac}%
+ \def\nosort{\protect\nosort}%
+ \def\hy{\protect\hy}%
+ \def\fhy{\protect\fhy}%
+ \def\bastrut{\protect\bastrut}%
+}
+
+
+%%
+
+
+%% Only single-line-eintries in .AUX-Files (LaTeX 2.09):
+\expandafter\ifx\csname GenericError\endcsname\relax
+ \typeout@ba{* Redefine \string\@ctrerr \space to get single-line entries in .aux-file.}%
+ \def\@ctrerr{{\errorcontextlines=-1\errmessage{Counter too large (alph/Alph/fnsymbol)}}}%
+\fi
+
+
+\def\@outfunctions{%
+ \errorcontextlines=-1%
+ \def\protect{\noexpand\noexpand\noexpand}%
+ \def\protect@onlyout{\protect}%
+ \def\par{}% %% Fehlermeldungen verringen %%
+ \if@unusedbib\def\setn@ba{{}{}{-}}\fi%
+ \def\onlyhere{\protect\onlyhere}%
+ \def\onlyout{\protect\onlyout}%
+ \def\onlyvoll{\protect\onlyvoll}%
+ \def\onlykurz{\protect\onlykurz}%
+ \def\kurz{\if@baouter\protect\outkurz\else\protect\delkurz\fi}%
+ \def\ktit{\protect\ktit}%
+ \def\vauthor{\protect\vauthor}%
+ \def\midvauthor{\protect\midvauthor}%
+ \def\kauthor{\protect\kauthor}%
+ \def\midkauthor{\protect\midkauthor}%
+ \def\addtovli{\protect\shadowv}%
+ \def\addtovqu{\protect\shadowv}%
+ \def\addtokli{\protect\shadowk}%
+ \def\addtokqu{\protect\shadowk}%
+ \def\vli{\protect\printonlyvli}%
+ \def\vqu{\protect\printonlyvqu}%
+ \def\kli{\protect\printonlykli}%
+ \def\kqu{\protect\printonlykqu}%
+ \def\printonlyvli{\protect\printonlyvli}%
+ \def\printonlyvqu{\protect\printonlyvqu}%
+ \def\printonlykli{\protect\printonlykli}%
+ \def\printonlykqu{\protect\printonlykqu}%
+ \def\xaddtovli{\protect\shadowv}%
+ \def\xaddtovqu{\protect\shadowv}%
+ \def\xaddtokli{\protect\shadowk}%
+ \def\xaddtokqu{\protect\shadowk}%
+ \def\xvli{\protect\xprintonlyvli}%
+ \def\xvqu{\protect\xprintonlyvqu}%
+ \def\xkli{\protect\xprintonlykli}%
+ \def\xkqu{\protect\xprintonlykqu}%
+ \def\xprintonlyvli{\protect\xprintonlyvli}%
+ \def\xprintonlyvqu{\protect\xprintonlyvqu}%
+ \def\xprintonlykli{\protect\xprintonlykli}%
+ \def\xprintonlykqu{\protect\xprintonlykqu}%
+ \def\per{\protect\printonlyper}%
+ \def\abkper{\protect\printonlyper}%
+ \def\fillper{\protect\shadowtwo}%
+ \def\arq{\protect\printonlyarq}%
+ \def\fillarq{\protect\shadowtwo}%
+ \def\fillgrr{\protect\shadowtwo}%
+ \def\fillprr{\protect\shadowtwo}%
+ \def\fillsrr{\protect\shadowtwo}%
+ \def\abk{\protect\printonlyabk}%
+ \def\defabk{\protect\printonlydefabk}%
+ \def\abkdef{\protect\printonlyabkdef}%
+ \def\addtoper{\protect\shadowo}%
+ \def\addtoarq{\protect\shadowt}%
+ \def\addtoabk{\protect\shadowone}%
+ \def\addtodefabk{\protect\shadowtwo}%
+ \def\addtoabkdef{\protect\shadowtwo}%
+ \def\addtogrr{\protect\shadowone}%
+ \def\addtoprr{\protect\shadowone}%
+ \def\addtosrr{\protect\shadowone}%
+ \def\printonlyper{\protect\printonlyper}%
+ \def\printonlyarq{\protect\printonlyarq}%
+ \def\printonlyabk{\protect\printonlyabk}%
+ \def\printonlydefabk{\protect\printonlydefabk}%
+ \def\printonlyabkdef{\protect\printonlyabkdef}%
+ \def\female{\protect\female}%
+ \def\male{\protect\male}%
+ \def\sort{\protect\sort}%
+ \def\bago{\protect\bago}%
+ \def\bahasdot{\protect\bahasdot}%
+ \def\bacorr{\protect\bacorr}%
+ \def\verb{\errmessage{verbatim is forbidden inside BibArts args}}%
+}
+
+
+%%
+
+
+\def\@memfunctions{%
+ \errorcontextlines=-1%
+ \def\protect{\noexpand\noexpand\noexpand}%
+ \def\kurz{\protect\kurz}%
+ \def\ktit{\protect\ktit}%
+ \def\addtovli{\protect\addtovli}%
+ \def\addtovqu{\protect\addtovqu}%
+ \def\addtokli{\protect\addtokli}%
+ \def\addtokqu{\protect\addtokqu}%
+ \def\printonlyvli{\protect\printonlyvli}%
+ \def\printonlyvqu{\protect\printonlyvqu}%
+ \def\printonlykli{\protect\printonlykli}%
+ \def\printonlykqu{\protect\printonlykqu}%
+ \def\vli{\protect\vli}%
+ \def\vqu{\protect\vqu}%
+ \def\kli{\protect\kli}%
+ \def\kqu{\protect\kqu}%
+ \def\xaddtovli{\protect\xaddtovli}%
+ \def\xaddtovqu{\protect\xaddtovqu}%
+ \def\xaddtokli{\protect\xaddtokli}%
+ \def\xaddtokqu{\protect\xaddtokqu}%
+ \def\xprintonlyvli{\protect\xprintonlyvli}%
+ \def\xprintonlyvqu{\protect\xprintonlyvqu}%
+ \def\xprintonlykli{\protect\xprintonlykli}%
+ \def\xprintonlykqu{\protect\xprintonlykqu}%
+ \def\xvli{\protect\xvli}%
+ \def\xvqu{\protect\xvqu}%
+ \def\xkli{\protect\xkli}%
+ \def\xkqu{\protect\xkqu}%
+ \def\per{\protect\per}%
+ \def\abkper{\protect\abkper}%
+ \def\fillper{\protect\fillper}%
+ \def\arq{\protect\arq}%
+ \def\fillarq{\protect\fillarq}%
+ \def\fillgrr{\protect\fillgrr}%
+ \def\fillprr{\protect\fillprr}%
+ \def\fillsrr{\protect\fillsrr}%
+ \def\abk{\protect\abk}%
+ \def\abkdef{\protect\abkdef}%
+ \def\defabk{\protect\defabk}%
+ \def\addtoper{\protect\addtoper}%
+ \def\addtoarq{\protect\addtoarq}%
+ \def\addtoabk{\protect\addtoabk}%
+ \def\addtoabkdef{\protect\addtoabkdef}%
+ \def\addtodefabk{\protect\addtodefabk}%
+ \def\addtogrr{\protect\addtogrr}%
+ \def\addtoprr{\protect\addtoprr}%
+ \def\addtosrr{\protect\addtosrr}%
+ \def\printonlyper{\protect\printonlyper}%
+ \def\printonlyarq{\protect\printonlyarq}%
+ \def\printonlyabk{\protect\printonlyabk}%
+ \def\printonlyabkdef{\protect\printonlyabkdef}%
+ \def\printonlydefabk{\protect\printonlydefabk}%
+ \def\onlyhere{\protect\onlyhere}%
+ \def\onlyout{\protect\onlyout}%
+ \def\onlyvoll{\protect\onlyvoll}%
+ \def\onlykurz{\protect\onlykurz}%
+ \def\vauthor{\protect\vauthor}%
+ \def\midvauthor{\protect\midvauthor}%
+ \def\kauthor{\protect\kauthor}%
+ \def\midkauthor{\protect\midkauthor}%
+ \def\female{}%
+ \def\male{}%
+ \def\sort{\protect\sort}% %% Nur wirksam in \protec@scr %%
+ \def\bahasdot{}%
+ \def\banotdot{}%
+ \def\bago{}%
+}
+
+
+%%
+
+
+\def\@hereRfunctions{%
+ \def\onlyout##1{}% %% Genauso in \@herefunctions
+ \def\onlyhere##1{##1}% %% Genauso in \@herefunctions
+ \def\onlyvoll##1{}% %% Umgekehrt in \@herefunctions
+ \def\onlykurz##1{##1}% %% Umgekehrt in \@herefunctions
+ \def\vauthor##1##2{\kauthor{##2}}% %% Vgl. \@hereFfunctions %%
+ \def\midvauthor##1##2{\kauthor{##2}{\nsep}\ignorespaces}%
+ \def\sort##1{}%
+}
+
+
+\def\@hereFfunctions{%
+ \def\vauthor##1##2{\kauthor{##2}}% %% Vgl. \@hereRfunctions %%
+ \def\midvauthor##1##2{\midkauthor{##2}}%
+}
+
+
+%%
+
+
+ %% commands for users %%
+
+
+\def\pBibArts{{\upshape{B\kern -.7pt\lower .5ex\hbox{i}\kern -1.45pt\lower -.285ex\hbox{\itshape{b}}\kern -2.5pt\lower .5ex\hbox{A}\kern -2.6pt\lower -.6ex\hbox{r}\kern -1.4pt\lower .2ex\hbox{t}\kern -1.4pt\lower -.303ex\hbox{s}}}}
+\def\BibArts{\protect\pBibArts}
+
+\def\bago{\command@misplace{\bago}}
+
+\def\onlyhere{\command@misplace{\onlyhere}}
+\def\onlyout{\command@misplace{\onlyout}}
+\def\onlyvoll{\command@misplace{\onlyvoll}}
+\def\onlykurz{\command@misplace{\onlykurz}}
+\def\nosort{}
+\expandafter\ifx\csname sort\endcsname\relax
+ \def\sort{\command@misplace{\sort}}%
+ \else \typeout@ba{ \string\sort\space is already defined ...
+ ^^J \space I *only* change its local definition inside BibArts' arguments.}%
+\fi
+\def\ktit{{\errhelp{
+ ^^JUse `\ktit{short-title}' only in the last argument of ...v..-cmds
+ ^^Jto mark a part of the full-cited title (for being the short-title),
+ ^^Je.g. \vli{Herbert} {Smith} {The \ktit{Story}, \ersch{Paris}{1977}}[22].
+ ^^JIf you want to cite Smith's Story again, you may use the short-title
+ ^^Jlater as last argument of a ...k..-cmd, e.g. \kli{Smith} {Story}[37].
+ ^^JThe use of \ktit - and ...k.. - is necessary to set IBIDEM (in footnotes).^^J}%
+ \errmessage@ba{Misplaced \string\ktit-cmd}}}
+\def\kurz#1{\unskip{\cap@ba{announcektit}}\if@kurztoarq{\@initaddtoarq[]{}{#1}}\fi{\@herefunctions\setup@ba{\arqemph}{#1}}{\cap@ba{announcekend}}}
+\def\kurz@ktit#1{\unskip\type@bawarn{\string\kurz\space and \string\ktit\space used}}
+\def\outkurz#1{\unskip{} [{#1\ba@textmode}]}
+\def\delkurz#1{\unskip}
+
+\def\vollout#1{\onlyvoll{\onlyout{#1}}}
+\def\vollhere#1{\onlyvoll{\onlyhere{#1}}}
+
+\def\protmva#1#2{\dofrco@ba\@printvname{#1}{\bastrut\ }{#2}{0}{0}{\nsep}\ignorespaces}
+\def\midvauthor{\protect\protmva}
+
+\def\protva#1#2{\dofrco@ba\@printvname{#1}{\bastrut\ }{#2}{0}{0}}
+\def\vauthor{\protect\protva}
+
+\def\ntvauthor#1#2{\protect@onlyout\vauthor{#1}{#2}\protect\ntsepnta}
+
+\def\protmka#1{\dofrco@ba\@printkname{#1}{0}{\nsep}\ignorespaces}
+\def\midkauthor{\protect\protmka}
+
+\def\protka#1{\dofrco@ba\@printkname{#1}{0}}
+\def\kauthor{\protect\protka}
+
+\def\ntkauthor#1{\protect@onlyout\kauthor{#1}\protect\ntsepnta}
+
+\def\protect@onlyout{}
+\def\ntsepnta{\printntsep\ignorespaces}
+
+\def\printcatcode#1{\the\catcode\grave@ba#1}
+ %% E.g. \printcatcode{\"} for value of " %%
+
+
+%%
+
+
+ %% internal %%
+
+\expandafter\ifx\csname z@skip\endcsname\relax
+\def\nulskip@ba{{\nobreak \hskip 0pt plus 0pt}}%
+\else
+\def\nulskip@ba{{\nobreak \hskip \z@skip}}%
+\fi
+
+\def\pbaslash{{\nobreak \hskip 0.24em plus 0.08em\lower -0.26ex\hbox{%
+ \normalfont\scriptsize /}\penalty-\@m\hskip .2em plus 0.08em}}
+\def\baslash{\protect\pbaslash}
+
+\expandafter\ifx\csname inputlineno\endcsname\relax
+ \typeout@ba{Install missing count \string\inputlineno: Can't handle file line numbers.}%
+ \newcount\inputlineno\inputlineno=-1\fi
+
+\def\line@ba{\the\inputlineno}
+\def\lang@ba{\the\language}
+\def\catq@ba{\the\catcode\grave@ba\"}
+\def\erri@ba{\ifnum\catcode\grave@ba\?=13\string?\string?\else??\fi}
+\def\setn@ba{{\thepage}\if@footnote{\@thefnmark}{@}\else{}{}\fi}
+
+{\catcode\grave@ba\%=12\gdef\commentch@ba{%}}
+
+\def\@leer{}
+\def\@leerz{ } %% \ifx %%
+
+\newif\if@affixhints\@affixhintsfalse
+\newif\if@kurztoarq\@kurztoarqtrue
+\newif\if@reportbaup\@reportbauptrue
+\newif\if@bafrontcorr\@bafrontcorrtrue
+\newif\if@showbacorr\@showbacorrfalse
+\newif\if@bamathaufl\@bamathauflfalse
+\newif\if@heraldktit\@heraldktittrue
+\newif\if@baouter\@baoutertrue
+\newif\if@rheraldktit\@rheraldktittrue
+\newif\if@printhint\@printhinttrue
+\newif\if@footnote\@footnotefalse
+\newif\if@makektitk\@makektitktrue
+\newif\if@ibidemize\@ibidemizetrue
+\newif\ifwriwarn@ba\wriwarn@bafalse
+\newif\if@bashowmem\@bashowmemfalse
+\newif\ifba@varstring\ba@varstringfalse
+\newif\if@allowconferize\@allowconferizetrue
+\newif\if@prnbapf\@prnbapftrue
+\newif\if@prnbapevo\@prnbapevotrue
+\newif\if@pfvba
+\newif\if@perba
+\newif\if@kxxba
+\newif\if@vxxbalist\@vxxbalistfalse
+\newif\if@balist\@balistfalse
+\newif\if@wnsn\@wnsntrue
+
+
+\def\makeibid@ba{%
+ \if@bashowmem
+ \if@baminipage
+ \protec@scr{^^J Minipage-FNT \thempfootnote}\else
+ \protec@scr{^^J FNT \thefootnote}\fi
+ \protec@scr{^^J -- outer: \space \tmemo@ba \space -- }%
+ \protec@scr{ ---------- inner: \space \tmemi@ba \space -- }%
+ \if@baouter\protec@scr{ -- o-ref: \space \tref@ba \space -- ^^J}\else
+ \protec@scr{ ---------- i-ref: \space \tref@ba \space -- ^^J}\fi
+ \fi
+ \global\let\isibidem@ba=-%
+ \if@baouter\global\let\lookpage@ba=-\fi
+ \if@footnote \if@baouter\makethiso@ba\else\makethisi@ba\fi
+ \if@baouter
+ \ifx\lastto@ba+%
+ \ifx\tmemo@ba\tref@ba \global\let\isibidem@ba=+%
+ \ifx\thisti@ba-\global\let\thisti@ba=+\fi
+ \else
+ \filltmemi@ba{}{}{}{}%
+ \ifx\thisti@ba+\global\let\thisti@ba=.\fi
+ \fi
+ \fi
+ \else
+ \ifx\lastti@ba+%
+ \ifx\tmemi@ba\tref@ba \global\let\isibidem@ba=+\fi
+ \fi
+ \fi
+ \fi}
+
+\def\makelast@ba{%
+ \if@footnote
+ \global\let\pmem@ba=\pref@ba
+ \global\let\volmem@ba=\volref@ba
+ \if@baouter
+ \global\let\tmemo@ba=\tref@ba
+ \global\let\lastto@ba=+%
+ \global\let\nmem@ba=\nref@ba
+ \else
+ \global\let\tmemi@ba=\tref@ba
+ \global\let\lastti@ba=+%
+ \fi
+ \fi}
+
+
+%%% You may comment out changes to footnote numbers from here ...
+
+\expandafter\ifx\csname @footnotemark\endcsname\relax
+\else
+\let\ba@footnmark=\@footnotemark
+\def\@footnotemark{\ifhmode{\nobreak \hskip 0.04em plus 0.01em}\else\leavevmode\fi\ba@footnmark}%
+\fi
+
+%%% ... up to here.
+
+
+\let\lastto@ba=+ %% \vli{A}{B+}{\ktit{C}} and \kli{B+}{C} in first fnt %%
+\def\makethiso@ba{%
+ \ifx\thisto@ba+\ifx\tmemo@ba\tref@ba\else\global\let\thisto@ba=.\fi\fi
+ \ifx\thisto@ba-\global\let\thisto@ba=+\fi
+ \ifx\pos@ba1\global\let\pos@ba=2\fi
+ \ifx\pos@ba0\global\let\pos@ba=1\fi}
+
+\let\lastti@ba=+
+\def\makethisi@ba{%
+ \ifx\thisti@ba+\ifx\tmemi@ba\tref@ba\else\global\let\thisti@ba=.\fi\fi
+ \ifx\thisti@ba-\global\let\thisti@ba=+\fi}
+
+\let\lastn@ba=-
+\expandafter\ifx\csname @footnotetext\endcsname\relax
+\type@bawarn{No footnote numbers}%
+\else
+\let\ba@footnotetext=\@footnotetext
+\long\def\@footnotetext#1{\ba@footnotetext{%
+ \global\let\thisto@ba=-%
+ \global\let\thisti@ba=-%
+ \global\let\thisp@ba=-%
+ \global\let\thisvol@ba=-%
+ \global\let\thiss@ba=-%
+ \global\let\thisn@ba=-%
+ \global\let\pos@ba=0%
+ \kern 0.1em\nulskip@ba{\@footnotetrue\ignorespaces
+ #1\nulskip@ba\ba@textmode}\global\let\lastto@ba=\thisto@ba
+ \global\let\lastti@ba=\thisti@ba
+ \global\let\lastp@ba=\thisp@ba
+ \global\let\lastvol@ba=\thisvol@ba
+ \global\let\lasts@ba=\thiss@ba
+ \global\let\lastn@ba=\thisn@ba}}%
+\fi
+
+\expandafter\ifx\csname @mpfootnotetext\endcsname\relax
+\type@bawarn{No minipage-footnote numbers}%
+\else
+\let\ba@mpfootnotetext=\@mpfootnotetext
+\long\def\@mpfootnotetext#1{\ba@mpfootnotetext{%
+ \global\let\thisto@ba=-%
+ \global\let\thisti@ba=-%
+ \global\let\thisp@ba=-%
+ \global\let\thisvol@ba=-%
+ \global\let\thiss@ba=-%
+ \global\let\thisn@ba=-%
+ \global\let\pos@ba=0%
+ \kern 0.1em\nulskip@ba{\@footnotetrue\ignorespaces
+ #1\nulskip@ba\ba@textmode}\global\let\lastto@ba=\thisto@ba
+ \global\let\lastti@ba=\thisti@ba
+ \global\let\lastp@ba=\thisp@ba
+ \global\let\lastvol@ba=\thisvol@ba
+ \global\let\lasts@ba=\thiss@ba
+ \global\let\lastn@ba=\thisn@ba}}%
+\fi
+
+
+\newif\if@baminipage\@baminipagefalse
+\newif\if@bainnerminipage\@bainnerminipagefalse
+
+\let\ba@minipg=\minipage
+\def\minipage{\if@baminipage\@bainnerminipagetrue\else
+ \savemem@ba\clearmem@ba
+ \global\let\lastto@ba=+%
+ \global\let\lastti@ba=+%
+ %\global\let\lastp@ba=-%
+ %\global\let\lastvol@ba=-%
+ %\global\let\lasts@ba=-%
+ \global\let\lastn@ba=-%
+ \global\let\pfilled@ba=-%
+ \global\let\pevofilled@ba=-%
+ \fi
+ \global\@baminipagetrue\ba@minipg}
+
+\let\ba@endminipg=\endminipage
+\def\endminipage{\if@bainnerminipage\else
+ \restoremem@ba\global\@baminipagefalse\fi
+ \ba@endminipg}
+
+\def\savemem@ba{%
+ \global\let\Stmemo@ba=\tmemo@ba
+ \global\let\Stmemi@ba=\tmemi@ba
+ \global\let\Stref@ba=\tref@ba
+ \global\let\Snmem@ba=\nmem@ba
+ \global\let\Snref@ba=\nref@ba
+ \global\let\Spmem@ba=\pmem@ba
+ \global\let\Spref@ba=\pref@ba
+ \global\let\Svolmem@ba=\volmem@ba
+ \global\let\Svolref@ba=\volref@ba
+ \global\let\Ssmem@ba=\smem@ba
+ \global\let\Ssref@ba=\sref@ba
+ \global\let\Slastto@ba=\lastto@ba
+ \global\let\Slastti@ba=\lastti@ba
+ \global\let\Slastp@ba=\lastp@ba
+ \global\let\Slastvol@ba=\lastvol@ba
+ \global\let\Slasts@ba=\lasts@ba
+ \global\let\Slastn@ba=\lastn@ba
+ \global\let\Spfilled@ba=\pfilled@ba
+ \global\let\Svolfilled@ba=\pevofilled@ba
+ }
+
+\def\restoremem@ba{%
+ \global\let\tmemo@ba=\Stmemo@ba \global\let\Stmemo@ba\relax
+ \global\let\tmemi@ba=\Stmemi@ba \global\let\Stmemi@ba\relax
+ \global\let\tref@ba=\Stref@ba \global\let\Stref@ba\relax
+ \global\let\nmem@ba=\Snmem@ba \global\let\Snmem@ba\relax
+ \global\let\nref@ba=\Snref@ba \global\let\Snref@ba\relax
+ \global\let\pmem@ba=\Spmem@ba \global\let\Spmem@ba\relax
+ \global\let\pref@ba=\Spref@ba \global\let\Spref@ba\relax
+ \global\let\volmem@ba=\Svolmem@ba \global\let\Svolmem@ba\relax
+ \global\let\volref@ba=\Svolref@ba \global\let\Svolref@ba\relax
+ \global\let\smem@ba=\Ssmem@ba \global\let\Ssmem@ba\relax
+ \global\let\sref@ba=\Ssref@ba \global\let\Ssref@ba\relax
+ \global\let\lastto@ba=\Slastto@ba \global\let\Slastto@ba\relax
+ \global\let\lastti@ba=\Slastti@ba \global\let\Slastti@ba\relax
+ \global\let\lastp@ba=\Slastp@ba \global\let\Slastp@ba\relax
+ \global\let\lastvol@ba=\Slastvol@ba\global\let\Slastvol@ba\relax
+ \global\let\lasts@ba=\Slasts@ba \global\let\Slasts@ba\relax
+ \global\let\lastn@ba=\Slastn@ba \global\let\Slastn@ba\relax
+ \global\let\pfilled@ba=\Spfilled@ba\global\let\Spfilled@ba\relax
+ \global\let\pevofilled@ba=\Svolfilled@ba\global\let\Svolfilled@ba\relax
+ }
+
+
+
+\def\anon@ba{\nulskip@ba\setup@ba{\authoremph}{\cap@ba{anonymous}}}
+
+\def\@printvname#1#2#3#4#5{{\upshape
+ \let\@testa=-%
+ \def\@testd{#1}%
+ \def\@testb{#3}%
+ \def\@testc{\male}%
+ \ifx\@testd\@testc\def\@testd{}\fi
+ \ifx\@testb\@testc\def\@testb{}\fi
+ \def\@testc{\female}%
+ \ifx\@testd\@testc\def\@testd{}\fi
+ \ifx\@testb\@testc\def\@testb{}\fi
+ \ifx\@testd\@leer\ifx\@testb\@leer\anon@ba\fi\fi
+ \ifx\@testd\@leerz\ifx\@testb\@leer\anon@ba\fi\fi
+ \ifx\@testd\@leer\ifx\@testb\@leerz\anon@ba\fi\fi
+ \ifx\@testd\@leerz\ifx\@testb\@leerz\anon@ba\fi\fi
+ \ifx\@testd\@leer\else\ifx\@testd\@leerz\else
+ \ifnum #4=1%
+ \ifx\@testb\@leer\setup@ba{\authoremph}{#1}\ifnum #5=1\finddot@ba{#1}\fi\else\ifx\@testb\@leerz\setup@ba{\authoremph}{#1}\ifnum #5=1\finddot@ba{#1}\fi\else\setup@ba{\authoremph}{#1}{#2}\fi\fi %% no \underline{#1#2}
+ \else\ifx\@testb\@leer{\ignorespaces #1\ba@textmode}\ifnum #5=1\finddot@ba{#1}\fi\else\ifx\@testb\@leerz{\ignorespaces #1\ba@textmode}\ifnum #5=1\finddot@ba{#1}\fi\else
+ {\ignorespaces #1#2\ba@textmode}\fi\fi
+ \fi
+ \fi\fi
+ \ifx\@testb\@leer\else\ifx\@testb\@leerz\else
+ \ifnum #4=0\setup@ba{\authoremph}{#3}\ifnum #5=1\finddot@ba{#3}\fi\else{\ignorespaces #3\ba@textmode}\ifnum #5=1\finddot@ba{#3}\fi\fi
+ \fi\fi
+ \ifx\@testa+\@bahasdot\fi}}
+
+\def\@printkname#1#2{{%
+ \let\@testa=-%
+ \def\@testd{#1}%
+ \ifx\@testd\@leer\anon@ba\else
+ \ifx\@testd\@leerz\anon@ba\else
+ \setup@ba{\authoremph}{#1}\ifnum #2=1\finddot@ba{#1}\fi\fi\fi
+ \ifx\@testa+\@bahasdot\fi}}
+
+
+\newbox\testbox@ba
+
+\def\@printlastarg#1#2{{%
+ \setbox\testbox@ba=\hbox{#2{\ignorespaces #1\ba@textmode}}%
+ \ifdim\ht\testbox@ba=0pt%
+ \if@kxxba
+ \gdef\bacorr{}% %% no \if@printhint\else in 2.2 %%
+ \fi
+ \else
+ {\if@kxxba\iflasthasdot@ba{\not@bakntsepcorr}{\prep@bakntsepcorr}\else
+ \not@bakntsepcorr\fi\ntsep}{\unhbox\testbox@ba}%
+ \if@kxxba
+ \let\@testa=-\finddot@ba{#1}%
+ \ifx\@testa+\@bahasdot\gdef\bacorr{}\fi
+ \let\@testb+%
+ \do@banohint{\let\@testb-}%
+ \ifx\@testb+%
+ \@bastrut
+ \ifx\@testa-{\bacorr}\fi
+ \makecorrcmd@ba{}{\bacorr}%
+ \else
+ \ifx\@testa-\makecorrcmd@ba{\kxxemph}{\bacorr}\else
+ \gdef\bacorr{}\fi
+ \fi
+ \else
+ \if@vxxbalist
+ \init@bacorr{#1}{}{\bacorr}%
+ \else
+ \gdef\bacorr{}%
+ \fi
+ \fi
+ \fi}}
+
+
+\def\@printoptarg#1#2{{%
+ \def\@testb{#2}%
+ \setbox\testbox@ba=\hbox{\ignorespaces #1\ba@textmode}%
+ \ifdim\ht\testbox@ba=0pt\else
+ \ifx\@testb\@leer\@bastrut\ \else %% space before *{...} %%
+ {#2}\fi\fi %% #2 is \nsep at \x... %%
+ {\unhbox\testbox@ba}%
+ \let\@testa=-\finddot@ba{#1}%
+ \ifx\@testa+\@bahasdot\fi}}
+
+
+\newif\ifreprint@ba\reprint@bafalse
+\newif\if@baktit\@baktitfalse
+\def\@nobaktit#1{\if@baktit\else \ifmem@baouter\else
+ {\errorcontextlines=-1\@qqertypeout{...v#1}{(inner ...v#1-cmd)}%
+ \errhelp{
+ ^^JIf you use a ...v#1-cmd inside the last arg of a ...v..-cmd, it is necessary
+ ^^Jto use \ktit{...} to mark a part of the inner title as short title, because,
+ ^^Jon the v#1-list, I transform inner full titles into short titles. For that
+ ^^Jlist, I've inserted `??' as inner short title. (In case of an inner \vli, or
+ ^^J\vqu, the inner full title will also be printed separately on the v..-list.)^^J}%
+ \errmessage@ba{Missing \string\ktit{...} or shadowed {\string\ktit{...}} in last arg}}\fi\fi}
+
+\def\@initvprintonly#1#2#3#4#5#6#7#8{{% %% #1 == li, qu %%
+ \resetcorr@ba
+ {\@memfunctions\@outsavety\@hereRfunctions\@hereFfunctions\fillnref@ba{#4}}%
+ \if@footnote\global\let\isibidem@ba=-\warn@baname{v#1}{#2}%
+ \if@baouter\global\let\nmem@ba=\nref@ba\fi
+ \fi
+ %%%%
+ \let\ifmem@baouter=\if@baouter
+ \@baouterfalse
+ \let\@firstherald=\if@heraldktit
+ \@heraldktitfalse
+ \ifmem@baouter{\filltmemo@ba{}{}{}{}}\else{\filltmemi@ba{}{}{}{}}\fi
+ \def\@testa{#6}%
+ \def\execute@ktit{\@nobaktit{#1}}%
+ \@baktitfalse
+ \def\ktit##1{\@baktittrue
+ \def\kurz{\kurz@ktit}%
+ \ba@varlabel{#4}{#5}{##1}%
+ \if@footnote
+ {\@memfunctions\@outsavety\@hereRfunctions\@hereFfunctions
+ \ifmem@baouter\filltmemo@ba{#1}{#4}{#5}{##1}\global\let\lastto@ba=+%
+ \else \filltmemi@ba{#1}{#4}{#5}{##1}\global\let\lastti@ba=+%
+ \fi}%
+ \fi
+ \if@makektitk{\@initaddtok{#4}{#5}{##1}{#1}{{\nsep}{#8}{v}}{1}}\fi
+ \ifreprint@ba \def\execute@ktit{{\@kxxbatrue\@kprintonly{#1}{#2}{#4}{#5}{##1}{#7}}}%
+ \else \def\execute@ktit{{\@firstherald\if@rheraldktit
+ \cap@ba{announcektit}\@rootponly{#1}{#4}*{#5}{##1}{#7}%
+ \do@banohint{{\bacorr}}\cap@ba{announcekend}\fi\fi}}%
+ \fi ##1\ba@textmode}%
+ \ifreprint@ba
+ {\setbox\testbox@ba=\hbox{#6\relax
+ \if@baktit \global\let\gargc@ba=\execute@ktit
+ \else \gdef\gargc@ba{\@kxxbatrue\@kprintonly{#1}{#2}{#4}{#5}{\erri@ba}{#7}}%
+ \type@bawarn{Missing inner \string\ktit; use `??' as short title}%
+ \fi}%
+ {\@hereRfunctions\gargc@ba}% %% <-> \@rootponly %%
+ \global\let\gargc@ba=\relax
+ }%
+ \else
+ \ifx\@testa\@leer{\@vprintonly{#1}{#2}{#3}{#4}{#5}{}{#7}}\else
+ \ifx\@testa\@leerz{\@vprintonly{#1}{#2}{#3}{#4}{#5}{}{#7}}\else
+ {\@vprintonly{#1}{#2}{#3}{#4}{#5}{#6\relax\execute@ktit}{#7}}\fi\fi
+ \fi
+ }\if@footnote \if@baouter\makethiso@ba\else\makethisi@ba\fi \fi}
+
+
+\def\clearmem@ba{{\@footnotetrue\filltmemo@ba{}{}{}{}\filltmemi@ba{}{}{}{}%
+ \fillpmem@ba{}{}\fillvolmem@ba{}\fillnmem@ba{}}}
+
+\def\filltmemo@ba#1#2#3#4{\if@footnote
+\global\edef\tmemo@ba{{#1}{#2}{#3}{#4}}\fi}
+{\@footnotetrue\filltmemo@ba{}{}{}{}}
+
+\def\filltmemi@ba#1#2#3#4{\if@footnote
+\global\edef\tmemi@ba{{#1}{#2}{#3}{#4}}\fi}
+{\@footnotetrue\filltmemi@ba{}{}{}{}}
+
+\def\filltref@ba#1#2#3#4{\if@footnote
+\global\edef\tref@ba{{#1}{#2}{#3}{#4}}\fi}
+{\@footnotetrue\filltref@ba{}{}{}{}}
+
+\def\fillnmem@ba#1{\if@footnote
+\global\edef\nmem@ba{#1}\fi}
+{\@footnotetrue\fillnmem@ba{}}
+
+\def\fillnref@ba#1{\if@footnote
+\global\edef\nref@ba{#1}\fi}
+{\@footnotetrue\fillnref@ba{}}
+
+\def\errmsg@bawarn#1#2#3{{\errorcontextlines=-1\type@bawarn{...#1-cmd}%
+ \protec@scr{ \space\space\space [#2] overwrites `{\nref@ba}',}%
+ \protec@scr{ \space\space\space but the foregoing #3.^^J^^J}}}
+
+\def\wrimsg@bawarn#1{\ifwriwarn@ba{#1}\{{\nref@ba}\}\penalty\@m \ \fi}
+
+\def\warn@baname#1#2{%
+ %%%%
+ \if@baouter
+ \ifx\thisn@ba+\ifx\nmem@ba\nref@ba\else\global\let\thisn@ba=.\fi\fi
+ \ifx\thisn@ba-\global\let\thisn@ba=+\fi
+ \fi
+ %%%%
+ {\if@wnsn
+ \def\@testa{#2}%
+ \ifx\isibidem@ba-%
+ \ifx\nmem@ba\nref@ba\ifx\lastn@ba+%
+ \ifx\@testa\@leer
+ \ifx\nmem@ba\@leer\else\ifx\nmem@ba\@leerz\else
+ \ifwriwarn@ba{$\bullet$\penalty\@m \ }\fi
+ \if@baouter \type@bawarn{...#1-cmd repeats (first) author's lastname}%
+ \else \type@bawarn{Inner ...#1-cmd repeats author's lastname}%
+ \fi
+ \protec@scr{ \space\space\space `{\nmem@ba}'. Change to `...#1[m,f,p]'??^^J}%
+ \fi\fi
+ \else
+ \wrimsg@bawarn{\boldmath$\heartsuit$}%
+ \fi
+ \fi\fi
+ \ifx\@testa\@leer\else
+ \ifx\lastn@ba-%
+ \wrimsg@bawarn{\boldmath$\nabla$}%
+ \errmsg@bawarn{#1}{#2}{footnote contains no authors (or is missed)}\fi
+ \ifx\lastn@ba+\ifx\nmem@ba\nref@ba\else
+ \wrimsg@bawarn{$\spadesuit$}%
+ \errmsg@bawarn{#1}{#2}{lastname is `{\nmem@ba}'}\fi\fi
+ \ifx\lastn@ba.%
+ \wrimsg@bawarn{$\clubsuit$}%
+ \errmsg@bawarn{#1}{#2}{footnote contains different authors}\fi
+ \fi
+ \fi
+ \fi}%
+ %%%%
+ \global\let\lastn@ba=+}
+
+\def\fillpmem@ba#1#2{\if@footnote
+\global\edef\pmem@ba{{#1}{#2}}\fi}
+{\@footnotetrue\fillpmem@ba{}{}}
+
+\def\fillpref@ba#1#2{\if@footnote
+\global\edef\pref@ba{{#1}{#2}}\fi}
+{\@footnotetrue\fillpref@ba{}{}}
+
+\def\fillvolmem@ba#1{\if@footnote
+\global\edef\volmem@ba{#1}\fi}
+{\@footnotetrue\fillvolmem@ba{}}
+
+\def\fillvolref@ba#1{\if@footnote
+\global\edef\volref@ba{#1}\fi}
+{\@footnotetrue\fillvolref@ba{}}
+
+\def\fillsmem@ba#1{\if@footnote
+\global\edef\smem@ba{#1}\fi}
+{\@footnotetrue\fillsmem@ba{}}
+
+\def\fillsref@ba#1{\if@footnote
+\global\edef\sref@ba{#1}\fi}
+{\@footnotetrue\fillsref@ba{}}
+
+
+\def\@vprintonly#1#2#3#4#5#6#7{{%
+ \@herefunctions
+ \def\@testa{#2}%
+ \ifx\@testa\@leer \@printvname{#3}{\bastrut\ }{#4}{0}{1}%
+ \@printoptarg{#5}{#7}%
+ \else\oletter@ba{v#1}{#2}{\@printoptarg{#5}{#7}}%
+ \fi %% #1 == li, qu %%
+ \@printlastarg{#6}{}\@heraldktitfalse}}
+
+
+
+\def\@initprinthint#1{\if@printhint
+ {\setbox\testbox@ba=\hbox{\cap@ba{hinttov#1}}%
+ \if@affixhints \nobreak\ \else \ \fi
+ \ifdim\ht\testbox@ba=0pt{[]}\else
+ \unhbox\testbox@ba\fi}\fi}
+ %% \cap@ba{hinttovli} \cap@ba{hinttovqu} %%
+
+\def\@initkprintonly#1#2#3#4#5#6{\if@ibidemize\else\clearmem@ba\fi
+ \resetcorr@ba
+ {\@memfunctions\@outsavety\@herefunctions\filltref@ba{#1}{#3}{#4}{#5}\fillnref@ba{#3}}%
+ \makeibid@ba
+ \if@footnote\warn@baname{k#1}{#2}\fi
+ \ifx\isibidem@ba-{\@herefunctions\@kprintonly{#1}{#2}{#3}{#4}{#5}{#6}}%
+ \else\ibidemname@ba
+ \fi
+ \makelast@ba}
+
+
+\def\getoletter@ba#1{\let\next@ba=#1}
+
+\def\oletter@ba#1#2#3{{%
+ \def\oarga@ba{}%
+ \let\oargb@ba=\strut
+ \setbox\testbox@ba=\hbox{\expandafter\getoletter@ba #2\relax
+ \ifx\next@ba m\getom@ba #2\fi
+ \ifx\next@ba f\getof@ba #2\fi
+ \ifx\next@ba p\getop@ba #2\fi
+ \ifx\next@ba m\else \ifx\next@ba f\else \ifx\next@ba p\else
+ \global\let\oarga@ba=\erri@ba
+ \errorcontextlines=-1\@qqerrmsg{...#1}{Bad syntax IN your [#2]-Arg.}%
+ \errmessage@ba{You only may use [m], [f], [p], [m{...}], [f{...}], OR [p{...}] there}\fi\fi\fi}%
+ {\oarga@ba}\ifx\oargb@ba\strut{#3}\else{\oargb@ba}\fi
+ \global\let\oarga@ba=\relax \global\let\oargb@ba=\relax}}
+
+\def\setoa@ba#1{\global\def\oarga@ba{\setup@ba{\edibidemph}{\cap@ba{#1}}}}
+
+\def\geto@ba#1#2{\setoa@ba{#1}%
+ {\def\@testa{#2}%
+ \ifx\@testa\@leer
+ \global\def\oargb@ba{#2}%
+ \else
+ \global\def\oargb@ba{\@bastrut #2}%
+ \fi}}
+
+\def\getom@ba m{\@ifnextchar\bgroup{\geto@ba{idem}}{\setoa@ba{idem}}}
+\def\getof@ba f{\@ifnextchar\bgroup{\geto@ba{eadem}}{\setoa@ba{eadem}}}
+\def\getop@ba p{\@ifnextchar\bgroup{\geto@ba{iidem}}{\setoa@ba{iidem}}}
+
+
+\def\@kprintonly#1#2#3#4#5#6{{%
+ \makeXcorrcmd@ba{\kxxemph}{\bacorr}%
+ \def\@testa{#2}%
+ \ifx\@testa\@leer \@printkname{#3}{1}\@printoptarg{#4}{#6}%
+ \else \oletter@ba{k#1}{#2}{\@printoptarg{#4}{#6}}%
+ \fi}%
+ \@printlastarg{#5}{\kxxemph}%
+ \if@allowconferize
+ \ifba@varstring\ \ba@varref{#3}{#4}{#5}%
+ \else \@initprinthint{#1}%
+ \fi
+ \else \@initprinthint{#1}% %% #1 == li, qu %%
+ \fi}
+
+
+\def\@rootponly#1#2*#3#4#5{{%
+ \makeXcorrcmd@ba{\kxxemph}{\bacorr}%
+ \@hereRfunctions
+ \@printkname{#2}{1}%
+ \@printoptarg{#3}{#5}%
+ {\@kxxbatrue\@printlastarg{#4}{\kxxemph}}%
+ \@initprinthint{#1}}} %% #1 == li, qu %%
+
+
+%%
+
+
+\def\next@ba{}
+
+\def\getk@bapg#1]{\@bapg{#1}\bk@bapg}
+\def\getxk@bapg#1]{\@baxpg{#1}\bk@bapg}
+\def\getkf@bapg#1){\@bafolio{#1}\bk@bapg}
+\def\getxkf@bapg#1){\@baxfolio{#1}\bk@bapg}
+\def\getvolno@ba#1|{\initprintpevo@ba{#1}{vol}\ak@bapg}
+\def\getperno@ba#1_{\initprintpevo@ba{#1}{per}\ak@bapg}
+
+\def\xk@bapg{\afterassignment\getxkch@bapg\let\next@ba= }
+\def\getxkch@bapg{%
+ \ifx\next@ba[\let\next@ba=\getxk@bapg
+ \global\let\pfilled@ba=+%
+ \else
+ \ifx\next@ba(\let\next@ba=\getxkf@bapg
+ \global\let\pfilled@ba=+%
+ \fi\fi
+ \pknext@ba}
+
+\def\lessinfoerror@ba#1#2#3#4#5{\if@baouter{ \erri@ba}{\errorcontextlines-1%
+ \@qqertypeout{#2}{Automatic IBIDEM-setting in footnote:}%
+ \errhelp{
+ ^^JThe BibArts command before has had a #1 as #2-number,
+ ^^Jbut the command now has none. The titles are the same. I set IBIDEM,
+ ^^Jbut did you mean the whole #5? Later, you may type `passim',
+ ^^Jor what you've forgotten, as #2-number. (Then, you may set your
+ ^^Jwhole BibArts-\cmd in {#4\cmd...}).^^J}%
+ \errmessage@ba{Same title, before with :#3:, has now no #1 number}}\else
+ \type@bawarn{Check #1 after inner IBIDEM}\fi}
+
+\def\do@banohint#1{\if@printhint\else\ifba@varstring\else #1\fi\fi}
+
+\def\makeendcorr@ba{\ifx\isibidem@ba-%
+ \ifx\next@ba,\else\ifx\next@ba.\else\ifx\next@ba\strut\else
+ \ifx\next@ba[\else\ifx\next@ba(\else\ifx\next@ba*\else\ifx\next@ba|\else\ifx\next@ba_\else
+ \if@kxxba\do@banohint{{\bacorr}}\fi
+ \fi\fi\fi\fi\fi
+ \fi\fi\fi
+ \ifx\next@ba.%
+ \ifdim\lastskip=\notdotcode@ba
+ \if@kxxba\if@printhint\else{\bacorr}\@banotdot\fi\fi
+ \fi
+ \fi
+ \fi
+ \ifx\next@ba.\else
+ \spacefactorM@ba
+ \fi}
+
+\let\pfilled@ba=-
+\let\pevofilled@ba=-
+\def\ak@bapg{\afterassignment\getakch@bapg\let\next@ba= }
+\def\getakch@bapg{%
+ \ifx\last@ba-\makeendcorr@ba\fi
+ \global\let\last@ba=+%
+ \ifx\lockpevo@ba-\ifx\next@ba|\else\ifx\next@ba_\else
+ \if@pfvba
+ \ifx\isibidem@ba+\ifx\pevofilled@ba+%
+ \ifx\volref@ba\@leer\else\lessinfoerror@ba{no./vol}{_n_- or |n|}{{pervol}{\volref@ba}}{\notprintlongpervol}{series}\fi
+ \fi\fi
+ \fillvolmem@ba{}%
+ \global\let\pevofilled@ba=-%
+ \fi
+ \fi\fi\fi
+ \ifx\next@ba[%
+ \let\next@ba=\getk@bapg \if@pfvba\global\let\pfilled@ba=+\fi
+ \else\ifx\next@ba(%
+ \let\next@ba=\getkf@bapg \if@pfvba\global\let\pfilled@ba=+\fi
+ \else\ifx\next@ba*%
+ \let\next@ba=\xk@bapg
+ \else\ifx\next@ba|%
+ \ifx\lockpevo@ba-\if@pfvba\global\let\lockpevo@ba=+\fi
+ \let\next@ba=\getvolno@ba \if@pfvba\global\let\onlypevo@ba=+\fi
+ \fi \if@pfvba\global\let\pevofilled@ba=+\fi
+ \else\ifx\next@ba_%
+ \ifx\lockpevo@ba-\if@pfvba\global\let\lockpevo@ba=+\fi
+ \let\next@ba=\getperno@ba \if@pfvba\global\let\onlypevo@ba=+\fi
+ \fi \if@pfvba\global\let\pevofilled@ba=+\fi
+ \else
+ \if@pfvba
+ \ifx\isibidem@ba+\ifx\pfilled@ba+%
+ \lessinfoerror@ba{page/folio}{[n]- or (n)}{\pref@ba}{\notprintlongpagefolio}{document}%
+ \ifx\lockpevo@ba-%
+ \fillvolmem@ba{}%
+ \global\let\pevofilled@ba=-%
+ \fi
+ \fi\fi
+ \fillpmem@ba{}{}%
+ \global\let\pfilled@ba=-%
+ \ifx\next@ba.%
+ \ifx\isibidem@ba+%
+ \ifx\onlypevo@ba-%
+ \if@ibidhp\let\next@ba=\relax\spacefactorMMM@ba\fi
+ \fi
+ \fi
+ \else
+ \spacefactorM@ba \@bastrut
+ \fi
+ \fi\fi\fi\fi\fi\fi
+ \pknext@ba} %% ||__ %%
+
+\def\bk@bapg{\afterassignment\getbkch@bapg\let\next@ba= }
+\def\getbkch@bapg{%
+ \ifx\next@ba.\if@ibidhp
+ \ifx\lookpage@ba+\let\next@ba=\relax\spacefactorMMM@ba\fi
+ \fi \else \spacefactorM@ba
+ \if@balist\else\@bastrut\fi
+ \fi
+ \pknext@ba} %% []()*[]*() %%
+
+\def\pknext@ba{%
+ \if@pfvba
+ \ifx.\next@ba
+ \iflasthasdot@ba{\strut\let\next@ba\relax}{}%
+ \iflastnotdot@ba{\strut\let\next@ba\relax}{}%
+ \spacefactorMMM@ba
+ \fi
+ \else \if@filesw \if@nobreak\ifvmode\nobreak\fi\fi \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi
+ \fi
+ \next@ba}
+
+\def\pkcheck@ba{%
+ \global\let\last@ba=-%
+ \global\let\onlypevo@ba=-%
+ \global\let\lockpevo@ba=-%
+ \if@unusedbib\@pfvbafalse\fi
+ \ak@bapg}
+\def\pvcheck@ba{%
+ \global\let\isibidem@ba=-%
+ \global\let\lookpage@ba=-%
+ \pkcheck@ba}
+
+
+%%
+
+
+\def\checkNvrun@AbcDe#1{\@kxxbafalse\@perbafalse\@ifnextchar[{\Check@LocalvArg{#1}}{\Check@LocalvArg{#1}[]}}
+
+\def\Check@LocalvArg#1[#2]{\@ifnextchar\bgroup{\Check@ObligatoryvArgA{#1}[#2]}%
+ {\Check@ObligatoryvArgA{#1}[#2]{\erri@ba}}}
+
+\def\Check@ObligatoryvArgA#1[#2]#3{\@ifnextchar\bgroup{\Check@ObligatoryvArgB{#1}[#2]{#3}}%
+ {{\errorcontextlines=-1\@qqerrhlp{#1}%
+ \Check@ObligatoryvArgB{#1}[#2]{#3}{\erri@ba}%
+ \errmessage@ba{#1 - CONTINUE - : \space Missing author's \ifx\erri@ba #3firstname(s) and \fi lastname as \ifx\erri@ba #3{a1}\fi{a2}}}}}
+
+\def\Check@ObligatoryvArgB#1[#2]#3#4{\@ifnextchar *{\Check@OptionalvStar{#1}[#2]{#3}{#4}}%
+ {\Check@OptionalvArg{#1}[#2]{#3}{#4}*{}}}
+
+\def\Check@OptionalvStar#1[#2]#3#4*{\@ifnextchar\bgroup{\Check@OptionalvArg{#1}[#2]{#3}{#4}*}%
+ {\Check@OptionalvArg{#1}[#2]{#3}{#4}*{\erri@ba}}}
+
+\def\Check@OptionalvArg#1[#2]#3#4*#5{\@ifnextchar\bgroup{\Check@ObligatoryLastvArg{#1}[#2]{#3}{#4}*{#5}}%
+ {{\errorcontextlines=-1\@qqerrmsg{#1}{Registered lastname (a2): {#4}}%
+ \Check@ObligatoryLastvArg{#1}[#2]{#3}{#4}*{#5}{\erri@ba}%
+ \errmessage@ba{#1: \space Missing OBLIGATORY Arg3 (LastArg). \space You may choose,
+ ^^J \space when you fix the problem later: \space Type a full-cited title as {a3},
+ ^^J \space OR set `*'-option, and type supplements and a full title as *{op}{a3}}}}}
+
+\def\Check@ObligatoryLastvArg#1[#2]#3#4*#5#6{\csname @#1\endcsname[#2]{#3}{#4}*{#5}{#6\@leer}\pvcheck@ba}
+
+
+
+
+\def\checkNkrun@AbCd#1{\@kxxbatrue\@perbafalse\@ifnextchar[{\Check@LocalkArg{#1}}{\Check@LocalkArg{#1}[]}}
+
+\def\Check@LocalkArg#1[#2]{\@ifnextchar\bgroup{\Check@ObligatorykArgA{#1}[#2]}%
+ {{\errorcontextlines=-1\@qqerrhlp{#1}%
+ \Check@ObligatorykArgA{#1}[#2]{\erri@ba}%
+ \errmessage@ba{#1 - CONTINUE - :
+ ^^J \space Missing even author's lastname as {a1}}}}}
+
+\def\Check@ObligatorykArgA#1[#2]#3{\@ifnextchar *{\Check@OptionalkStar{#1}[#2]{#3}}%
+ {\Check@OptionalkArg{#1}[#2]{#3}*{}}}
+
+\def\Check@OptionalkStar#1[#2]#3*{\@ifnextchar\bgroup{\Check@OptionalkArg{#1}[#2]{#3}*}%
+ {\Check@OptionalkArg{#1}[#2]{#3}*{\erri@ba}}}
+
+\def\Check@OptionalkArg#1[#2]#3*#4{\@ifnextchar\bgroup{\Check@ObligatoryLastkArg{#1}[#2]{#3}*{#4}}%
+ {{\errorcontextlines=-1\@qqerrmsg{#1}{Registered lastname (a1): {#3}}%
+ \Check@ObligatoryLastkArg{#1}[#2]{#3}*{#4}{\erri@ba}%
+ \errmessage@ba{#1: \space Missing OBLIGATORY Arg2 (LastArg). \space You may choose,
+ ^^J \space when you fix the problem later: \space Type a short-cited title as {a2},
+ ^^J \space OR set `*'-option, and type supplements and a short title as *{op}{a2}}}}}
+
+\def\Check@ObligatoryLastkArg#1[#2]#3*#4#5{\csname @#1\endcsname[#2]{#3}*{#4}{#5}\pkcheck@ba}
+
+
+%%
+
+
+\def\type@bawarn#1{\typeout@ba{ \space BibArts Warning: #1 on input line \line@ba.}}
+
+\def\protec@scr#1{{\@outsavety\@memfunctions\message{#1}}}
+
+\def\@qqertypeout#1#2{%
+ \typeout@ba{^^J \space ** Arg(s) of BibArts' #1-command: Error around line \line@ba!}%
+ \protec@scr{ \space\space\space\space #2}%
+ \typeout@ba{ \space <H><return> \space for immediate help,
+ ^^J \space <return> \space\space\space\space to continue.}}
+
+\def\command@misplace#1{\type@bawarn{\string#1\space was ignored:
+ ^^J\space\space\space\space You've used it outside the args of ....li, ....qu, ...per, or ...arq}}
+
+\def\@qqerrhlp#1{\errhelp{%
+ ^^JTeX reports errors by SETTING UP in quoting your text - AFTER the error.
+ ^^JIn case of footnotes, TeX reports only the end of the last footnote-line.
+ ^^JIf TeX quotes nothing HERE, you've forgotten to type an/some argument(s).^^J
+ ^^J...v..-commands have syntax ...v..{a1}{a2}{a3} , or ...v..{a1}{a2}*{op}{a3}
+ ^^J...k..-commands have syntax ...k..{a1}{a2} , or ...k..{a1}*{op}{a2}
+ ^^J -- you may use an op-Arg as [m,f,p] after ...v..- or ...k...commands --
+ ^^J...per-commands have syntax ...per {periodical revue name}
+ ^^J...arq-commands have syntax ...arq {source-doc} {archive-abbrev./shelfmark}^^J
+ ^^JAdd numbers as |volume| and/or [page] or (folio) immediate after the last arg.^^J
+ ^^JI've inserted arg(s) for that/those you probably have forgotten to type
+ ^^Jbehind your #1-command. I put `??' into that/those arg(s).
+ ^^JThat should fix the problem for the moment. <return> to continue.^^J}}
+
+\def\@fqerrhlp#1{\errhelp{%
+ ^^JCommands \addtogrr, \addtosrr, and \addtoprr have ONE {arg} . Their
+ ^^Jfill...-commands have syntax e.g. \fillgrr{arg} {additional text to arg} ;
+ ^^Jand \per{arg} could also be filled in the list with \fillper{arg} {add} :
+ ^^J{arg} always should be identical to the ONE {arg} of the base command.
+ ^^JAbbreviation definitions are ...abkdef{arg}{def} and ...defabk{def}{arg}
+ ^^Jto write out \abk{a.b.c.} ; no fill-commands exist for abbreviations.
+ ^^JIn case of \arq{document/paper} {archive/shelfmark} , only the second arg
+ ^^Jgoes to the list - where \arqsection{s1} {s2} could create a heading:
+ ^^Js1 should BEGIN with the same characters as does {archive/shelfmark},
+ ^^Jbut s1 should have NOT ALL the characters of {archive/shelfmark}
+ ^^J(e.g. \arq{X to Y} {PRO~1} and \arqsection{PRO} {Public Record Office} ).
+ ^^J\fillarq{PRO~1} {Name of the file} could FILL the second arg of \arq.^^J
+ ^^JI've inserted default-arg(s) for that/those you probably have forgotten
+ ^^Jto type behind your #1-command. You have to fix that problem later.
+ ^^J<return> to continue.^^J}}
+
+\def\@qqerrmsg#1#2{\@qqerrhlp{#1}\@qqertypeout{#1}{#2}}
+\def\@fqerrmsg#1{\@fqerrhlp{#1}\@qqertypeout{#1}{...}}
+
+
+%%
+
+
+ %% full citations (v-cmds) %%
+
+
+\def\shadowv{\@bsphack\@pfvbafalse\checkNvrun@AbcDe{shadowv}} %% ... \@shadowv
+
+
+\DeclareRobustCommand\vli{\dofrco@ba\@pfvbatrue\leavevmode\checkNvrun@AbcDe{vli}} %% ... \@vli
+
+\DeclareRobustCommand\vqu{\dofrco@ba\@pfvbatrue\leavevmode\checkNvrun@AbcDe{vqu}} %% ... \@vqu
+
+
+\DeclareRobustCommand\printonlyvli{\dofrco@ba\@pfvbatrue\checkNvrun@AbcDe{printonlyvli}} %% ... \@printonlyvli
+
+\DeclareRobustCommand\printonlyvqu{\dofrco@ba\@pfvbatrue\checkNvrun@AbcDe{printonlyvqu}} %% ... \@printonlyvqu
+
+
+\DeclareRobustCommand\addtovli{\@bsphack\@pfvbafalse\checkNvrun@AbcDe{addtovli}} %% ... \@addtovli
+
+\DeclareRobustCommand\addtovqu{\@bsphack\@pfvbafalse\checkNvrun@AbcDe{addtovqu}} %% ... \@addtovqu
+
+
+
+\DeclareRobustCommand\xvli{\dofrco@ba\@pfvbatrue\leavevmode\checkNvrun@AbcDe{xvli}} %% ... \@xvli
+
+\DeclareRobustCommand\xvqu{\dofrco@ba\@pfvbatrue\leavevmode\checkNvrun@AbcDe{xvqu}} %% ... \@xvqu
+
+
+\DeclareRobustCommand\xprintonlyvli{\dofrco@ba\@pfvbatrue\checkNvrun@AbcDe{xprintonlyvli}} %% ... \@xprintonlyvli
+
+\DeclareRobustCommand\xprintonlyvqu{\dofrco@ba\@pfvbatrue\checkNvrun@AbcDe{xprintonlyvqu}} %% ... \@xprintonlyvqu
+
+
+\DeclareRobustCommand\xaddtovli{\@bsphack\@pfvbafalse\checkNvrun@AbcDe{xaddtovli}} %% ... \@xaddtovli
+
+\DeclareRobustCommand\xaddtovqu{\@bsphack\@pfvbafalse\checkNvrun@AbcDe{xaddtovqu}} %% ... \@xaddtovqu
+
+
+
+
+ %% Internal %%
+
+
+\def\@shadowv[#1]#2#3*#4#5{}
+
+
+\def\@vli[#1]#2#3*#4#5{\@addtovli[]{#2}{#3}*{#4}{#5}\@printonlyvli[#1]{#2}{#3}*{#4}{#5}}
+
+\def\@vqu[#1]#2#3*#4#5{\@addtovqu[]{#2}{#3}*{#4}{#5}\@printonlyvqu[#1]{#2}{#3}*{#4}{#5}}
+
+
+\def\@xvli[#1]#2#3*#4#5{\@xaddtovli[]{#2}{#3}*{#4}{#5}\@xprintonlyvli[#1]{#2}{#3}*{#4}{#5}}
+
+\def\@xvqu[#1]#2#3*#4#5{\@xaddtovqu[]{#2}{#3}*{#4}{#5}\@xprintonlyvqu[#1]{#2}{#3}*{#4}{#5}}
+
+
+\def\@printonlyvli[#1]#2#3*#4#5{\@initvprintonly{li}{#1}{#2}{#3}{#4}{#5}{}{false}}
+
+\def\@printonlyvqu[#1]#2#3*#4#5{\@initvprintonly{qu}{#1}{#2}{#3}{#4}{#5}{}{false}}
+
+
+\def\@xprintonlyvli[#1]#2#3*#4#5{\@initvprintonly{li}{#1}{#2}{#3}{#4}{#5}{\nsep}{true}}
+
+\def\@xprintonlyvqu[#1]#2#3*#4#5{\@initvprintonly{qu}{#1}{#2}{#3}{#4}{#5}{\nsep}{true}}
+
+
+\def\@addtovli[#1]#2#3*#4#5{\@initaddtovli{#2}{#3}{#4}{#5}{{\nsep}{false}}}
+
+\def\@addtovqu[#1]#2#3*#4#5{\@initaddtovqu{#2}{#3}{#4}{#5}{{\nsep}{false}}}
+
+
+\def\@xaddtovli[#1]#2#3*#4#5{\@initaddtovli{#2}{#3}{#4}{#5}{{\nsep}{true}}}
+
+\def\@xaddtovqu[#1]#2#3*#4#5{\@initaddtovqu{#2}{#3}{#4}{#5}{{\nsep}{true}}}
+
+
+\def\@initaddtovli#1#2#3#4#5{\if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \literentry{#2}{#1}{#3}{#4}{#5{}}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi}
+
+\def\@initaddtovqu#1#2#3#4#5{\if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \quellentry{#2}{#1}{#3}{#4}{#5{}}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi}
+
+
+\def\literentry#1#2#3#4#5#6[#7][#8](#9){}
+
+\def\quellentry#1#2#3#4#5#6[#7][#8](#9){}
+
+
+%%
+
+
+ %% shortened citations %%
+
+
+\def\shadowk{\@bsphack\@pfvbafalse\checkNkrun@AbCd{shadowk}} %% ... \@shadowk
+
+
+\DeclareRobustCommand\kli{\dofrco@ba\@pfvbatrue\leavevmode\checkNkrun@AbCd{kli}} %% ... \@kli
+
+\DeclareRobustCommand\kqu{\dofrco@ba\@pfvbatrue\leavevmode\checkNkrun@AbCd{kqu}} %% ... \@kqu
+
+
+\DeclareRobustCommand\printonlykli{\dofrco@ba\@pfvbatrue\checkNkrun@AbCd{printonlykli}} %% ... \@printonlykli
+
+\DeclareRobustCommand\printonlykqu{\dofrco@ba\@pfvbatrue\checkNkrun@AbCd{printonlykqu}} %% ... \@printonlykqu
+
+
+\DeclareRobustCommand\addtokli{\@bsphack\@pfvbafalse\checkNkrun@AbCd{addtokli}} %% ... \@addtokli
+
+\DeclareRobustCommand\addtokqu{\@bsphack\@pfvbafalse\checkNkrun@AbCd{addtokqu}} %% ... \@addtokqu
+
+
+
+\DeclareRobustCommand\xkli{\dofrco@ba\@pfvbatrue\leavevmode\checkNkrun@AbCd{xkli}} %% ... \@xkli
+
+\DeclareRobustCommand\xkqu{\dofrco@ba\@pfvbatrue\leavevmode\checkNkrun@AbCd{xkqu}} %% ... \@xkqu
+
+
+\DeclareRobustCommand\xprintonlykli{\dofrco@ba\@pfvbatrue\checkNkrun@AbCd{xprintonlykli}} %% ... \@xprintonlykli
+
+\DeclareRobustCommand\xprintonlykqu{\dofrco@ba\@pfvbatrue\checkNkrun@AbCd{xprintonlykqu}} %% ... \@xprintonlykqu
+
+
+\DeclareRobustCommand\xaddtokli{\@bsphack\@pfvbafalse\checkNkrun@AbCd{xaddtokli}} %% ... \@xaddtokli
+
+\DeclareRobustCommand\xaddtokqu{\@bsphack\@pfvbafalse\checkNkrun@AbCd{xaddtokqu}} %% ... \@xaddtokqu
+
+
+
+
+ %% Internal %%
+
+
+\def\@shadowk[#1]#2*#3#4{}
+
+
+\def\@kli[#1]#2*#3#4{\@addtokli[]{#2}*{#3}{#4}\@printonlykli[#1]{#2}*{#3}{#4}}
+
+\def\@kqu[#1]#2*#3#4{\@addtokqu[]{#2}*{#3}{#4}\@printonlykqu[#1]{#2}*{#3}{#4}}
+
+
+\def\@xkli[#1]#2*#3#4{\@xaddtokli[]{#2}*{#3}{#4}\@xprintonlykli[#1]{#2}*{#3}{#4}}
+
+\def\@xkqu[#1]#2*#3#4{\@xaddtokqu[]{#2}*{#3}{#4}\@xprintonlykqu[#1]{#2}*{#3}{#4}}
+
+
+\def\@printonlykli[#1]#2*#3#4{\@initkprintonly{li}{#1}{#2}{#3}{#4}{}}
+
+\def\@printonlykqu[#1]#2*#3#4{\@initkprintonly{qu}{#1}{#2}{#3}{#4}{}}
+
+
+\def\@xprintonlykli[#1]#2*#3#4{\@initkprintonly{li}{#1}{#2}{#3}{#4}{\nsep}}
+
+\def\@xprintonlykqu[#1]#2*#3#4{\@initkprintonly{qu}{#1}{#2}{#3}{#4}{\nsep}}
+
+
+\def\@addtokli[#1]#2*#3#4{\@initaddtok{#2}{#3}{#4}{li}{{\nsep}{false}{k}}{0}}
+
+\def\@addtokqu[#1]#2*#3#4{\@initaddtok{#2}{#3}{#4}{qu}{{\nsep}{false}{k}}{0}}
+
+
+\def\@xaddtokli[#1]#2*#3#4{\@initaddtok{#2}{#3}{#4}{li}{{\nsep}{true}{k}}{0}}
+
+\def\@xaddtokqu[#1]#2*#3#4{\@initaddtok{#2}{#3}{#4}{qu}{{\nsep}{true}{k}}{0}}
+
+
+\def\@initaddtok#1#2#3#4#5#6{\if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions \ifnum#6=1\@hereFfunctions\fi
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \vkcitentry{#1}{#2}{#3}{#4}{#5}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi}
+
+
+\def\vkcitentry#1#2#3#4#5#6[#7][#8](#9){}
+
+%%
+
+
+ %% periodicals and archive sources %%
+
+
+\def\checkNonerun@a#1{\@kxxbafalse\@perbatrue\@ifnextchar\bgroup{\Check@perArg{#1}}{%
+ {\errorcontextlines=-1\@qqerrmsg{#1}{...}%
+ \Check@perArg{#1}{\erri@ba}%
+ \errmessage@ba{#1: Missing Arg (periodical revue name)}}}}
+
+\def\Check@perArg#1#2{\csname @#1\endcsname{#2}\pkcheck@ba}
+
+
+\def\checkNtworun@ab#1{\@kxxbafalse\@perbafalse\@ifnextchar[{\Check@LocalarqArg{#1}}{\Check@LocalarqArg{#1}[]}}
+
+\def\Check@LocalarqArg#1[#2]{\@ifnextchar\bgroup{\Check@arqArga{#1}[#2]}{%
+ {\Check@arqArga{#1}[#2]{\erri@ba}}}}
+
+\def\Check@arqArga#1[#2]#3{\@ifnextchar\bgroup{\Check@arqArgb{#1}[#2]{#3}}{%
+ {\errorcontextlines=-1\@qqerrmsg{#1}{Registered doc (a1): {#3}}%
+ \Check@arqArgb{#1}[#2]{#3}{\erri@ba}%
+ \errmessage@ba{#1: Missing second Arg (archive abbrev./shelfmark [title])}}}}
+
+\def\Check@arqArgb#1[#2]#3#4{\csname @#1\endcsname[#2]{#3}{#4}\pkcheck@ba}
+
+
+\def\checkNrun@one#1{\@ifnextchar\bgroup{\Check@oneArg{#1}}{%
+ {\errorcontextlines=-1\@fqerrmsg{#1}%
+ \Check@oneArg{#1}{}\errmessage@ba{#1: \space Missing Arg}}}}
+
+\def\Check@oneArg#1#2{\csname @#1\endcsname{#2}}
+
+
+\def\checkNrun@two#1{\@ifnextchar\bgroup{\Check@FirstOfTwoArgs{#1}}{%
+ {\Check@FirstOfTwoArgs{#1}{}}}}
+
+\def\Check@FirstOfTwoArgs#1#2{\@ifnextchar\bgroup{\Check@SecondOfTwoArgs{#1}{#2}}{%
+ {\errorcontextlines=-1\@fqerrmsg{#1}%
+ \Check@SecondOfTwoArgs{#1}{#2}{\erri@ba}{\@outsavety\@memfunctions\errmessage@ba{#1: \space Missing 2nd Arg (after `#2')}}}}}
+
+\def\Check@SecondOfTwoArgs#1#2#3{\csname @#1\endcsname{#2}{#3}}
+
+
+\def\shadowone{\checkNrun@one{shadowone}} %% \@shadowone %%
+\def\shadowtwo{\checkNrun@two{shadowtwo}} %% \@shadowtwo %%
+
+\def\shadowo{\@bsphack\@pfvbafalse\checkNonerun@a{shadowo}} %% \@shadowo
+\def\shadowt{\@bsphack\@pfvbafalse\checkNtworun@ab{shadowt}} %% \@shadowt
+
+\DeclareRobustCommand\per{\dofrco@ba\@pfvbatrue\leavevmode\checkNonerun@a{per}} %% \@per
+\DeclareRobustCommand\arq{\dofrco@ba\@pfvbatrue\leavevmode\checkNtworun@ab{arq}} %% \@arq
+
+\DeclareRobustCommand\printonlyper{\dofrco@ba\@pfvbatrue\checkNonerun@a{printonlyper}} %% \@printonlyper
+\DeclareRobustCommand\printonlyarq{\dofrco@ba\@pfvbatrue\checkNtworun@ab{printonlyarq}} %% \@printonlyarq
+
+\DeclareRobustCommand\addtoper{\@bsphack\@pfvbafalse\checkNonerun@a{addtoper}} %% \@addtoper
+\DeclareRobustCommand\addtoarq{\@bsphack\@pfvbafalse\checkNtworun@ab{addtoarq}} %% \@addtoarq
+
+
+ %% Internal %%
+
+\def\@shadowo#1{}
+\def\@shadowt[#1]#2#3{}
+
+\def\@shadowone#1{\@bsphack\if@unusedbib\ignorespaces\else\@esphack\fi}
+\def\@shadowtwo#1#2{\@bsphack\if@unusedbib\ignorespaces\else\@esphack\fi}
+
+\def\@per#1{\@addtoper{#1}\@printonlyper{#1}}
+\def\@arq[#1]#2#3{\@initaddtoarq[\ifx#1\@leer\else\lbrack #1\rbrack\space\space\fi]{#2}{#3}\@printonlyarq[#1]{#2}{#3}}
+
+\def\@printonlyper#1{\if@ibidemize\else\clearmem@ba\fi
+ \resetcorr@ba
+ {\@memfunctions\@outsavety\@herefunctions\filltref@ba{per}{#1}{}{}\fillnref@ba{}}%
+ \makeibid@ba
+ \nulskip@ba
+ \ifx\isibidem@ba-{\@herefunctions\setup@ba{\peremph}{#1}}%
+ \let\@testa=-\finddot@ba{#1}%
+ \ifx\@testa+\@bahasdot\fi
+ \else
+ \ibidemname@ba
+ \fi
+ \makelast@ba}
+
+\def\@printonlyarq[#1]#2#3{\if@ibidemize\else\clearmem@ba\fi
+ \resetcorr@ba
+ {\@memfunctions\@outsavety\@herefunctions\filltref@ba{arq}{#3}{}{}\fillnref@ba{}}%
+ \makeibid@ba
+ \nulskip@ba
+ \initprints@ba{#1}{#2}%
+ \ifx\isibidem@ba-{\@herefunctions\setup@ba{\arqemph}{#3}}%
+ \let\@testa=-\finddot@ba{#3}%
+ \ifx\@testa+\@bahasdot\fi
+ \else
+ \ibidemname@ba
+ \fi
+ \makelast@ba}
+
+\def\@addtoper#1{\if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \perioentry{#1}{}{{}{}{}{}}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi}
+
+\DeclareRobustCommand\fillper{\checkNrun@two{fillper}}
+\def\@fillper#1#2{\@bsphack \if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \perioentry{#1}{#2}{{\perlistopen}{\perlistclose}{}{}}{{}{}{-}}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi}
+
+\def\@addtoarq[#1]#2#3{\@initaddtoarq[]{#2}{#3}}
+
+\def\@initaddtoarq[#1]#2#3{\if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \archqentry{#3}{}{{}{}{}{}}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)
+ \space\commentch@ba\commentch@ba \space
+ \if@unusedbib (u) \space \else \if@footnote\if@baminipage (mpf) \else (f) \fi \space \fi\fi
+ #1#2 \commentch@ba\commentch@ba}}%
+ \expandafter}\@tempa \fi}
+
+\DeclareRobustCommand\fillarq{\checkNrun@two{fillarq}}
+\def\@fillarq#1#2{\@bsphack \if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \archqentry{#1}{#2}{{\arqlistopen}{\arqlistclose}{}{}}{{}{}{-}}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi}
+
+\DeclareRobustCommand\arqsection{\checkNrun@aBC{arqsection}}
+\DeclareRobustCommand\arqsubsection{\checkNrun@aBC{arqsubsection}}
+\DeclareRobustCommand\arqsubsubsection{\checkNrun@aBC{arqsubsubsection}}
+
+\def\checkNrun@aBC#1{\@ifnextchar[{\Check@optionOfarqsec{#1}}%
+ {\Check@optionOfarqsec{#1}[]}}
+
+\def\Check@optionOfarqsec#1[#2]{\@ifnextchar\bgroup{\Check@FirstOfarqsec{#1}[#2]}{%
+ {\Check@FirstOfarqsec{#1}[#2]{}}}}
+
+\def\Check@FirstOfarqsec#1[#2]#3{\@ifnextchar\bgroup{\Check@SecondOfarqsec{#1}[#2]{#3}}{%
+ {\errorcontextlines=-1\@fqerrmsg{#1}%
+ \Check@SecondOfarqsec{#1}[#2]{#3}{\erri@ba}{\@outsavety\@memfunctions\errmessage@ba{#1: \space Missing 2nd Arg}}}}}
+
+\def\Check@SecondOfarqsec#1[#2]#3#4{\csname @#1\endcsname{#2}{#3}{#4}}
+
+
+\def\@arqsection#1#2#3{\@arqcontent{#2}{#3}{\arqsectionopen}{\arqsectionclose}{1}{#1}}
+\def\@arqsubsection#1#2#3{\@arqcontent{#2}{#3}{\arqsubsectionopen}{\arqsubsectionclose}{2}{#1}}
+\def\@arqsubsubsection#1#2#3{\@arqcontent{#2}{#3}{\arqsubsubsectionopen}{\arqsubsubsectionclose}{3}{#1}}
+\def\@arqcontent#1#2#3#4#5#6{\@bsphack \if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \archqentry{#1}{#2}{{#3}{#4}{#5}{#6}}{{}{}{-}}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi}
+
+
+\def\perioentry#1#2#3#4[#5][#6](#7){}
+\def\archqentry#1#2#3#4[#5][#6](#7){}
+
+
+%%
+
+
+ %% abbreviations %%
+
+\def\abkemph{\sffamily}
+\def\dofrco@baabk{\ba@textmode
+ \if@bafrontcorr{\abkemph{\ifdim\fontdimen\@ne\font=\z@\dofrco@ba@abk\fi}}\fi}
+
+\def\next@printabk{\afterassignment\@makeendabk\let\next@ba= }
+\def\@makeendabk{\ifx\next@ba,%
+ \else\ifx\next@ba.%
+ \iflasthasdot@ba{\strut\let\next@ba\relax}{}%
+ \iflastnotdot@ba{\strut\let\next@ba\relax\bacorr}{}%
+ \spacefactorMMM@ba
+ \else\ifx\next@ba\strut
+ \nulskip@ba\strut\let\next@ba\relax
+ \else\nulskip@ba\strut\bacorr\fi\fi\fi
+ \next@ba}
+\def\@abk#1{\@initaddtoabk{#1}\@printonlyabk{#1}%
+ \let\@testa=-\finddot@ba{#1}%
+ \ifx\@testa+\@bahasdot\fi
+ \next@printabk}
+\DeclareRobustCommand\abk{\dofrco@baabk\leavevmode\resetcorr@ba\checkNrun@one{abk}} %% \@abk %%
+
+\def\@printonlyabk#1{{\@herefunctions\printfirstarg@ba{\abkemph}{#1}{abk...}}%
+ \init@baXcorr{#1}{\abkemph}{\bacorr}}
+
+\def\@cprintonlyabk#1{\@printonlyabk{#1}%
+ \let\@testa=-\finddot@ba{#1}%
+ \ifx\@testa+\@bahasdot\fi
+ \next@printabk}
+\DeclareRobustCommand\printonlyabk{\dofrco@baabk\resetcorr@ba\checkNrun@one{cprintonlyabk}} %% \@cprintonlyabk %%
+
+\def\@addtoabk#1{\@initaddtoabk{#1}}
+\DeclareRobustCommand\addtoabk{\checkNrun@one{addtoabk}} %% \@addtoabk %%
+
+\def\@abkdef#1#2{\@initabkdef{#1}{#2}\@printonlyabkdef{#1}{#2}}
+\DeclareRobustCommand\abkdef{\dofrco@baabk\leavevmode\resetcorr@ba\checkNrun@two{abkdef}} %% \@abkdef %%
+
+\def\@defabk#1#2{\@initabkdef{#2}{#1}\@printonlydefabk{#1}{#2}}
+\DeclareRobustCommand\defabk{\ba@textmode\leavevmode\resetcorr@ba\checkNrun@two{defabk}} %% \@defabk %%
+
+\def\@printonlyabkdef#1#2{\@printonlyabk{#1}\strut
+ {\@herefunctions\@banonumtrue\printsecondarg@ba{\abkdefopen}{#2}{\abkdefclose}{\abkemph}}\next@printabk}
+\DeclareRobustCommand\printonlyabkdef{\dofrco@baabk\resetcorr@ba\checkNrun@two{printonlyabkdef}} %% \@printonlyabkdef %%
+
+
+\newif\if@ba@newLTX\@ba@newLTXfalse
+\def\pndefabk{\@ba@newLTXfalse}
+\def\negcorrdefabk{\protect\pndefabk}
+\def\pnndefabk{\@ba@newLTXtrue}
+\def\notnegcorrdefabk{\protect\pnndefabk}
+
+\def\@printonlydefabk#1#2{{\@herefunctions\ignorespaces #1}\nulskip@ba\strut
+ {\abkemph{\ifdim\fontdimen\@ne\font=\z@\gdef\bacorr{\@baupcorr}\else
+ \if@ba@newLTX\gdef\bacorr{}\else\gdef\bacorr{\@badowncorr}\fi\fi}}%
+ {\let\@testa=-\finddot@ba{#1}%
+ \ifx\@testa+\@bahasdot\fi
+ }%
+ {\defabkopen}\@printonlyabk{#2}%
+ {\let\@testa=-\finddot@ba{#2}%
+ \ifx\@testa+\@bahasdot
+ {\defabkclose}\gdef\bacorr{}%
+ \else
+ \setbox\testbox@ba=\hbox{\def\corrrrule@ba{}\defabkclose}%
+ \ifdim\ht\testbox@ba=0pt%
+ \def\bacorr{}{\defabkclose}%
+ \else
+ {\defabkclose}\gdef\bacorr{}%
+ \fi
+ \fi
+ }\spacefactorM@ba\next@printabk}
+
+\DeclareRobustCommand\printonlydefabk{\ba@textmode\resetcorr@ba\checkNrun@two{printonlydefabk}} %% \@printonlydefabk %%
+
+\def\@addtoabkdef#1#2{\@initabkdef{#1}{#2}}
+\DeclareRobustCommand\addtoabkdef{\checkNrun@two{addtoabkdef}} %% \@addtoabkdef %%
+
+\def\@addtodefabk#1#2{\@initabkdef{#2}{#1}}
+\DeclareRobustCommand\addtodefabk{\checkNrun@two{addtodefabk}} %% \@addtodefabk %%
+
+\def\@initabkdef#1#2{\if@unusedbib\else\@bsphack\fi
+ \if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \abkrzentry{#1}{#2}{{\abklistopen}{\abklistclose}{}{}}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa
+ \if@nobreak\ifvmode\nobreak\fi\fi \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi}
+
+\def\@initaddtoabk#1{\if@unusedbib\else\@bsphack\fi
+ \if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ \abkrzentry{#1}{}{{}{}{}{}}{\setn@ba}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa
+ \if@nobreak\ifvmode\nobreak\fi\fi \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi}
+
+\def\@abkper#1{\@addtoabk{#1}\checkNonerun@a{per}{#1}} %% \@per %%
+\DeclareRobustCommand\abkper{\dofrco@ba\@pfvbatrue\leavevmode\checkNrun@one{abkper}} %% \@abkper %%
+
+\def\abkrzentry#1#2#3#4[#5][#6](#7){}
+
+
+
+\def\@addtogrr#1{\@initaddtoreg{\geogrentry}{#1}{}{\setn@ba}}
+\DeclareRobustCommand\addtogrr{\checkNrun@one{addtogrr}} %% \@addtogrr %%
+
+\def\@addtoprr#1{\@initaddtoreg{\persrentry}{#1}{}{\setn@ba}}
+\DeclareRobustCommand\addtoprr{\checkNrun@one{addtoprr}} %% \@addtoprr %%
+
+\def\@addtosrr#1{\@initaddtoreg{\subjrentry}{#1}{}{\setn@ba}}
+\DeclareRobustCommand\addtosrr{\checkNrun@one{addtosrr}} %% \@addtosrr %%
+
+
+\def\@fillgrr#1#2{\@initaddtoreg{\geogrentry}{#1}{#2}{{}{}{-}}}
+\DeclareRobustCommand\fillgrr{\checkNrun@two{fillgrr}} %% \@fillgrr %%
+
+\def\@fillprr#1#2{\@initaddtoreg{\persrentry}{#1}{#2}{{}{}{-}}}
+\DeclareRobustCommand\fillprr{\checkNrun@two{fillprr}} %% \@fillprr %%
+
+\def\@fillsrr#1#2{\@initaddtoreg{\subjrentry}{#1}{#2}{{}{}{-}}}
+\DeclareRobustCommand\fillsrr{\checkNrun@two{fillsrr}} %% \@fillsrr %%
+
+
+\def\@initaddtoreg#1#2#3#4{\if@unusedbib\else\@bsphack\fi
+ \if@filesw {\let\thepage\relax
+ \@outsavety\@outfunctions
+ \edef\@tempa{\write\@auxout{\commentch@ba\string
+ #1{#2}{#3}{{\xrrlistopen}{\xrrlistclose}{}{}}{#4}[\catq@ba][\lang@ba](line \line@ba)}}%
+ \expandafter}\@tempa
+ \if@nobreak\ifvmode\nobreak\fi\fi \fi
+ \if@unusedbib\ignorespaces\else\@esphack\fi}
+
+
+\def\geogrentry#1#2#3#4[#5][#6](#7){}
+\def\persrentry#1#2#3#4[#5][#6](#7){}
+\def\subjrentry#1#2#3#4[#5][#6](#7){}
+
+%%
+
+
+ %% lists %%
+
+\expandafter\ifx\csname MakeUppercase\endcsname\relax
+\def\uc@ba{\uppercase}%
+\else
+\def\uc@ba{\MakeUppercase}%
+\fi
+
+\expandafter\ifx\csname @mkboth\endcsname\relax
+\def\bamarkboth#1{}%
+\else
+\def\bamarkboth#1{\@mkboth{\uc@ba{\cap@ba{#1}}}{\uc@ba{\cap@ba{#1}}}}%
+\fi
+
+\def\titleline@ba#1#2{{\csname #2\endcsname*{\cap@ba{#1title}}\relax}}
+\def\contents@ba#1#2#3{\expandafter\ifx\csname #2\endcsname\relax
+ {\errorcontextlines=-1\@qqertypeout{print#1title}{...}%
+ \errhelp{Your [OptArg] is unknown.}%
+ \errmessage@ba{Undefined title size}}%
+ \else\addcontentsline{toc}{#2}{\cap@ba{#1title}}\fi
+ \bamarkboth{#1title}{#3}}
+\def\printlist@ba#1#2#3{{\csname @print#2#3list\endcsname{#1}}}
+
+\def\title@ba#1[#2]{\titleline@ba{#1}{#2}\contents@ba{#1}{#2}{}}
+\def\Check@batitle#1#2{\@ifnextchar[{\title@ba{#1}}{\title@ba{#1}[#2]}}
+
+\def\balist@ba#1#2#3[#4]{\if@oldba\else\titleline@ba{#3}{#4}\contents@ba{#3}{#4}{}\fi \printlist@ba{#1}{#2}{#3}}
+\def\Check@balist#1#2#3#4{\@ifnextchar[{\balist@ba{#1}{#2}{#3}}{\balist@ba{#1}{#2}{#3}[#4]}}
+
+\def\batwocoltopskip{10pt}
+\def\dotcbalist@ba#1#2#3[#4]{\twocolumn[\titleline@ba{#3}{#4}%
+ \if@bibsorthead \vskip \batwocoltopskip\else\if@bibsortspace\vskip \batwocoltopskip\fi\fi]\relax
+ \contents@ba{#3}{#4}{\thispagestyle{plain}}\printlist@ba{#1}{#2}{#3}}
+\def\tcbalist@ba#1#2#3#4[#5]{{%
+ #2{\if@twocolumn\dotcbalist@ba{#1}{#3}{#4}[#5]\clearpage
+ \else \dotcbalist@ba{#1}{#3}{#4}[#5]\onecolumn
+ \fi}}}
+\def\Check@tcbalist#1#2#3#4#5{\@ifnextchar[{\tcbalist@ba{#1}{#2}{#3}{#4}}{\tcbalist@ba{#1}{#2}{#3}{#4}[#5]}}
+
+
+\def\printabktitle{\ba@textmode\Check@batitle{abk}{subsection}}
+\def\printarqtitle{\ba@textmode\Check@batitle{arq}{subsection}}
+\def\printbibtitle{\ba@textmode\Check@batitle{bib}{section}}
+\def\printgrrtitle{\ba@textmode\Check@batitle{grr}{subsection}}
+\def\printpertitle{\ba@textmode\Check@batitle{per}{subsection}}
+\def\printprrtitle{\ba@textmode\Check@batitle{prr}{subsection}}
+\def\printsrrtitle{\ba@textmode\Check@batitle{srr}{subsection}}
+\def\printvkctitle{\ba@textmode\Check@batitle{vkc}{subsection}}
+\def\printvlititle{\ba@textmode\Check@batitle{vli}{subsection}}
+\def\printvqutitle{\ba@textmode\Check@batitle{vqu}{subsection}}
+
+
+\def\@balistnumemph{\normalfont\balistnumemph\relax\upshape}
+\def\@baloopspace{\def\ {\penalty\@m\hskip 0.25em plus 0.2em minus 0.1em}}
+\def\@baindexlist{%
+ \def\first@baidx##1{\leavevmode
+ {\@baloopspace\@balistnumemph{{\frompagesep}##1}}\ignorespaces}%
+ \def\follo@baidx##1{{\@baloopspace\@balistnumemph{##1}}\ignorespaces}}
+
+\newif\if@banonum\@banonumfalse
+
+\def\@printnumvlilist#1{\resetcorr@ba{\@vxxbalisttrue\@kxxbafalse\def\literentry{\@listventry}\@baindexlist\@balist{vli}{#1}}}
+ \def\printnumvlilist{\ba@textmode\@printnumvlilist{\@baitemdefs}}
+
+\def\@printvlilist#1{\resetcorr@ba{\@vxxbalisttrue\@kxxbafalse\@banonumtrue\def\literentry{\@listventry}\@balist{vli}{#1}}}
+ \def\printvlilist{\ba@textmode\@printvlilist{\@baitemdefs}}
+
+
+\def\@printnumvqulist#1{\resetcorr@ba{\@vxxbalisttrue\@kxxbafalse\def\quellentry{\@listventry}\@baindexlist\@balist{vqu}{#1}}}
+ \def\printnumvqulist{\ba@textmode\@printnumvqulist{\@baitemdefs}}
+
+\def\@printvqulist#1{\resetcorr@ba{\@vxxbalisttrue\@kxxbafalse\@banonumtrue\def\quellentry{\@listventry}\@balist{vqu}{#1}}}
+ \def\printvqulist{\ba@textmode\@printvqulist{\@baitemdefs}}
+
+
+\def\@printnumperlist#1{\resetcorr@ba{\def\perioentry{\@perioentry}\@baindexlist\@balist{per}{#1}}}
+ \def\printnumperlist{\ba@textmode\@printnumperlist{\@baitemdefs}}
+
+\def\@printperlist#1{\resetcorr@ba{\@banonumtrue\def\perioentry{\@perioentry}\@balist{per}{#1}}}
+ \def\printperlist{\ba@textmode\@printperlist{\@baitemdefs}}
+
+
+\def\@printnumarqlist#1{\resetcorr@ba{\def\archqentry{\@archqentry}\@baindexlist\@balist{arq}{#1}}}
+ \def\printnumarqlist{\ba@textmode\@printnumarqlist{\@baitemdefs}}
+
+\def\@printarqlist#1{\resetcorr@ba{\@banonumtrue\def\archqentry{\@archqentry}\@balist{arq}{#1}}}
+ \def\printarqlist{\ba@textmode\@printarqlist{\@baitemdefs}}
+
+
+\def\@printabklist#1{{\@banonumtrue\def\abkrzentry{\@abkrzentry}%
+ \@balist{abk}{#1}}}
+ \def\printabklist{\ba@textmode\@printabklist{\@baitemdefs}}
+
+\def\@printnumabklist#1{\resetcorr@ba{\def\abkrzentry{\@abkrzentry}%
+ \@baindexlist
+ \@balist{abk}{#1}}}
+ \def\printnumabklist{\ba@textmode\@printnumabklist{\@baitemdefs}}
+
+
+\def\@printvkclist#1{\resetcorr@ba{\@kxxbatrue\@banonumtrue\def\vkcitentry{\@vkcitentry}%
+ \@balist{vkc}{#1}}}
+ \def\printvkclist{\ba@textmode\@printvkclist{\@baitemdefs}}
+
+\def\@printnumvkclist#1{\resetcorr@ba{\@kxxbatrue\def\vkcitentry{\@vkcitentry}%
+ \@baindexlist
+ \@balist{vkc}{#1}}}
+ \def\printnumvkclist{\ba@textmode\@printnumvkclist{\@baitemdefs}}
+
+
+\def\@printgrrlist#1{\resetcorr@ba{\@banonumtrue\def\geogrentry{\@baTWOentry}%
+ \@balist{grr}{#1}}}
+ \def\printgrrlist{\ba@textmode\@printgrrlist{\@baitemdefs}}
+
+\def\@printnumgrrlist#1{\resetcorr@ba{\def\geogrentry{\@baTWOentry}%
+ \@baindexlist
+ \@balist{grr}{#1}}}
+ \def\printnumgrrlist{\ba@textmode\@printnumgrrlist{\@baitemdefs}}
+
+
+\def\@printprrlist#1{\resetcorr@ba{\@banonumtrue\def\persrentry{\@baTWOentry}%
+ \@balist{prr}{#1}}}
+ \def\printprrlist{\ba@textmode\@printprrlist{\@baitemdefs}}
+
+\def\@printnumprrlist#1{\resetcorr@ba{\def\persrentry{\@baTWOentry}%
+ \@baindexlist
+ \@balist{prr}{#1}}}
+ \def\printnumprrlist{\ba@textmode\@printnumprrlist{\@baitemdefs}}
+
+
+\def\@printsrrlist#1{\resetcorr@ba{\@banonumtrue\def\subjrentry{\@baTWOentry}%
+ \@balist{srr}{#1}}}
+ \def\printsrrlist{\ba@textmode\@printsrrlist{\@baitemdefs}}
+
+\def\@printnumsrrlist#1{\resetcorr@ba{\def\subjrentry{\@baTWOentry}%
+ \@baindexlist
+ \@balist{srr}{#1}}}
+ \def\printnumsrrlist{\ba@textmode\@printnumsrrlist{\@baitemdefs}}
+
+
+\def\printnumvli{\ba@textmode\Check@balist{\@baonecoldefs}{num}{vli}{subsection}}
+\def\printnumvqu{\ba@textmode\Check@balist{\@baonecoldefs}{num}{vqu}{subsection}}
+\def\printnumper{\ba@textmode\Check@balist{\@baonecoldefs}{num}{per}{subsection}}
+\def\printnumarq{\ba@textmode\Check@balist{\@baonecoldefs}{num}{arq}{subsection}}
+
+\def\printvli{\ba@textmode\Check@balist{\@baonecoldefs}{}{vli}{subsection}}
+\def\printvqu{\ba@textmode\Check@balist{\@baonecoldefs}{}{vqu}{subsection}}
+\def\printper{\ba@textmode\Check@balist{\@baonecoldefs}{}{per}{subsection}}
+\def\printarq{\ba@textmode\Check@balist{\@baonecoldefs}{}{arq}{subsection}}
+
+\def\printabk{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\footnotesize}{}{abk}{subsection}}
+\def\printnumabk{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\footnotesize}{num}{abk}{subsection}}
+
+\def\printvkc{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{}{vkc}{subsection}}
+\def\printnumvkc{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{num}{vkc}{subsection}}
+
+\def\printgrr{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{}{grr}{subsection}}
+\def\printnumgrr{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{num}{grr}{subsection}}
+
+\def\printprr{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{}{prr}{subsection}}
+\def\printnumprr{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{num}{prr}{subsection}}
+
+\def\printsrr{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{}{srr}{subsection}}
+\def\printnumsrr{\ba@textmode\Check@tcbalist{\@batwocoldefs}{\small}{num}{srr}{subsection}}
+
+
+
+\def\info@emptyba#1{\typeout@ba{BibArts Warning: No ...entries in \jobname.#1 on input line \line@ba.}%
+ {\item{}\BibArts: File \jobname.#1 was empty. Did you start
+ \LaTeX\ only once\string? Or did you forget to command
+ \string`bibsort \jobname\string'\string?}}
+
+
+\def\ignore@unused#1{\type@bawarn{Can't `addto' \string#1}}
+
+
+\def\@reprintfunctions{%
+ \def\onlyhere##1{}%
+ \def\onlyout##1{##1}%
+ \def\onlyvoll##1{##1}%
+ \def\onlykurz##1{}%
+ \def\ktit##1{##1\ba@textmode}%
+ \@fileswfalse% %% not influences \label, \index, \glossary %%
+ \def\sort##1{}%
+}
+
+\def\@reprintkfunctions{% %% if bibsort is not used %%
+ \def\onlyhere##1{}%
+ \def\onlyout##1{##1}%
+ \def\onlyvoll##1{}%
+ \def\onlykurz##1{##1}%
+}
+
+
+\def\language@barep#1#2{%
+ \ifnum\language=#1%
+ \else\typeout@ba{BibArts list line \line@ba: Reproduce hyphenation #1 as in LaTeX file #2.}%
+ \language=#1%
+ \fi}
+
+\def\activech@barep#1#2{
+ \ifnum\catcode\grave@ba\"=#1%
+ \else\typeout@ba{^^JBibArts warning for page \thepage\space (entry from LaTeX file #2): " troubles!
+ ^^J \space\space I can't reproduce DOUBLEQUOTE in line \line@ba\space of the current BibArts file.
+ ^^J \space\space The catcode of that character has been #1 in your LaTeX file, instead
+ ^^J \space\space of \the\catcode\grave@ba\", which is - and remains - the value here in the BibArts list.
+ ^^J \space\space If you use [n]german.sty: DID YOU START bibsort USING OPTION -x ??
+ ^^J \space\space If you've used e.g. \string\"a instead of "a there, you may ignore that warning.
+ ^^J}%
+ \fi}
+
+%% No \message without german.sty: %%
+\def\bagermanTeX#1{%
+ \expandafter\ifx\csname ngermanTeX\endcsname\relax\else \ngermanTeX{#1}\message{(new)}\fi
+ \expandafter\ifx\csname germanTeX\endcsname\relax\else \germanTeX{#1}\message{(old)}\fi}
+\def\baoriginalTeX#1{%
+ \expandafter\ifx\csname originalTeX\endcsname\relax\else
+ \expandafter\ifx\csname AfterBabelLanguage\endcsname\relax\originalTeX{#1}\fi %% not babel
+ \fi}
+
+
+\newif\if@baaddx\@baaddxfalse
+\def\addxadd@ba#1#2#3{\def\nsep{#1}\relax\csname @baaddx#2\endcsname}
+
+\def\first@baidx#1{\ignorespaces}
+\def\follo@baidx#1{\ignorespaces}
+
+\def\@listventry#1#2#3#4#5#6[#7][#8](#9){%
+ \addxadd@ba#5\relax\relax\relax
+ \language@barep{#8}{#9}%
+ \activech@barep{#7}{#9}%
+ \gdef\bacorr{}%
+ \item{}\@printvname{#1}{\listlnfnsep}{#2}{1}{1}%
+ \if@baaddx\@printoptarg{#3}{\nsep}\else\@printoptarg{#3}{}\fi
+ {\reprint@batrue \@printlastarg{#4}{}}\if@banonum{\fromnopagevxxsep}\fi\@reportbaupfalse\ignorespaces}
+
+\def\@vkcitentry#1#2#3#4#5#6[#7][#8](#9){\@reprintkfunctions
+ \addxadd@ba#5\relax\relax\relax
+ \language@barep{#8}{#9}%
+ \activech@barep{#7}{#9}%
+ \makeXcorrcmd@ba{\kxxemph}{\bacorr}%
+ \item{}\@printkname{#1}{1}%
+ \if@baaddx\@printoptarg{#2}{\nsep}\else\@printoptarg{#2}{}\fi
+ \@printlastarg{#3}{\kxxemph}\@initprinthint{#4}%
+ \if@banonum{\fromnopagevkcsep}\fi
+ \@reportbaupfalse\ignorespaces}
+
+
+\def\printfirstarg@ba#1#2#3{{\nulskip@ba
+ \setbox\testbox@ba=\hbox{#1{\ignorespaces #2\ba@textmode}}%
+ \ifdim\ht\testbox@ba=0pt{\erri@ba}\type@bawarn{Empty ...#3}\else{\unhbox\testbox@ba}\fi}}
+
+\def\printsecondarg@ba#1#2#3#4{{%
+ \setbox\testbox@ba=\hbox{\ignorespaces #2\ba@textmode}%
+ \ifdim\ht\testbox@ba=0pt{#4{\ifdim\fontdimen\@ne\font=\z@\gdef\bacorr{}\fi}}\else
+ {#1}{\unhbox\testbox@ba}%
+ \init@bacorr{#2}{}{\bacorr}%
+ {#3}\if@banonum\spacefactorM@ba\else
+ \setbox\testbox@ba=\hbox{#3}%
+ \ifdim\ht\testbox@ba=0pt\else
+ \init@bacorr{#3}{}{\bacorr}%
+ \fi
+ \fi
+ \fi}}
+
+\def\addTadd@ba#1#2#3#4{\def\@baopen{#1}\relax\def\@baclose{#2}}
+\def\addAadd@ba#1#2#3#4{%
+ \ifx#31\arqsectionbegin\relax\fi
+ \ifx#32\arqsubsectionbegin\relax\fi
+ \ifx#33\arqsubsubsectionbegin\relax\fi
+ \def\@baopen{#1}\relax\def\@baclose{#2}}
+\def\addBadd@ba#1#2#3#4{%
+ \ifx#31\arqsectionend\relax\fi
+ \ifx#32\arqsubsectionend\relax\fi
+ \ifx#33\arqsubsubsectionend\relax\fi}
+
+\def\@baTWOentry#1#2#3#4[#5][#6](#7){%
+ \addTadd@ba#3\relax\relax\relax\relax
+ \language@barep{#6}{#7}%
+ \activech@barep{#5}{#7}%
+ \item{}\printfirstarg@ba{\xrrlistemph}{#1}{.rr}%
+ \init@bacorr{#1}{\xrrlistemph}{\bacorr}%
+ \printsecondarg@ba{\@baopen}{#2}{\@baclose}{\xrrlistemph}%
+ \if@banonum{\fromnopagexrrsep}\fi \@reportbaupfalse\ignorespaces}
+
+\def\@archqentry#1#2#3#4[#5][#6](#7){{%
+ \addAadd@ba#3%
+ \language@barep{#6}{#7}%
+ \activech@barep{#5}{#7}%
+ \item{}\printfirstarg@ba{\arqlistemph}{#1}{arq}%
+ \init@bacorr{#1}{\arqlistemph}{\bacorr}%
+ \printsecondarg@ba{\@baopen}{#2}{\@baclose}{\arqlistemph}%
+ \if@banonum{\fromnopagearqsep}\addBadd@ba#3\relax\else
+ \ifdim\lastskip=\hasdotcode@ba\addBadd@ba#3\relax\@bahasdot\else
+ \addBadd@ba#3\relax\fi
+ \fi}%
+ \@reportbaupfalse\ignorespaces}
+
+\def\@perioentry#1#2#3#4[#5][#6](#7){%
+ \addTadd@ba#3\relax\relax\relax\relax
+ \language@barep{#6}{#7}%
+ \activech@barep{#5}{#7}%
+ \item{}\printfirstarg@ba{\perlistemph}{#1}{per}%
+ \init@bacorr{#1}{\perlistemph}{\bacorr}%
+ \printsecondarg@ba{\@baopen}{#2}{\@baclose}{\perlistemph}%
+ \if@banonum{\fromnopagepersep}\fi \@reportbaupfalse\ignorespaces}
+
+\def\@abkrzentry#1#2#3#4[#5][#6](#7){%
+ \addTadd@ba#3\relax\relax\relax\relax
+ \language@barep{#6}{#7}%
+ \activech@barep{#5}{#7}%
+ \item{}\printfirstarg@ba{\abklistemph}{#1}{abk...}%
+ \init@bacorr{#1}{\abklistemph}{\bacorr}%
+ \printsecondarg@ba{\@baopen}{#2}{\@baclose}{\abklistemph}%
+ \if@banonum{\fromnopageabksep}\fi \@reportbaupfalse\ignorespaces}
+
+\def\bamyitemdefs#1{\@bsphack\def\@baitemdefs{#1}\@esphack}
+\def\batwocolitemdefs{\def\@baitemdefs{\@batwocoldefs}}
+\def\@batwocoldefs{\parsep 0ex \itemsep 0pt \parskip 0pt \lineskip 0pt \rightskip 1cm minus 1cm}
+\def\baonecolitemdefs{\def\@baitemdefs{\@baonecoldefs}}
+\def\@baonecoldefs{\parsep 0ex \itemsep -.5ex}
+\def\notbaitemdefs{\def\@baitemdefs{}}
+\notbaitemdefs
+
+\def\listparm@ba{}
+\def\@balist#1#2{\message{ \string<\string< #1\string:}%
+ {\errorcontextlines=-1\catcode\grave@ba\@=11\balisttype{}%
+ \@herefunctions\@reprintfunctions\@rheraldktitfalse
+ \@allowconferizefalse \genderingfalse \@balisttrue
+ %%%
+ \gdef\listparm@ba{#2}%
+ %%%
+ \if@bibsortspace
+ \let\bibsortpreparespace\do@bibsortspace
+ \fi
+ %%%
+ \if@bibsorthead
+ \let\bibsortpreparexspace\do@bibsortspace
+ \if@twocolumn
+ \let\bibsortpreparehead\do@twocolumnbsh
+ {\edef\@testa{\listparm@ba}%
+ \ifx\@testa\@batwocoldefs
+ \else
+ \type@bawarn{Set TWOcolitemdefs (TWOcol+heads)}%
+ \gdef\listparm@ba{\@batwocoldefs}%
+ \fi}%
+ \else
+ \let\bibsortpreparehead\do@onecolumnbsh
+ {\edef\@testa{\listparm@ba}%
+ \ifx\@testa\@batwocoldefs
+ \type@bawarn{Reject TWOcolitemdefs (ONEcol+heads)}%
+ \gdef\listparm@ba{}%
+ \fi}%
+ \fi
+ \fi
+ %%%
+ \sloppy\begin{description}
+ \listparm@ba\relax
+ \@input{\jobname.#1}
+ \def\@noitemerr{\info@emptyba{#1}}
+ \end{description}\fussy}\message{\string>\string> }}
+
+
+
+\def\@hereUfunctions{%
+ \def\par{}%
+ \def\vli{\addtovli}%
+ \def\vqu{\addtovqu}%
+ \def\kli{\addtokli}%
+ \def\kqu{\addtokqu}%
+ \def\printonlyvli{\ignore@unused{\printonlyvli}\shadowv}%
+ \def\printonlyvqu{\ignore@unused{\printonlyvqu}\shadowv}%
+ \def\printonlykli{\ignore@unused{\printonlykli}\shadowk}%
+ \def\printonlykqu{\ignore@unused{\printonlykqu}\shadowk}%
+ \def\xvli{\xaddtovli}%
+ \def\xvqu{\xaddtovqu}%
+ \def\xkli{\xaddtokli}%
+ \def\xkqu{\xaddtokqu}%
+ \def\xprintonlyvli{\ignore@unused{\xprintonlyvli}\shadowv}%
+ \def\xprintonlyvqu{\ignore@unused{\xprintonlyvqu}\shadowv}%
+ \def\xprintonlykli{\ignore@unused{\xprintonlykli}\shadowk}%
+ \def\xprintonlykqu{\ignore@unused{\xprintonlykqu}\shadowk}%
+ \def\per{\addtoper}%
+ \def\abkper{\addtoper}%
+ \def\arq{\addtoarq}%
+ \def\abk{\ignore@unused{\abk}\shadowone}%
+ \def\addtoabk{\ignore@unused{\addtoabk}\shadowone}%
+ \def\abkdef{\addtoabkdef}%
+ \def\defabk{\addtodefabk}%
+ \def\printonlyper{\ignore@unused{\printonlyper}\shadowo}%
+ \def\printonlyarq{\ignore@unused{\printonlyarq}\shadowt}%
+ \def\printonlyabk{\ignore@unused{\printonlyabk}\shadowone}%
+ \def\printonlyabkdef{\ignore@unused{\printonlyabkdef}\shadowtwo}%
+ \def\printonlydefabk{\ignore@unused{\printonlydefabk}\shadowtwo}%
+}
+
+\newif\if@unusedbib\@unusedbibfalse
+
+\expandafter\ifx\csname newenvironment\endcsname\relax
+\else\newenvironment{unused}{\@unusedbibtrue\@hereUfunctions\ignorespaces}{}\fi
+
+
+%%
+
+
+ %% hyphenation setting %%
+
+
+\expandafter\ifx\csname language\endcsname\relax
+ \typeout@ba{Install missing count \string\language: Hyphenation features will probably not work.}%
+ \newcount\language
+\fi
+
+\def\psethyphenation#1{\@bsphack\sethyphen@ba{#1}{You've called \string\sethyphenation{#1}.}\@esphack}
+\def\sethyphenation{\protect\psethyphenation}
+
+\def\sethyphen@ba#1#2{%
+ \expandafter \ifx\csname l@#1\endcsname\relax
+ {\errhelp{
+ ^^JI will not set `#1' hyphenation,
+ ^^Jbecause that `[LanguageName]' is no preloaded feature.
+ ^^JYou have to fix that later: <return>.^^J
+ }%
+ \errorcontextlines=-1\@qqertypeout{sethyphenation}{#2}%
+ \errmessage@ba{Language-name `#1' is undefined. (Old VALUE remains valid: \lang@ba)}%
+ }%
+ \else \ifnum255=\csname l@#1\endcsname
+ {\errhelp{
+ ^^JLanguage `#1' is defined, but as hyphenation 255.
+ ^^JThat probably is an error-value for a not preloaded feature.
+ ^^JI myself will NOT set \language= 255.^^J
+ }%
+ \errorcontextlines=-1\@qqertypeout{sethyphenation}{#2}%
+ \errmessage@ba{No `#1' hyphenation. (Old VALUE remains valid: \lang@ba)}%
+ }%
+ \else\language=\csname l@#1\endcsname
+ \fi
+ \fi}
+
+\def\Check@originalquote[#1]{\begin{quote}\originalquotetype{}\ifx #1\erri@ba\else
+ \sethyphen@ba{#1}{You've called \string\begin{originalquote}[#1].}\fi}
+
+\expandafter\ifx\csname newenvironment\endcsname\relax
+\else\newenvironment{originalquote}{\def\bakorr@fnr{{\vskip\topsep}{\vskip\partopsep}}%
+ \@ifnextchar[{\Check@originalquote}{\Check@originalquote[\erri@ba]}}{\end{quote}\pagebreak[2]}%
+\fi
+
+
+%%
+
+
+ %% cross-references %%
+
+
+%% No italics-corr on 2.09: %%
+\expandafter\ifx\csname ba@its\endcsname\relax
+\def\prepare@baref{}%
+\else
+\def\prepare@baref{\gdef\barefcorr{}%
+ \def\itshape{\ba@its\makecorrcmd@ba{}{\barefcorr}}%
+ \def\slshape{\ba@sls\makecorrcmd@ba{}{\barefcorr}}%
+}%
+\fi
+
+\def\insref@ba#1{{%
+ \def\@testa{#1}%
+ \ifx\@testa\@leerz\else\ifx\@testa\@leer\else
+ {\ignorespaces #1}\penalty\@m \ \fi\fi}}
+
+\def\ba@ref[#1]#2{{\gdef\barefcorr{}%
+ \cap@ba{refvbeg}\insref@ba{#1}\cap@ba{refvpag}%
+ \expandafter\ifx\csname r@baf.#2\endcsname\relax
+ {\prepare@baref\pageref{#2}}\else
+ {\prepare@baref\pageref{baf.#2}}\cap@ba{refvfnt}{\prepare@baref\ref{baf.#2}}\fi
+ \cap@ba{refvend}}}
+\def\pbaref{\@ifnextchar[{\ba@ref}{\ba@ref[\cap@ba{refverb}]}}
+\def\baref{\protect\pbaref}
+
+\def\ba@label#1{\@bsphack
+ \if@footnote
+ \@ifundefined{r@#1}{}{\@warning{Label \string`#1\string' multiply defined [BibArts]}}%
+ \if@baminipage{\let\@currentlabel=\thempfootnote\label{baf.#1}}%
+ \else {\let\@currentlabel=\thefootnote \label{baf.#1}}%
+ \fi
+ \else {\let\@currentlabel=\@leer \label{#1}}%
+ \fi
+ \@esphack}
+\def\pbalabel{\ba@label}
+\def\balabel{\protect\pbalabel}
+
+
+%%
+
+\def\ba@varref#1#2#3{%
+ \makevarstring@ba{#1}{#2}{#3}\ba@ref[\cap@ba{confer}]{\insvarstring@ba}}
+
+\def\ba@varlabel#1#2#3{\ifba@varstring\if@filesw\if@allowconferize
+ \makevarstring@ba{#1}{#2}{#3}\ba@label{\insvarstring@ba}\fi\fi\fi}
+
+ %% \newlabel at \conferize
+ %% ------------------------
+ %% (X \l \L \o \O \ss's [X = l, L, o, O, ss]
+ %% ) \^
+ %% * \"
+ %% [ \`
+ %% ] \'
+ %% + \c
+ %% - \~
+ %% oe \oe
+ %% OE \OE
+ %% ae \ae
+ %% AE \AE
+ %% a \aa
+ %% A \AA
+ %% i \i
+ %% j \j
+
+
+\newif\if@bains@lab
+\newcount\count@ba
+
+\def\reset@allbalabvars{%
+ \global\let\bavar@xA=\@leer
+ \global\let\bavar@xB=\@leer
+ \global\let\bavar@xC=\@leer
+ \global\let\bavar@xD=\@leer
+ \global\let\bavar@xE=\@leer
+ \global\let\bavar@xF=\@leer
+ \global\let\bavar@xG=\@leer
+ \global\let\bavar@xH=\@leer
+ \global\let\bavar@xI=\@leer
+ \global\let\bavar@xJ=\@leer
+ \global\let\bavar@xK=\@leer
+ \global\let\bavar@xL=\@leer
+ \global\let\bavar@yA=\@leer
+ \global\let\bavar@yB=\@leer
+ \global\let\bavar@yC=\@leer
+ \global\let\bavar@yD=\@leer
+ \global\let\bavar@yE=\@leer
+ \global\let\bavar@yF=\@leer
+ \global\let\bavar@yG=\@leer
+ \global\let\bavar@yH=\@leer
+ \global\let\bavar@yI=\@leer
+ \global\let\bavar@yJ=\@leer
+ \global\let\bavar@yK=\@leer
+ \global\let\bavar@yL=\@leer
+ \global\let\bavar@zA=\@leer
+ \global\let\bavar@zB=\@leer
+ \global\let\bavar@zC=\@leer
+ \global\let\bavar@zD=\@leer
+ \global\let\bavar@zE=\@leer
+ \global\let\bavar@zF=\@leer
+ \global\let\bavar@zG=\@leer
+ \global\let\bavar@zH=\@leer
+ \global\let\bavar@zI=\@leer
+ \global\let\bavar@zJ=\@leer
+ \global\let\bavar@zK=\@leer
+ \global\let\bavar@zL=\@leer
+ \global\let\bavar@zM=\@leer
+ \global\let\bavar@zN=\@leer
+ \global\let\bavar@zO=\@leer
+ \global\let\bavar@zP=\@leer
+ \global\let\bavar@zQ=\@leer
+ \global\let\bavar@zR=\@leer
+ \global\let\bavar@zS=\@leer
+ \global\let\bavar@zT=\@leer
+ \global\let\bavar@zU=\@leer
+ \global\let\bavar@zV=\@leer
+ \global\let\bavar@zW=\@leer
+ \global\let\bavar@zX=\@leer
+ }
+
+\def\makevarstring@ba#1#2#3{%
+ \reset@allbalabvars
+ {\@hereRfunctions
+ \def\SS{{SS}}% %% \
+ \def\aa{{\r{a}}}% %% > avoid [T1] errors
+ \def\AA{{\r{A}}}% %% /
+ \ifba@varstring \@bains@labtrue
+ \getnext@baA#1\endlist@ba \@bains@labtrue
+ \getnext@baB#2\endlist@ba \@bains@labtrue
+ \getnext@baC#3\endlist@ba\fi}}
+
+\def\endlist@ba{\endlist@ba}
+
+\def\getnext@baA{\afterassignment\doba@labA\let\next@ba= }
+\def\getnext@baB{\afterassignment\doba@labB\let\next@ba= }
+\def\getnext@baC{\afterassignment\doba@labC\let\next@ba= }
+
+
+\def\refch@ba#1#2{\let\next@ba=#2\csname savn@bavar#1\endcsname}
+\def\refop@ba#1{\refch@ba{#1}{(}}
+
+
+\def\sonderz@banext#1{%
+ \ifx \ck\next@ba \refch@ba{#1}{c}\refch@ba{#1}{k}\fi
+ \ifx \CK\next@ba \refch@ba{#1}{C}\refch@ba{#1}{K}\fi
+ \ifx \hyc\next@ba \refch@ba{#1}{c}\fi
+ \ifx \oldhyc\next@ba \refch@ba{#1}{c}\fi
+ \ifx \HYC\next@ba \refch@ba{#1}{C}\fi
+ \ifx \OLDHYC\next@ba \refch@ba{#1}{C}\fi
+ \ifx \hyl\next@ba \refch@ba{#1}{l}\fi
+ \ifx \oldhyl\next@ba \refch@ba{#1}{l}\fi
+ \ifx \HYL\next@ba \refch@ba{#1}{L}\fi
+ \ifx \OLDHYL\next@ba \refch@ba{#1}{L}\fi
+ \ifx \hym\next@ba \refch@ba{#1}{m}\fi
+ \ifx \oldhym\next@ba \refch@ba{#1}{m}\fi
+ \ifx \HYM\next@ba \refch@ba{#1}{M}\fi
+ \ifx \OLDHYM\next@ba \refch@ba{#1}{M}\fi
+ \ifx \hyn\next@ba \refch@ba{#1}{n}\fi
+ \ifx \oldhyn\next@ba \refch@ba{#1}{n}\fi
+ \ifx \HYN\next@ba \refch@ba{#1}{N}\fi
+ \ifx \OLDHYN\next@ba \refch@ba{#1}{N}\fi
+ \ifx \hyp\next@ba \refch@ba{#1}{p}\fi
+ \ifx \oldhyp\next@ba \refch@ba{#1}{p}\fi
+ \ifx \HYP\next@ba \refch@ba{#1}{P}\fi
+ \ifx \OLDHYP\next@ba \refch@ba{#1}{P}\fi
+ \ifx \hyr\next@ba \refch@ba{#1}{r}\fi
+ \ifx \oldhyr\next@ba \refch@ba{#1}{r}\fi
+ \ifx \HYR\next@ba \refch@ba{#1}{R}\fi
+ \ifx \OLDHYR\next@ba \refch@ba{#1}{R}\fi
+ \ifx \hyt\next@ba \refch@ba{#1}{t}\fi
+ \ifx \oldhyt\next@ba \refch@ba{#1}{t}\fi
+ \ifx \HYT\next@ba \refch@ba{#1}{T}\fi
+ \ifx \OLDHYT\next@ba \refch@ba{#1}{T}\fi
+ \ifx \hyf\next@ba \refch@ba{#1}{f}\fi
+ \ifx \oldhyf\next@ba \refch@ba{#1}{f}\fi
+ \ifx \HYF\next@ba \refch@ba{#1}{F}\fi
+ \ifx \OLDHYF\next@ba \refch@ba{#1}{F}\fi
+ \ifx\oldhyss\next@ba \refop@ba{#1}\refch@ba{#1}{s}\refch@ba{#1}{s}\fi
+ \ifx\OLDHYSS\next@ba \refch@ba{#1}{S}\refch@ba{#1}{S}\fi
+ \ifx\newhyss\next@ba \refop@ba{#1}\refch@ba{#1}{s}\refch@ba{#1}{s}\fi
+ \ifx\NEWHYSS\next@ba \refch@ba{#1}{S}\refch@ba{#1}{S}\fi
+ \ifx \hyss\next@ba \refop@ba{#1}\refch@ba{#1}{s}\refch@ba{#1}{s}\fi
+ \ifx \HYSS\next@ba \refch@ba{#1}{S}\refch@ba{#1}{S}\fi
+ \ifx \ss\next@ba \refop@ba{#1}\refch@ba{#1}{s}\refch@ba{#1}{s}\fi
+ \ifx \SS\next@ba \refch@ba{#1}{S}\refch@ba{#1}{S}\fi
+ \ifx \sz\next@ba \refop@ba{#1}\refch@ba{#1}{s}\refch@ba{#1}{z}\fi
+ \ifx \SZ\next@ba \refch@ba{#1}{S}\refch@ba{#1}{Z}\fi
+ \ifx \3\next@ba \refop@ba{#1}\refch@ba{#1}{s}\refch@ba{#1}{s}\fi
+ \ifx\oe\next@ba \refch@ba{#1}{o}\refch@ba{#1}{e}\fi
+ \ifx\OE\next@ba \refch@ba{#1}{O}\refch@ba{#1}{E}\fi
+ \ifx\ae\next@ba \refch@ba{#1}{a}\refch@ba{#1}{e}\fi
+ \ifx\AE\next@ba \refch@ba{#1}{A}\refch@ba{#1}{E}\fi
+ \ifx\aa\next@ba \refch@ba{#1}{a}\fi
+ \ifx\AA\next@ba \refch@ba{#1}{A}\fi
+ \ifx \o\next@ba \refop@ba{#1}\refch@ba{#1}{o}\fi
+ \ifx \O\next@ba \refop@ba{#1}\refch@ba{#1}{O}\fi
+ \ifx \l\next@ba \refop@ba{#1}\refch@ba{#1}{l}\fi
+ \ifx \L\next@ba \refop@ba{#1}\refch@ba{#1}{L}\fi
+ \ifx \i\next@ba \refch@ba{#1}{i}\fi
+ \ifx \j\next@ba \refch@ba{#1}{j}\fi
+ \ifx \"\next@ba \refch@ba{#1}{*}\fi
+ \ifx \`\next@ba \refch@ba{#1}{[}\fi
+ \ifx \'\next@ba \refch@ba{#1}{]}\fi
+ \ifx \^\next@ba \refch@ba{#1}{)}\fi
+ \ifx \~\next@ba \ifnum\catcode\grave@ba\-=12\refch@ba{#1}{-}\fi \fi
+ \ifx \c\next@ba \ifnum\catcode\grave@ba\+=12\refch@ba{#1}{+}\fi \fi
+}
+
+
+ {\catcode\grave@ba\~=12%
+ \catcode\grave@ba\"=12%
+ \catcode\grave@ba\:=12%
+ \catcode\grave@ba\;=12%
+ \catcode\grave@ba\!=12%
+ \catcode\grave@ba\?=12%
+ \catcode\grave@ba\'=12%
+ \catcode\grave@ba\`=12%
+ \catcode\grave@ba\<=12%
+ \catcode\grave@ba\>=12%
+\global\def\prepnumplussonder@ba#1{%
+ \ifx "\next@ba \else\ifx .\next@ba \else\ifx ,\next@ba \else\ifx /\next@ba \else
+ \ifx *\next@ba \else\ifx [\next@ba \else\ifx ]\next@ba \else\ifx |\next@ba \else
+ \ifx -\next@ba \else\ifx =\next@ba \else\ifx +\next@ba \else\ifx (\next@ba \else
+ \ifx )\next@ba \else\ifx @\next@ba \else
+ \ifx ~\next@ba \else\ifx :\next@ba \else\ifx ;\next@ba \else\ifx !\next@ba \else
+ \ifx ?\next@ba \else\ifx `\next@ba \else\ifx '\next@ba \else
+ \ifx <\next@ba \else\ifx >\next@ba \else
+ \ifcat 1\next@ba \csname savn@bavar#1\endcsname
+ \else \sonderz@banext{#1}%
+ \fi
+ \fi\fi
+ \fi\fi\fi
+ \fi\fi\fi\fi
+ \fi\fi
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi}%
+}
+
+\def\analyselabeltext@ba#1{%
+ \expandafter\ifx \csname next@ba\endcsname\relax\else
+ \ifx \onlyvoll\next@ba \@bains@labfalse \count@ba0 \else
+ \ifx \onlyout \next@ba \@bains@labfalse \count@ba0 \else
+ \ifx \vauthor \next@ba \@bains@labfalse \count@ba0 \else
+ \ifx \midvauthor \next@ba \@bains@labfalse \count@ba0
+ \fi\fi\fi\fi
+ \if@bains@lab
+ \ifcat A\next@ba \csname savn@bavar#1\endcsname
+ \else \prepnumplussonder@ba{#1}%
+ \fi
+ \else
+ \ifx \bgroup\next@ba \advance\count@ba by 1 \else
+ \ifx \egroup\next@ba \advance\count@ba by -1
+ \ifnum 0=\count@ba \@bains@labtrue
+ \fi\fi\fi
+ \fi
+ \fi}
+
+\def\doba@labA{%
+ \ifx\next@ba\endlist@ba \let\next@ba\@leer
+ \else \ifx\bavar@xL\@leer \analyselabeltext@ba{A}\fi
+ \let\next@ba\getnext@baA
+ \fi \next@ba}
+
+\def\doba@labB{%
+ \ifx\next@ba\endlist@ba \let\next@ba\@leer
+ \else \ifx\bavar@yL\@leer \analyselabeltext@ba{B}\fi
+ \let\next@ba\getnext@baB
+ \fi \next@ba}
+
+\def\doba@labC{%
+ \ifx\next@ba\endlist@ba \let\next@ba\@leer
+ \else \ifx\bavar@zX\@leer \analyselabeltext@ba{C}\fi
+ \let\next@ba\getnext@baC
+ \fi \next@ba}
+
+\def\savn@bavarA{%
+ \ifx\bavar@xA\@leer \global\let\bavar@xA=\next@ba \else
+ \ifx\bavar@xB\@leer \global\let\bavar@xB=\next@ba \else
+ \ifx\bavar@xC\@leer \global\let\bavar@xC=\next@ba \else
+ \ifx\bavar@xD\@leer \global\let\bavar@xD=\next@ba \else
+ \ifx\bavar@xE\@leer \global\let\bavar@xE=\next@ba \else
+ \ifx\bavar@xF\@leer \global\let\bavar@xF=\next@ba \else
+ \ifx\bavar@xG\@leer \global\let\bavar@xG=\next@ba \else
+ \ifx\bavar@xH\@leer \global\let\bavar@xH=\next@ba \else
+ \ifx\bavar@xI\@leer \global\let\bavar@xI=\next@ba \else
+ \ifx\bavar@xJ\@leer \global\let\bavar@xJ=\next@ba \else
+ \ifx\bavar@xK\@leer \global\let\bavar@xK=\next@ba \else
+ \ifx\bavar@xL\@leer \global\let\bavar@xL=\next@ba
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\savn@bavarB{%
+ \ifx\bavar@yA\@leer \global\let\bavar@yA=\next@ba \else
+ \ifx\bavar@yB\@leer \global\let\bavar@yB=\next@ba \else
+ \ifx\bavar@yC\@leer \global\let\bavar@yC=\next@ba \else
+ \ifx\bavar@yD\@leer \global\let\bavar@yD=\next@ba \else
+ \ifx\bavar@yE\@leer \global\let\bavar@yE=\next@ba \else
+ \ifx\bavar@yF\@leer \global\let\bavar@yF=\next@ba \else
+ \ifx\bavar@yG\@leer \global\let\bavar@yG=\next@ba \else
+ \ifx\bavar@yH\@leer \global\let\bavar@yH=\next@ba \else
+ \ifx\bavar@yI\@leer \global\let\bavar@yI=\next@ba \else
+ \ifx\bavar@yJ\@leer \global\let\bavar@yJ=\next@ba \else
+ \ifx\bavar@yK\@leer \global\let\bavar@yK=\next@ba \else
+ \ifx\bavar@yL\@leer \global\let\bavar@yL=\next@ba
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\savn@bavarC{%
+ \ifx\bavar@zA\@leer \global\let\bavar@zA=\next@ba \else
+ \ifx\bavar@zB\@leer \global\let\bavar@zB=\next@ba \else
+ \ifx\bavar@zC\@leer \global\let\bavar@zC=\next@ba \else
+ \ifx\bavar@zD\@leer \global\let\bavar@zD=\next@ba \else
+ \ifx\bavar@zE\@leer \global\let\bavar@zE=\next@ba \else
+ \ifx\bavar@zF\@leer \global\let\bavar@zF=\next@ba \else
+ \ifx\bavar@zG\@leer \global\let\bavar@zG=\next@ba \else
+ \ifx\bavar@zH\@leer \global\let\bavar@zH=\next@ba \else
+ \ifx\bavar@zI\@leer \global\let\bavar@zI=\next@ba \else
+ \ifx\bavar@zJ\@leer \global\let\bavar@zJ=\next@ba \else
+ \ifx\bavar@zK\@leer \global\let\bavar@zK=\next@ba \else
+ \ifx\bavar@zL\@leer \global\let\bavar@zL=\next@ba \else
+ \ifx\bavar@zM\@leer \global\let\bavar@zM=\next@ba \else
+ \ifx\bavar@zN\@leer \global\let\bavar@zN=\next@ba \else
+ \ifx\bavar@zO\@leer \global\let\bavar@zO=\next@ba \else
+ \ifx\bavar@zP\@leer \global\let\bavar@zP=\next@ba \else
+ \ifx\bavar@zQ\@leer \global\let\bavar@zQ=\next@ba \else
+ \ifx\bavar@zR\@leer \global\let\bavar@zR=\next@ba \else
+ \ifx\bavar@zS\@leer \global\let\bavar@zS=\next@ba \else
+ \ifx\bavar@zT\@leer \global\let\bavar@zT=\next@ba \else
+ \ifx\bavar@zU\@leer \global\let\bavar@zU=\next@ba \else
+ \ifx\bavar@zV\@leer \global\let\bavar@zV=\next@ba \else
+ \ifx\bavar@zW\@leer \global\let\bavar@zW=\next@ba \else
+ \ifx\bavar@zX\@leer \global\let\bavar@zX=\next@ba
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\spendother@ba#1{%
+ \ifx 1#11\fi
+ \ifx 2#12\fi
+ \ifx 3#13\fi
+ \ifx 4#14\fi
+ \ifx 5#15\fi
+ \ifx 6#16\fi
+ \ifx 7#17\fi
+ \ifx 8#18\fi
+ \ifx 9#19\fi
+ \ifx 0#10\fi
+ \ifx [#1[\fi %% \` %%
+ \ifx ]#1]\fi %% \' %%
+ \ifx (#1(\fi %% \o \O \l \L \ss \hyss ... %%
+ \ifx )#1)\fi %% \^ %%
+ \ifx *#1*\fi %% \" %%
+ \ifx +#1+\fi %% \c %%
+ \ifx -#1-\fi %% \~ %%
+ }%
+
+\def\spendletter@ba#1{%
+ \ifx a#1a\fi
+ \ifx b#1b\fi
+ \ifx c#1c\fi
+ \ifx d#1d\fi
+ \ifx e#1e\fi
+ \ifx f#1f\fi
+ \ifx g#1g\fi
+ \ifx h#1h\fi
+ \ifx i#1i\fi
+ \ifx j#1j\fi
+ \ifx k#1k\fi
+ \ifx l#1l\fi
+ \ifx m#1m\fi
+ \ifx n#1n\fi
+ \ifx o#1o\fi
+ \ifx p#1p\fi
+ \ifx q#1q\fi
+ \ifx r#1r\fi
+ \ifx s#1s\fi
+ \ifx t#1t\fi
+ \ifx u#1u\fi
+ \ifx v#1v\fi
+ \ifx w#1w\fi
+ \ifx x#1x\fi
+ \ifx y#1y\fi
+ \ifx z#1z\fi
+ \ifx A#1A\fi
+ \ifx B#1B\fi
+ \ifx C#1C\fi
+ \ifx D#1D\fi
+ \ifx E#1E\fi
+ \ifx F#1F\fi
+ \ifx G#1G\fi
+ \ifx H#1H\fi
+ \ifx I#1I\fi
+ \ifx J#1J\fi
+ \ifx K#1K\fi
+ \ifx L#1L\fi
+ \ifx M#1M\fi
+ \ifx N#1N\fi
+ \ifx O#1O\fi
+ \ifx P#1P\fi
+ \ifx Q#1Q\fi
+ \ifx R#1R\fi
+ \ifx S#1S\fi
+ \ifx T#1T\fi
+ \ifx U#1U\fi
+ \ifx V#1V\fi
+ \ifx W#1W\fi
+ \ifx X#1X\fi
+ \ifx Y#1Y\fi
+ \ifx Z#1Z\fi
+ }%
+
+\def\spendchar@ba#1{\ifcat#1A\spendletter@ba{#1}\else\spendother@ba{#1}\fi}
+
+\def\insvarstring@ba{%
+ \ifx \bavar@xA\@leer \else
+ \spendchar@ba \bavar@xA
+ \ifx \bavar@xB\@leer \else
+ \spendchar@ba \bavar@xB
+ \ifx \bavar@xC\@leer \else
+ \spendchar@ba \bavar@xC
+ \ifx \bavar@xD\@leer \else
+ \spendchar@ba \bavar@xD
+ \ifx \bavar@xE\@leer \else
+ \spendchar@ba \bavar@xE
+ \ifx \bavar@xF\@leer \else
+ \spendchar@ba \bavar@xF
+ \ifx \bavar@xG\@leer \else
+ \spendchar@ba \bavar@xG
+ \ifx \bavar@xH\@leer \else
+ \spendchar@ba \bavar@xH
+ \ifx \bavar@xI\@leer \else
+ \spendchar@ba \bavar@xI
+ \ifx \bavar@xJ\@leer \else
+ \spendchar@ba \bavar@xJ
+ \ifx \bavar@xK\@leer \else
+ \spendchar@ba \bavar@xK
+ \ifx \bavar@xL\@leer \else
+ \spendchar@ba \bavar@xL
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ .%
+ \ifx \bavar@yA\@leer \else
+ \spendchar@ba \bavar@yA
+ \ifx \bavar@yB\@leer \else
+ \spendchar@ba \bavar@yB
+ \ifx \bavar@yC\@leer \else
+ \spendchar@ba \bavar@yC
+ \ifx \bavar@yD\@leer \else
+ \spendchar@ba \bavar@yD
+ \ifx \bavar@yE\@leer \else
+ \spendchar@ba \bavar@yE
+ \ifx \bavar@yF\@leer \else
+ \spendchar@ba \bavar@yF
+ \ifx \bavar@yG\@leer \else
+ \spendchar@ba \bavar@yG
+ \ifx \bavar@yH\@leer \else
+ \spendchar@ba \bavar@yH
+ \ifx \bavar@yI\@leer \else
+ \spendchar@ba \bavar@yI
+ \ifx \bavar@yJ\@leer \else
+ \spendchar@ba \bavar@yJ
+ \ifx \bavar@yK\@leer \else
+ \spendchar@ba \bavar@yK
+ \ifx \bavar@yL\@leer \else
+ \spendchar@ba \bavar@yL
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ .%
+ \ifx \bavar@zA\@leer \else
+ \spendchar@ba \bavar@zA
+ \ifx \bavar@zB\@leer \else
+ \spendchar@ba \bavar@zB
+ \ifx \bavar@zC\@leer \else
+ \spendchar@ba \bavar@zC
+ \ifx \bavar@zD\@leer \else
+ \spendchar@ba \bavar@zD
+ \ifx \bavar@zE\@leer \else
+ \spendchar@ba \bavar@zE
+ \ifx \bavar@zF\@leer \else
+ \spendchar@ba \bavar@zF
+ \ifx \bavar@zG\@leer \else
+ \spendchar@ba \bavar@zG
+ \ifx \bavar@zH\@leer \else
+ \spendchar@ba \bavar@zH
+ \ifx \bavar@zI\@leer \else
+ \spendchar@ba \bavar@zI
+ \ifx \bavar@zJ\@leer \else
+ \spendchar@ba \bavar@zJ
+ \ifx \bavar@zK\@leer \else
+ \spendchar@ba \bavar@zK
+ \ifx \bavar@zL\@leer \else
+ \spendchar@ba \bavar@zL
+ \ifx \bavar@zM\@leer \else
+ \spendchar@ba \bavar@zM
+ \ifx \bavar@zN\@leer \else
+ \spendchar@ba \bavar@zN
+ \ifx \bavar@zO\@leer \else
+ \spendchar@ba \bavar@zO
+ \ifx \bavar@zP\@leer \else
+ \spendchar@ba \bavar@zP
+ \ifx \bavar@zQ\@leer \else
+ \spendchar@ba \bavar@zQ
+ \ifx \bavar@zR\@leer \else
+ \spendchar@ba \bavar@zR
+ \ifx \bavar@zS\@leer \else
+ \spendchar@ba \bavar@zS
+ \ifx \bavar@zT\@leer \else
+ \spendchar@ba \bavar@zT
+ \ifx \bavar@zU\@leer \else
+ \spendchar@ba \bavar@zU
+ \ifx \bavar@zV\@leer \else
+ \spendchar@ba \bavar@zV
+ \ifx \bavar@zW\@leer \else
+ \spendchar@ba \bavar@zW
+ \ifx \bavar@zX\@leer \else
+ \spendchar@ba \bavar@zX
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ }
+
+
+%%
+
+
+ %% ... %%
+
+
+\def\ncn@ersch#1{{\csname #1erschnohousename\endcsname}}
+\def\nyn@ersch#1{{\csname #1erschnoyearname\endcsname}}
+
+{\catcode\grave@ba\>=12%
+\gdef\@@ersch#1|#2|[#3]#4#5{\nulskip@ba
+ {\def\@testa{#2}%
+ \ifx\@testa\@leer \else
+ \ifx\@testa\@leerz\else
+ {\ignorespaces #2}\kern -0.1em\penalty\@m \
+ \ifnum#2>1{\csname #1erschvolumepname\endcsname}\else
+ {\csname #1erschvolumename\endcsname}\fi \penalty-\@m \
+ \fi\fi}%
+ \nulskip@ba{\def\@testa{#3}\def\@testb{#4}%
+ \if@bamathaufl
+ \ifx\@testb\@leer \ncn@ersch{#1}\ \else
+ \ifx\@testb\@leerz\ncn@ersch{#1}\ \else
+ {\ignorespaces #4\ba@textmode}\
+ \fi\fi
+ \ifx\@testa\@leer \else \ifx\@testa\@leerz \else
+ \kern -0.4pt\fup{#3}\kern 0.4pt\nulskip@ba
+ \fi\fi
+ \else
+ \ifx\@testa\@leer \else \ifx\@testa\@leerz \else
+ {\csname #1ordinal\endcsname{#3\ba@textmode}}%
+ {\setbox\testbox@ba=\hbox{\ignorespaces\csname #1erscheditionname\endcsname}%
+ \ifdim\ht\testbox@ba=0pt\else{\unhbox\testbox@ba}\fi}\
+ \fi\fi
+ \ifx\@testb\@leer \ncn@ersch{#1}\ \else
+ \ifx\@testb\@leerz\ncn@ersch{#1}\ \else
+ {\ignorespaces #4\ba@textmode}\
+ \fi\fi
+ \fi}%
+ {\def\@testa{#5}%
+ \ifx\@testa\@leer \nyn@ersch{#1}\else
+ \ifx\@testa\@leerz\nyn@ersch{#1}\else
+ {\ignorespaces #5\ba@textmode}%
+ \fi\fi}}%
+}
+\def\@ersch#1|#2|{\@ifnextchar[{\@@ersch{#1}|#2|}{\@@ersch{#1}|#2|[]}}
+\def\persch#1{\leavevmode\ba@textmode\@ifnextchar|{\@ersch{#1}}{\@ersch{#1}||}}
+\def\ersch{\protect\persch{\langcap@ba}}
+
+\def\peordinal#1{{\errorcontextlines=-1\leavevmode \count@ba #1\relax
+ \ifnum\count@ba\string<0 \count@ba -\count@ba\fi
+ \loop \ifnum\count@ba\string>999 \advance\count@ba -1000\repeat
+ \loop \ifnum\count@ba\string>99 \advance\count@ba -100\repeat
+ \loop \ifnum\count@ba\string>29 \advance\count@ba -10\repeat
+ \ifnum\count@ba\string>19 \advance\count@ba -20\fi
+ {\ignorespaces #1}\kern 0.8pt%
+ \fup{\ifcase\number\count@ba th\or
+ \kern -1.4pt st\or nd\or rd\or \kern -0.7pt th\or th\or th\or th\or th\or th\or th\or %% 1-10
+ \kern -1.4pt th\or th\or th\or \kern -0.7pt th\else th\fi \kern 0.2pt}\nulskip@ba}} %% 11-14
+\def\eordinal{\protect\peordinal}
+
+
+\def\pfordinal#1#2{{\errorcontextlines=-1\leavevmode \count@ba #2\relax
+ \ifnum\count@ba\string<0 \count@ba -\count@ba\fi
+ \loop \ifnum\count@ba\string>1019 \advance\count@ba -1000\repeat
+ \loop \ifnum\count@ba\string>119 \advance\count@ba -100\repeat
+ \loop \ifnum\count@ba\string>19 \advance\count@ba -10\repeat
+ {\ignorespaces #2}\kern 0.8pt%
+ \fup{\ifcase\number\count@ba e\or
+ \kern -1.4pt{#1}\kern 0.2pt \or e\or \kern -0.3pt e\or \kern -0.7pt e\or \kern -0.3pt e\or e\or e\or e\or e\or e\or %% 1-10
+ \kern -1.4pt e\or e\or \kern -0.3pt e\or \kern -0.7pt e\or \kern -0.3pt e\else e\fi}\nulskip@ba}} %% 11-14
+\def\fordinalf{\protect\pfordinal{re}}
+\def\fordinalm{\protect\pfordinal{er}}
+\let\fordinal=\fordinalf %\let\fordinal=\fordinalm
+
+\def\pgordinal#1{{\ignorespaces #1.}\nulskip@ba}
+\def\gordinal{\protect\pgordinal}
+
+\expandafter\ifx\csname pteskip\endcsname\relax
+ \def\pteskip{\nobreak \hskip 0.2em plus 0.1em minus 0.05em}%
+\fi
+ \def\teskip{\protect\pteskip}
+
+\expandafter\ifx\csname pfupskip\endcsname\relax
+ \def\pfupskip{\nobreak \hskip 0.2em plus 0.1em minus 0.05em}%
+\fi
+ \def\fupskip{\protect\pfupskip}
+
+
+%%
+
+
+\def\next@hy{}
+\def\test@hy{}
+\def\txen@hy{}
+
+\def\Atest@hy{A@}
+
+\def\acckorr@hy#1{%
+ \def\test@hy{#1}%
+ \ifx#1A\kern -0.06em\fi \ifx\test@hy\Atest@hy\kern -0.06em\fi
+ \ifx#1V\kern -0.1em\fi
+ \ifx#1W\kern -0.1em\fi
+ \ifx#1T\kern -0.1em\fi
+ \ifx#1v\kern -0.04em\fi
+ \ifx#1w\kern -0.04em\fi
+ \ifx#1X\kern -0.06em\fi
+ \ifx#1Y\kern -0.12em\fi
+ \ifx#1y\kern -0.04em\fi
+ \ifx#1x\kern -0.04em\fi
+ \txen@hy{#1}}
+
+\def\accentnum@hy#1 #2{%
+ \ifx#2A\kern -0.06em\fi
+ \ifx#2V\kern -0.1em\fi
+ \ifx#2W\kern -0.1em\fi
+ \ifx#2T\kern -0.1em\fi
+ \ifx#2v\kern -0.04em\fi
+ \ifx#2w\kern -0.04em\fi
+ \ifx#2X\kern -0.06em\fi
+ \ifx#2Y\kern -0.12em\fi
+ \ifx#2y\kern -0.04em\fi
+ \ifx#2x\kern -0.04em\fi
+ \accent #1 #2}
+
+\def\aktacckorr@hy#1{\ifx#1\dq@prtct \else
+ \message{[ HYKO: Get unexpected \string#1 ] }\fi
+ \acckorr@hy}
+
+\def\getarg@hy{\afterassignment\nextarg@hy\let\txen@hy= }
+
+\def\nextarg@hy{\bgroup
+ \ifx\txen@hy\accent
+ \expandafter\accentnum@hy\else
+ \expandafter\txen@hy\fi}
+
+\def\gonext@hy{\let\txen@hy=\next@hy \let\next@hy=\acckorr@hy}
+\def\goact@hy{\let\txen@hy=\next@hy \let\next@hy=\aktacckorr@hy}
+
+{\catcode\grave@ba\"=13%
+ \catcode\grave@ba\`=12%
+ \catcode\grave@ba\'=12%
+\gdef\hykorr@hy{%
+ \if@hyko
+ \ifx\next@hy A\kern -0.06em\fi
+ \ifx\next@hy V\kern -0.1em\fi
+ \ifx\next@hy W\kern -0.1em\fi
+ \ifx\next@hy T\kern -0.1em\fi
+ \ifx\next@hy v\kern -0.04em\fi
+ \ifx\next@hy w\kern -0.04em\fi
+ \ifx\next@hy X\kern -0.06em\fi
+ \ifx\next@hy Y\kern -0.12em\fi
+ \ifx\next@hy y\kern -0.04em\fi
+ \ifx\next@hy x\kern -0.04em\fi
+ \ifx\next@hy "\gonext@hy\fi
+ \ifx\next@hy \newumlaut\gonext@hy\fi
+ \ifx\next@hy \active@dq\goact@hy \fi
+ \ifx\next@hy \bgroup \let\next@hy=\getarg@hy\fi
+ \ifx\next@hy \accent\let\next@hy=\accentnum@hy\fi
+ \ifx\next@hy \"\gonext@hy\fi
+ \ifx\next@hy \.\gonext@hy\fi
+ \ifx\next@hy \=\gonext@hy\fi
+ \ifx\next@hy \^\gonext@hy\fi
+ \ifx\next@hy \'\gonext@hy\fi
+ \ifx\next@hy \`\gonext@hy\fi
+ \ifx\next@hy \~\gonext@hy\fi
+ \ifx\next@hy \b\gonext@hy\fi \ifx\next@hy \pb\gonext@hy\fi
+ \ifx\next@hy \c\gonext@hy\fi \ifx\next@hy \pc\gonext@hy\fi
+ \ifx\next@hy \d\gonext@hy\fi \ifx\next@hy \pd\gonext@hy\fi
+ \ifx\next@hy \H\gonext@hy\fi
+ \ifx\next@hy \k\gonext@hy\fi
+ \ifx\next@hy \r\gonext@hy\fi
+ \ifx\next@hy \u\gonext@hy\fi
+ \ifx\next@hy \v\gonext@hy\fi
+ \ifx\next@hy `\kern 0.04em\fi
+ \ifx\next@hy '\kern 0.04em\fi
+ \ifx\next@hy \glq\kern 0.04em\fi \ifx\next@hy \@glq\kern 0.04em\fi
+ \ifx\next@hy ]\kern -0.04em\fi
+ \ifx\next@hy )\kern -0.04em\fi
+ \ifx\next@hy \}\kern -0.05em\fi \ifx\next@hy \@rb\kern -0.05em\fi
+ \fi
+ \nulskip@ba\next@hy}%
+}
+
+\def\after@hy{\afterassignment\hykorr@hy\let\next@hy= }
+
+\newif\if@hyko\@hykotrue
+
+\def\phyko{\@hykotrue}%
+\def\hyko{\protect\phyko}%
+
+\def\pnothyko{\@hykofalse}%
+\def\nothyko{\protect\pnothyko}%
+
+\def\phy{\leavevmode\nulskip@ba\ifmmode\hbox{-}\else\discretionary{-}{}{-}\fi\after@hy}
+%\def\phy{\leavevmode\nulskip@ba\ifmmode\hbox{-}\else\discretionary{-}{}{-}\fi\nulskip@ba}
+\def\pfhy{\leavevmode\nulskip@ba\hbox{-}\after@hy}
+%\def\pfhy{\leavevmode\nulskip@ba\hbox{-}\nulskip@ba}
+
+\def\hy{\protect\phy}
+\def\fhy{\protect\pfhy}
+
+
+%%
+
+
+\def\te{.\protect\pteskip}
+
+\def\pko{\ifhmode\nobreak\hskip -0.07em plus 0em\fi}
+\def\ko{\protect\pko}
+
+
+\expandafter\ifx\csname omicron\endcsname\relax\def\omicron{o}\fi
+
+\def\pbasimgl{\normalfont} %{\normalfont\rule[.3ex]{.02em}{.5ex}\kern-.02em}
+\def\basimgreeklatin{\protect\pbasimgl}
+\expandafter\ifx\csname Alpha\endcsname\relax\def\Alpha{\mbox{\basimgreeklatin A}}\fi
+\expandafter\ifx\csname Beta\endcsname\relax\def\Beta{\mbox{\basimgreeklatin B}}\fi
+\expandafter\ifx\csname Epsilon\endcsname\relax\def\Epsilon{\mbox{\basimgreeklatin E}}\fi
+\expandafter\ifx\csname Zeta\endcsname\relax\def\Zeta{\mbox{\basimgreeklatin Z}}\fi
+\expandafter\ifx\csname Eta\endcsname\relax\def\Eta{\mbox{\basimgreeklatin H}}\fi
+\expandafter\ifx\csname Iota\endcsname\relax\def\Iota{\mbox{\basimgreeklatin I}}\fi
+\expandafter\ifx\csname Kappa\endcsname\relax\def\Kappa{\mbox{\basimgreeklatin K}}\fi
+\expandafter\ifx\csname Mu\endcsname\relax\def\Mu{\mbox{\basimgreeklatin M}}\fi
+\expandafter\ifx\csname Nu\endcsname\relax\def\Nu{\mbox{\basimgreeklatin N}}\fi
+\expandafter\ifx\csname Omicron\endcsname\relax\def\Omicron{\mbox{\basimgreeklatin O}}\fi
+\expandafter\ifx\csname Rho\endcsname\relax\def\Rho{\mbox{\basimgreeklatin P}}\fi
+\expandafter\ifx\csname Tau\endcsname\relax\def\Tau{\mbox{\basimgreeklatin T}}\fi
+\expandafter\ifx\csname Chi\endcsname\relax\def\Chi{\mbox{\basimgreeklatin X}}\fi
+
+
+%%
+
+
+ %% German word division %%
+
+
+%% A very old replacement for \ss, IF no sharp S exists, e.g. in \scshape: %%
+\expandafter\ifx\csname sz\endcsname\relax
+\def\sz{{sz}}%
+\else
+\typeout{\string\sz-command used. I do not redefine.}%
+\fi
+
+\expandafter\ifx\csname SZ\endcsname\relax
+\def\SZ{{SZ}}%
+\else
+\typeout{\string\SZ-command used. I do not redefine.}%
+\fi
+
+%%
+
+%% A sharp S which ALWAYS splits s-s (to be used between vovels, e.g. %%
+%% au\oldhyss er). Use YOUR sharp S at OTHER positions (e.g. da\ss): %%
+\def\oldhyss{\penalty\@M\discretionary{s-}{s}{\ss}\protect\nulskip@ba}
+\def\OLDHYSS{\penalty\@M\discretionary{S-}{S}{\SS}\protect\nulskip@ba}
+
+
+{\catcode\grave@ba\>=12%
+\gdef\@newhyss#1{{%
+ \def\@testa{#1}%
+ \def\@testb{\SS}%
+ \ifx\@testa\@testb
+ {\OLDHYSS}%
+ \else
+ \setbox\testbox@ba=\hbox{#1}%
+ \ifdim\ht\testbox@ba>1.4ex
+ {\ss}% %% split as def in \language %%
+ \else
+ {\oldhyss}% %% INVISIBLE in \showhyphens %%
+ \fi
+ \fi}}%
+}
+
+%% A sharp S which splits s-s ONLY in small caps; ELSE %%
+%% as \language says (-\ss ?). For use between vovels: %%
+\def\newhyss{\protect\@newhyss{\ss}}
+\def\NEWHYSS{\protect\@newhyss{\SS}}
+
+
+%% In Old German (=Old Austrian ?) hyphenation, %%
+%% \hyss splits as \oldhyss; ELSE as \newhyss: %%
+\def\hyss{\expandafter\ifx\csname l@german\endcsname\relax \newhyss\else \ifnum\language=\l@german\oldhyss\else\newhyss\fi \fi}
+\def\HYSS{\expandafter\ifx\csname l@german\endcsname\relax \NEWHYSS\else \ifnum\language=\l@german\OLDHYSS\else\NEWHYSS\fi \fi}
+
+%%
+
+\def\hycons@ba#1#2{\penalty\@M\discretionary{#1-}{}{#2}\protect\nulskip@ba}
+\def\HYCONS@BA#1#2{\penalty\@M\discretionary{#1-}{}{#2}\protect\nulskip@ba}
+
+\def\hyvari@ba#1#2{\expandafter\ifx\csname l@german\endcsname\relax {#1}\else \ifnum\language=\l@german \csname oldhy#2\endcsname \else {#1}\fi \fi}
+\def\HYVARI@BA#1#2{\expandafter\ifx\csname l@german\endcsname\relax {#1}\else \ifnum\language=\l@german \csname OLDHY#2\endcsname \else {#1}\fi \fi}
+
+
+%% "Inside-c before k": %%
+\def\oldhyc{\hycons@ba{k}{c}} %% always old: Dru\oldhyc ker
+\def\OLDHYC{\HYCONS@BA{K}{C}}
+ \def\hyc{\hyvari@ba{c}{c}} %% spells new in ngerman, naustrian
+ \def\HYC{\HYVARI@BA{C}{C}}
+
+
+%% "Triple consonant before a vovel": %%
+\def\oldhyl{\hycons@ba{ll}{l}} %% always old: Scha\oldhyl leistung
+\def\OLDHYL{\HYCONS@BA{LL}{L}}
+ \def\hyl{\hyvari@ba{ll}{l}} %% spells new in ngerman, naustrian
+ \def\HYL{\HYVARI@BA{LL}{L}}
+
+\def\oldhym{\hycons@ba{mm}{m}} %% Sta\oldhym mutter
+\def\OLDHYM{\HYCONS@BA{MM}{M}}
+ \def\hym{\hyvari@ba{mm}{m}}
+ \def\HYM{\HYVARI@BA{MM}{M}}
+
+\def\oldhyn{\hycons@ba{nn}{n}} %% Ke\oldhyn nummer
+\def\OLDHYN{\HYCONS@BA{NN}{N}}
+ \def\hyn{\hyvari@ba{nn}{n}}
+ \def\HYN{\HYVARI@BA{NN}{N}}
+
+\def\oldhyp{\hycons@ba{pp}{p}} %% Ste\oldhyp pullover
+\def\OLDHYP{\HYCONS@BA{PP}{P}}
+ \def\hyp{\hyvari@ba{pp}{p}}
+ \def\HYP{\HYVARI@BA{PP}{P}}
+
+\def\oldhyr{\hycons@ba{rr}{r}} %% Sta\oldhyr rahmen
+\def\OLDHYR{\HYCONS@BA{RR}{R}}
+ \def\hyr{\hyvari@ba{rr}{r}}
+ \def\HYR{\HYVARI@BA{RR}{R}}
+
+\def\oldhyt{\hycons@ba{tt}{t}} %% Schri\oldhyt tempo
+\def\OLDHYT{\HYCONS@BA{TT}{T}}
+ \def\hyt{\hyvari@ba{tt}{t}}
+ \def\HYT{\HYVARI@BA{TT}{T}}
+
+\def\oldhyf{\hycons@ba{ff}{f}} %% Sto\oldhyf figur
+\def\OLDHYF{\HYCONS@BA{FF}{F}}
+ \def\hyf{\hyvari@ba{ff}{f}}
+ \def\HYF{\HYVARI@BA{FF}{F}}
+
+
+%%
+
+
+%% Dummy for systems with parameter stack size=60 %%
+\expandafter\ifx\csname footnotetext\endcsname\relax
+\else
+{\setbox\testbox@ba=\hbox{\footnotetext{\printonlyvli{}{}{}}}}\clearmem@ba
+\fi
+
+
+\def\escb@ba{\ifvmode\leavevmode\lower -1ex\hbox{\strut}\else\nulskip@ba\fi}
+
+\def\babbrack#1{\escb@ba{\upshape
+ \lower 0.25ex\hbox{\tiny [}\hbox{#1}%
+ \lower 0.25ex\hbox{\tiny ]}\kern 0.02em{}}}
+
+\def\bambrack#1{\iflasthasdot@ba{}{\@baupcorr}\escb@ba{\upshape
+ \lower -0.5ex\hbox{\lower 1.5pt\hbox{\tiny [}}\hbox{#1}%
+ \lower -0.5ex\hbox{\lower 1.5pt\hbox{\tiny ]}}\kern 0.02em{}}}
+
+\def\batbrack#1{\iflasthasdot@ba{}{\@baupcorr}\escb@ba{\upshape
+ \lower -1.4ex\hbox{\lower 3pt\hbox{\tiny [}}\hbox{#1}%
+ \lower -1.4ex\hbox{\lower 3pt\hbox{\tiny ]}}}{\@baendcorr}\kern 0.02em{}}
+
+
+{\catcode\grave@ba\"=12%
+ \expandafter\ifx\csname dq\endcsname\relax
+ \gdef\dq{"}% %% compatibility to 2.0 %%
+ \fi
+ \gdef\dq@bapas{\dq}}
+
+{\catcode\grave@ba\"=13%
+ \catcode\grave@ba\'=12%
+ \catcode\grave@ba\`=12%
+ \gdef\rqq@baakt{"'}%
+ \gdef\lqq@baakt{"`}%
+ \catcode\grave@ba\'=13%
+ \catcode\grave@ba\`=13%
+ \gdef\rqq@baaaa{"'}%
+ \gdef\lqq@baaaa{"`}}
+
+{\catcode\grave@ba\'=12%
+ \gdef\c@bapas{'}%
+ \gdef\cc@bapas{''}%
+ \gdef\cp@bapas{\active@dq\dq@prtct{'}}}
+{\catcode\grave@ba\'=13%
+ \gdef\c@baakt{'}%
+ \gdef\cc@baakt{''}%
+ \gdef\cp@baakt{\active@dq\dq@prtct{'}}}
+
+{\catcode\grave@ba\`=12%
+ \gdef\o@bapas{`}%
+ \gdef\oo@bapas{``}%
+ \gdef\op@bapas{\active@dq\dq@prtct{`}}}
+{\catcode\grave@ba\`=13%
+ \gdef\o@baakt{`}
+ \gdef\oo@baakt{``}%
+ \gdef\op@baakt{\active@dq\dq@prtct{`}}}
+
+\def\@abra#1{{\errorcontextlines=-1%
+ \def\@testa{#1}%
+ \def\testk{,}%
+ \def\testp{.}%
+ \def\testm{$-$}%
+ \def\testh{-}%
+ \def\testH{--}%
+ \def\testL{---}%
+ \def\testl{\glq}%
+ \def\teatl{\@glq}% %% commands in old versions of german.sty
+ \def\testr{\grq}%
+ \def\teatr{\@grq}% %%
+ \def\testO{\glqq}%
+ \def\teatO{\@glqq}% %%
+ \def\testC{\grqq}%
+ \def\teatC{\@grqq}% %%
+ \def\testd{...}%
+ \def\testD{\dots}%
+ \ifx\@testa\oo@bapas \oo@abra{\oo@bapas}\else
+ \ifx\@testa\oo@baakt \oo@abra{\oo@baakt}\else
+ \ifx\@testa\cc@bapas \cc@abra{\cc@bapas}\else
+ \ifx\@testa\cc@baakt \cc@abra{\cc@baakt}\else
+ \ifx\@testa\cp@bapas\rqq@abra{\cp@bapas}\else
+ \ifx\@testa\cp@baakt\rqq@abra{\cp@baakt}\else
+ \ifx\@testa\op@bapas\lqq@abra{\op@bapas}\else
+ \ifx\@testa\op@baakt\lqq@abra{\op@baakt}\else
+ \ifx\@testa\o@bapas \o@abra{\o@bapas}\else
+ \ifx\@testa\o@baakt \o@abra{\o@baakt}\else
+ \ifx\@testa\c@bapas \c@abra{\c@bapas}\else
+ \ifx\@testa\c@baakt \c@abra{\c@baakt}\else
+ \ifx\@testa\testk \babbrack{\kern -0.02em{\testk}\kern -0.02em}\else
+ \ifx\@testa\testp \babbrack{\kern -0.02em{\testp}\kern -0.02em}\else
+ \ifx\@testa\testm \bambrack{\kern -0.03em{\testm}\kern -0.035em}\else
+ \ifx\@testa\testh \bambrack{\kern -0.01em{\testh}\kern -0.05em}\else
+ \ifx\@testa\testH \bambrack{\kern 0.03em{\testH}\kern 0.03em}\else
+ \ifx\@testa\testL \bambrack{\kern 0.03em{\testL}\kern 0.03em}\else
+ \ifx\@testa\testl \lq@abra{\testl}\else
+ \ifx\@testa\teatl \lq@abra{\teatl}\else
+ \ifx\@testa\testr \rq@abra{\testr}\else
+ \ifx\@testa\teatr \rq@abra{\teatr}\else
+ \ifx\@testa\testO \lqq@abra{\testO}\else
+ \ifx\@testa\teatO \lqq@abra{\teatO}\else
+ \ifx\@testa\testC \rqq@abra{\testC}\else
+ \ifx\@testa\teatC \rqq@abra{\teatC}\else
+ \ifx\@testa\lqq@baakt\lqq@abra{\lqq@baakt}\else
+ \ifx\@testa\lqq@baaaa\lqq@abra{\lqq@baaaa}\else
+ \ifx\@testa\rqq@baakt\rqq@abra{\rqq@baakt}\else
+ \ifx\@testa\rqq@baaaa\rqq@abra{\rqq@baaaa}\else
+ \ifx\@testa\dq \dq@abra{\dq}\else
+ \ifx\@testa\dq@bapas \dq@abra{\dq@bapas}\else
+ \ifx\@testa\testd \babbrack{\kern -0.01em{\testd}\kern -0.03em}\else
+ \ifx\@testa\testD \babbrack{\kern 0.12em{\testD}\kern -0.08em}\else
+ \iflasthasdot@ba{}{\@baupcorr}\ifhmode\nulskip@ba\fi{\upshape [{#1}]}\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
+ }}
+
+ \def\oo@abra#1{\batbrack{\if@batone{\kern 0.04em{#1}\kern -0.06em}{\kern -0.11em{#1}}}}
+ \def\cc@abra#1{\batbrack{\if@batone{\kern 0.03em{#1}\kern -0.05em}{\kern 0.01em{#1}\kern -0.12em}}}
+ \def\o@abra#1{\batbrack{\kern -0.02em{#1}\kern -0.02em}}
+ \def\lq@abra#1{\babbrack{\if@batone{\kern -0.02em{#1}\kern -0.1034em}{\kern -0.02em{#1}\kern 0.02em}}}
+ \def\c@abra#1{\batbrack{\kern -0.02em{#1}\kern -0.02em}}
+\def\lqq@abra#1{\babbrack{\if@batone{\kern 0.03em{#1}\kern -0.05em}{\kern 0.01em{#1}\kern -0.08em}}}
+\def\rqq@abra#1{\batbrack{\if@batone{\kern 0.04em{#1}\kern -0.06em}{\kern -0.04em{#1}\kern -0.07em}}}
+ \def\dq@abra#1{\batbrack{\if@batone{\kern -0.043em{#1}\kern -0.06em}{\kern 0.01em{#1}\kern -0.12em}}}
+ \def\rq@abra#1{\batbrack{\if@batone{\kern -0.02em{#1}\kern -0.02em}{\kern -0.01em{#1}\kern -0.0875em}}}
+
+\def\pabra#1{\@abra{#1}{\hskip 0pt plus 0pt}}
+\def\abra{\protect\pabra}
+
+\def\pfabra#1{\@abra{#1}{\nulskip@ba}}
+\def\fabra{\protect\pfabra}
+
+
+\def\pbaromannum#1{{\romannumeral #1}}
+\def\baromannum{\protect\pbaromannum}
+
+\def\pbaRomannum#1{\uppercase\expandafter{\romannumeral #1}}
+\def\baRomannum{\protect\pbaRomannum}
+
+
+%%
+
+
+ %% Layout %%
+
+
+\def\bakorr@fnr{} %%{originalquote}%%
+\let\fnrbasave=\footnoterule
+\def\footnoterule{\bakorr@fnr\vfill\fnrbasave}
+%% \vfill INSTEAD OF \flushbottom %%
+
+%\footnotesep=2ex
+
+\def\bibsortargs{unknown (no BibArts list printed yet)}
+
+\def\@baposvskip{\vskip \baselineskip \vskip \lineskip}
+\def\@banegvskip{\vskip -\baselineskip \vskip -\lineskip}
+\newif\if@bibsortspace\@bibsortspacefalse
+\newif\if@bibsorthead\@bibsortheadfalse
+\def\do@bibsortspace{\@baposvskip\pagebreak[3]}
+\def\do@twocolumnbsh#1{\@baposvskip\pagebreak[3]%
+ \item{}\rule{5pt}{0pt}\nopagebreak
+ \@baposvskip\rule{5pt}{0pt}\pagebreak[3]%
+ \item{}\@banegvskip\@banegvskip\@banegvskip
+ {\@baheademph{#1}}\nopagebreak
+ }
+\def\do@onecolumnbsh#1{%
+ \nopagebreak\@baposvskip\@baposvskip\pagebreak[3]\@banegvskip\item{}{\@baheademph{#1}}\nopagebreak
+ }
+\def\do@nobibsortspace{}
+\def\do@nobibsorthead#1{}
+\def\@baheademph{\normalfont\large\bfseries\sffamily}
+
+\let\bibsortpreparespace\do@nobibsortspace
+\let\bibsortpreparexspace\do@nobibsortspace
+\let\bibsortpreparehead\do@nobibsorthead
+
+\def\bibsortspaces{\protect\@bibsortspacetrue\protect\@bibsortheadfalse}
+\def\notbibsortspaces{\protect\@bibsortspacefalse\protect\@bibsortheadfalse}
+\def\bibsortheads{\protect\@bibsortspacefalse\protect\@bibsortheadtrue}
+\def\notbibsortheads{\protect\@bibsortspacefalse\protect\@bibsortheadfalse}
+
+\def\pbafootnoteframe#1{/#1/}
+\def\bafootnoteframe{\protect\pbafootnoteframe}
+\def\pbapageframe#1{/#1/}
+\def\bapageframe{\protect\pbapageframe}
+
+
+
+ %% Compatibility to BibArts 3.1 %%
+
+\def\bib{\arq{}}
+\def\printonlybib{\printonlyarq{}}
+\def\addtobib{\addtoarq{}}
+\newif\if@oldba\@oldbafalse
+\def\makebar{\typeout@ba{ \space ***** \space That is obviously a file based on BibArts 1.x \space *****
+ ^^J \space ***** \space BibArts 2.2 starts compatibility mode for 1.3 \space *****}%
+ \def\bibarts{\BibArts}%
+ \def\schrift{}%
+ \def\barschrift{}%
+ \def\indschrift{}%
+ \newif\ifbibarts\bibartsfalse
+ \newif\iffootnote\footnotefalse
+ \def\Kapitell##1{}%
+ \def\@Kapitell##1##2{}%
+ \def\printind{\ba@textmode\type@bawarn{I use arq-list for 1.3 cmd \string\printind}%
+ \Check@tcbalist{\@batwocoldefs}{\bibsortheads
+ \def\arqlistemph{}\def\balistnumemph{}%
+ \def\earqtitlename{Index}\def\farqtitlename{Index}%
+ \def\garqtitlename{Index}\small}{num}{arq}{subsection}}%
+ \@oldbatrue}
+\def\printind{\errhelp{Forget so set \makebar to switch to BibArts 1.3 compatibility mode?}%
+ \@qqertypeout{printind}{Expiring cmd.}\errmessage@ba{\string\printind\space without \string\makebar}}
+
+\def\pstressing#1{\@bsphack\def\authoremph{\upshape\csname #1\endcsname}\@esphack}
+ \def\stressing{\protect\pstressing}
+
+\def\gbibmarkname{im Folgenden: }
+\def\fbibmarkname{par la suite: }
+\def\ebibmarkname{cited as: }
+\def\pbibref#1{{#1} {\ba@varstringtrue\ba@varref{}{BIB}{#1}}}
+ \def\bibref{\protect\pbibref}
+\def\pxbibref#1#2{{#2} {\ba@varstringtrue\ba@varref{}{XBIB}{#1}}}
+ \def\xbibref#1#2{\protect\pxbibref{#2}{#1}}
+\def\pbibmark#1{{\cap@ba{bibmark}}{#1}{\ba@varstringtrue\ba@varlabel{}{BIB}{#1}}}
+ \def\bibmark{\protect\pbibmark}
+\def\pxbibmark#1#2{{\cap@ba{bibmark}}{#1}{\ba@varstringtrue\ba@varlabel{}{XBIB}{#2}}}
+ \def\xbibmark{\protect\pxbibmark}
+
+
+\message{Load BibArts\string: End.}
+
+\endinput
diff --git a/macros/latex/contrib/bibarts/bibarts.tex b/macros/latex/contrib/bibarts/bibarts.tex
new file mode 100644
index 0000000000..b9aa2a1e31
--- /dev/null
+++ b/macros/latex/contrib/bibarts/bibarts.tex
@@ -0,0 +1,6267 @@
+ \documentclass[12pt,a4paper]{article}
+ \usepackage{bibarts} %% Reihenfolge ist gleichgueltig.
+ \usepackage{ngerman}
+ %%\usepackage{german}
+ %%\usepackage[germanb]{babel}
+ %%\usepackage[ngermanb]{babel}
+\setlength{\footnotesep}{2ex} %% ... wie in bibarts.sty 2.0; siehe README.txt %%
+ %\usepackage[cp850]{inputenc} %%\usepackage[utf8]{inputenc} %% entsprechende Zeichen sind nicht in bibarts.tex %%
+ \usepackage[T1]{fontenc} %% Automatische Trennung von Worten mit Umlauten. %%
+
+
+
+%%\documentstyle[12pt,german,a4,bibarts]{article}
+ %\notnegcorrdefabk %% LaTeX 2.09 %%
+
+
+
+ \title{\sffamily Das \LaTeX-Paket \BibArts}
+
+ \author{\textsc{Timo Baumann}}
+
+ \date{\small Version 2.2, \copyright~2019.
+ \hspace{.5em}\textbf{Inhalt S.\,\pageref{SectIn}}.}
+
+
+
+\hyphenation{Stern-ar-gu-ment
+Vor-namens-argu-ment
+Voll-ein-trag
+Satz-ende
+Nach-kom-ma-stel-len
+De-zi-mal-zah-len-er-ken-nung
+Auf-marsch-an-wei-sun-gen
+Na-mens-ar-gu-men-te
+Nach-na-mens-ar-gu-men-ten
+Sprach-ein-stel-lung
+Stern-ar-gu-men-te
+Text-edi-tor
+under-sco-res
+Zei-len-um-bruch
+Zei-len-um-br"u-che
+}
+
+ \newcommand{\pdfko}[1]{\kern #1pt
+ \rule[-0.4ex]{0.8pt}{0ex}\kern -0.8pt
+ \strut\ignorespaces}%
+ %\newcommand{\pdfko}[1]{\strut\ignorespaces}% Falls NICHT mit pdflatex uebersetzt wird
+
+ \newcommand{\pbs}{\string\ \unskip}
+ \newcommand{\bs}{\protect\pbs}
+
+
+\long\def\Doppelbox#1#2{\nopagebreak\vspace{2.25ex}%
+ {\fbox{\parbox{.45\textwidth}{\raggedright\footnotesize\ttfamily
+ \ignorespaces #1}\hfill\parbox{.45\textwidth}{\vspace{1ex}%
+ \begin{minipage}{.45\textwidth}\sloppy\small
+ \renewcommand{\thempfootnote}{\arabic{mpfootnote}}%
+ \setcounter{mpfootnote}{\arabic{footnote}}%
+ {\ignorespaces #2}%
+ \setcounter{footnote}{\arabic{mpfootnote}}%
+ \end{minipage}
+ \vspace{1ex}}}\vspace{2.4ex}}}
+
+ \begin{document}
+
+ \maketitle
+
+ \noindent
+ \BibArts\ soll \LaTeX\hy Anwender beim Schreiben geisteswissenschaftlicher
+ Texte unterst"utzen (\kern-.05em\textit{arts faculty}). Der Vorspann eines deutschen
+ \LaTeX\hy Textdokuments, das das Stylefile \verb|bibarts.sty| einl"adt,
+ sieht typischerweise so aus:
+
+ \vspace{-1.5ex}
+ {\small\begin{verbatim}
+ \documentclass[12pt,a4paper]{article}
+ \usepackage{bibarts} \usepackage{ngerman}
+ \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc}
+ \end{verbatim}}
+
+ \vspace{-4ex}\noindent
+ Das separate Tippen von Anh"angen kann nun weitgehend entfallen.
+ Dazu werden Kopien von Literaturangaben, die sich im Haupttext oder
+ den Fu"snoten befinden, in einer Literaturliste und weiteren Listen
+ sortiert ausgedruckt.
+
+ \vspace{1ex}\noindent
+ Der wichtigste dieser Ausdruckbefehle, \verb|\printvli|, verh"alt sich
+ "ahnlich wie \verb|\tableofcontents| f"ur das Inhaltsverzeichnis:
+ Dazu muss im \LaTeX\hy Text ja auch
+ \verb|\section{|\texttt{"Uberschriftentext}\verb|}| markiert werden.
+ Und f"ur \BibArts\ gilt:
+
+ \Doppelbox
+ {...\bs footnote\{Ein Beispiel f"ur Geschichtsliteratur ist
+ \bs vli\{Hans-Ulrich\}\{Wehler\}\{Das Deutsche Kaiserreich,
+ \\ G"ottingen 1994\}.\}
+ }
+ {Einfaches Vollzitat.\footnote{Ein Beispiel f"ur Geschichtsliteratur ist
+ \vli{Hans-Ulrich}{Wehler}{Das Deutsche Kaiserreich,
+ G"ottingen 1994}.}
+ }
+
+\noindent
+In \verb|\vli| l"asst sich ein sp"ater verwendeter Kurztitel
+mit \verb|\ktit| so einf"uhren:
+
+\Doppelbox
+{...\bs footnote\{Soziologie:
+ \bs vli\{Niklas\} \{Luhmann\} \{\bs ktit\{Soziale Systeme\}.
+ \\ Grundri"s einer allgemeinen Theorie, 1984: Frankfurt/M.\}.\}
+}
+{...\footnote{Soziologie:
+ \vli{Niklas} {Luhmann} {\ktit{Soziale Systeme}. Grundri"s einer
+ allgemeinen Theorie, 1984: Frankfurt/M.}.\balabel{luhmann}}
+}
+
+\vfill\noindent
+Beide Arten der Eingabe (mit und ohne \verb|\ktit|) kommen in die
+Literaturliste, die das erw"ahnte \verb|\printvli| ausdruckt.
+Dies hat nichts mit \textsc{Bib}\TeX\ zu tun:\pdfko{.25}
+
+ \printvli
+
+ \vspace{1ex}\noindent
+ Wie von der Erzeugung des Inhaltsverzeichnisses her bekannt, sind
+ "Anderungen erst nach zweimaligem Start von \LaTeX\
+ im Preview oder Ausdruck zu sehen. F"ur \BibArts\ gilt au"serdem, dass
+ zwischen den beiden Bearbeitungen das Programm \verb|bibsort| gestartet
+ werden muss, um die Literaturliste zu sortieren. Hei"st eine
+ \LaTeX\hy Textdatei \verb|meintext.tex|, ist typischerweise
+
+ \vspace{-.5ex}
+ \begin{verbatim}
+ bibsort -g1 -k -h meintext
+ \end{verbatim}
+
+ \vspace{-3.25ex}\noindent
+ in die Kommandozeile einzugeben. Dann liest \verb|bibsort| die mit
+ \verb|\vli|-Li"-teraturangaben bef"ullte Datei \verb|meintext.aux| ein,
+ sortiert die Vollzitate "uber die Option
+ \verb|-g1| nach deutschen Sortierregeln und legt das Ergebnis ab in einer
+ Datei \verb|meintext.vli|, die im Text mit \verb|\printvli| bei der
+ zweiten \LaTeX\hy "Ubersetzung ausgedruckt werden kann. Die zus"atzlich
+ gesetzte Option \verb|-k| \hspace{.3em}sorgt\pdfko{.25}\
+ daf"ur, dass \textit{ein} Autor (Vor- und Nachname gleich), der mit mehreren
+ Werken zitiert wird, ab seiner zweiten Nennung auf der Literaturliste
+ als $\sim$ erscheint. \verb|-h| bewirkt, dass Bindestriche (Minuszeichen)
+ als Leerzeichen sortiert werden.
+
+ \vspace{1ex}
+ Viele Texteditoren k"onnen den Start automatisieren. Falls sich die
+ Datei \verb|bibsort.exe| im Verzeichnis \verb|C:\pfadangabe| befindet, dann
+ gilt beispielsweise f"ur das \TeX nicCenter: Der automatisierte Start von
+ \verb|bibsort| erfolgt durch Eingabe von \verb|C:\pfadangabe\bibsort.exe|
+ in das Men"u \fbox{Ausgabe} $\Rightarrow$ \fbox{Ausgabeprofile definieren}
+ $\Rightarrow$ \fbox{Vorbearbeitung} in die Zeile \underline{Anwendung} und
+ \\[1ex]\verb|-i %tm -g1 -k -h|\hspace{.5em}
+ hinter \underline{Argumente} darunter.\hspace{.3em} (Evtl.\ versionsabh"angig.)
+
+ \vspace{2.75ex}\noindent
+ Nochmal zum \verb|\ktit|\hy Befehl: Dessen Verwendung im \verb|\vli|\hy Befehl
+ macht \textit{zus"atzlich} den Ausdruck eines Kurzzitate\hy Verzeichnisses mittels
+ \verb|\printnumvkc| m"oglich. \textsc{Wehler} fehlt nat"urlich;
+ aber vgl.\ \textsc{Luhmann} \baref[von]{luhmann}:
+
+ \vspace{1.5ex}\label{vkc}{\footnotesize \batwocolitemdefs\printnumvkclist}
+
+ \newpage
+ \noindent
+ Falls in Vollzitaten der Kurztitel mit \verb|\ktit| markiert
+ ist, erscheint das Kurzzitat (Nachname plus Kurztitel) also im Verzeichnis.
+ Um \verb|\printvli| zu nutzen, m"ussen Sie \verb|\ktit| also nicht
+ verwenden $-$ aber dazu, \verb|\printnumvkc| zu bef"ullen. Dahinter folgten
+ Orte mit `echten' Kurzzitaten; dazu gleich unten.
+
+ Anwender, die das [L] $-$\,hei"st: \textit{Volltitel findet sich auf der Literaturliste}\,$-$ nicht
+ wollen, k"onnen im Vorspann \verb|\notprinthints| setzen; das unterdr"uckt den Ausdruck
+ von [L] und [Q] \,(\kern-.1em\textit{Volltitel im Verzeichnis gedruckter Quellen}).
+
+
+
+\section{Vollzitate und Kurzzitate (\ko\textit{v}\hy\ und \textit{k}\fhy Befehle)}\label{Sect1}
+
+ Nachdem ein Buch einmal vollzitiert wurde, kann es anschlie"send an
+ weiteren Belegstellen kurzzitiert werden. Zur formatierten Eingabe von
+ Literatur dienen f"ur Vollzitate die beiden Befehle\hspace{-.1em} \verb|\vli| f"ur
+ Literatur und\hspace{-.1em} \verb|\vqu| f"ur gedruckte Quellen (Quelleneditionen); f"ur
+ Kurzzitate dienen\hspace{-.1em} \verb|\kli| und\hspace{-.1em} \verb|\kqu|. Letztere haben jeweils ein
+ Argument weniger als die Vollangaben, weil das Vornamensargument im
+ Kurzzitat wegf"allt. Der Titel wird im Kurzzitat als Kurztitel angegeben.
+ Falls dieser Kurztitel im Vollzitat bereits mit \verb|\ktit| markiert
+ wurde, kann \BibArts\ mitkontrollierten, ob kurzzitierte Literatur weiter
+ oben in Ihrem \LaTeX\hy Text bereits eingef"uhrt wurde. Dieser Aufgabe kommt
+ das Sortierprogramm \verb|bibsort| nach, indem es Warnungen auf den
+ Bildschirm ausgibt. Fehlt im Text das Vollzitat mit\hspace{-.1em} \verb|\ktit|, dann f"uhrt das
+ Kurzzitieren der Quellenedition\hspace{.1em}
+ \verb|\kqu{Clausewitz}{Vom Kriege}|\hspace{.15em} zur \verb|bibsort|\hy Warnung:
+
+ {\scriptsize\begin{verbatim}
+ %%> Info: Short-qu-title file 1 line 143 is NOT yet introduced.
+ %% (Clausewitz) (Vom Kriege)
+ %% ... Change that short-title into missing full-title (\ktit)?
+ \end{verbatim}}
+
+ \vspace{-2ex}\noindent
+ Die Kontrolle macht \BibArts\ mittels der Daten, die auch in die\hspace{-.2em} \verb|.vkc|\hy Datei kommen:
+ (1)~Nachname und\hspace{.1em} Argument von\hspace{-.1em} \verb|\ktit|\hspace{.1em} aus \underline{v\ko}\hy
+ Belegen, (2)~Names- und Kurztitel\hy Argument aus \underline{k}\hy Belegen.
+ Die\hspace{-.2em} \verb|.vkc|\hy Datei, die `\ko\textit{\underline{c}ites}'
+ von Literatur \textit{und} gedruckten Quellen enth"alt, wurde oben mit
+ \verb|\printnumvkc| ausgedruckt.
+
+ \vspace{1ex}\noindent
+ Erfolgt irrt"umlich \textit{erst} das Kurzzitat und
+ \textit{weiter unten} das Vollzitat ...
+
+\Doppelbox
+{...\bs footnote\{\bs kqu\{Clausewitz\}
+ \\ \hspace{2em} \{Vom Kriege\}.\}
+ \ Aber ... \\
+ ...\bs footnote \b{\b{\{}}Siehe dazu weiter
+ \\ \hspace{.5em} \bs vqu \{Carl von\}
+ \{Clausewitz\}
+ \\ \hspace{2.5em} \b{\{}\bs ktit\{Vom Kriege\}.
+ \\ \hspace{3em} Hinterlassenes Werk,
+ 3.\bs,Auf\string"|l. Frankfurt/M 1991\b{\}}.\b{\b{\}}}
+}
+{...\footnote{\kqu{Clausewitz} {Vom Kriege}.}
+ Aber ...
+ ...\footnote{Siehe dazu weiter \vqu {Carl von}{Clausewitz} {\ktit{Vom Kriege}.
+ Hinterlassenes Werk, 3.\,Auf"|l.\ Frankfurt/M 1991}.}
+}
+
+ \noindent
+ ... dann warnt \verb|bibsort| danach auf dem
+ Bildschirm etwa (siehe Folgeseite):
+
+ \vspace{-.75ex}
+ {\scriptsize\begin{verbatim}
+ %%> Info: Short-qu-title file 1 line 193 is NOT yet introduced.
+ %% (Clausewitz) (Vom Kriege)
+ %% ... Exchange it with the full-title in file 1 line 196.
+ \end{verbatim}} %% Zeilenangaben nur ausserhalb \Doppelbox brauchbar %%
+
+ \vspace{-2.75ex}\noindent
+ Die mehrfache Vergabe \textit{gleicher} Kurzzitate ... \footnote{\vqu{Carl
+ von}{Clausewitz}{\ktit{Vom Kriege}. Hinterlassenes Werk, 3.\,Auf"|l.\
+ Frankfurt/M 1991}.} ... ergibt solche Warnungen
+ (der Vergleich ist f"ur \textit{aktive} \verb|"| sensitiv und \verb|!"| k"undigt deren Vorkommen an):
+
+ \vspace{-.75ex}
+ {\scriptsize\begin{verbatim}
+ %%> Info: Introduction 2 of short-qu-title in file 1 line 241.
+ %% (Clausewitz) (Vom Kriege)
+ %% First introduction has been in file 1 line 225 (\ktit).
+ \end{verbatim}}
+
+ \vspace{-2.75ex}\noindent
+ Falls Sie von \textit{einem} Autor in direkt aufeinanderfolgenden Fu"snoten
+ \textit{verschiedene} Werke zitieren, erscheint im
+ \LaTeX\kern.05em-\hspace{-.05em}\verb|.log|\kern.05em\hy File und auf dem Bildschirm:\balabel{DERS}%
+
+ \vspace{-.75ex}
+ {\footnotesize\begin{verbatim}
+ BibArts Warning: ...vqu-cmd repeats (first) author's lastname
+ on input line 180. `{Clausewitz}'. Change to `...vqu[m,f,p]'?
+ \end{verbatim}}
+
+ \vspace{-3.25ex}\noindent
+ Dieser Hinweis informiert, dass der Autorenname
+ bei der zweiten Nennung in der direkt folgenden Fu"snote ersetzt
+ werden \textit{kann} durch den in diesem Fall\pdfko{.5}\
+ "ublichen Hinweis, dass er derselbe
+ ist (\textsc{ders.}). Den entsprechenden Schalter\pdfko{.5}\
+ m"ussen Sie
+ selbst umlegen und dabei das Geschlecht des Autors einstellen.
+ Der Schalter l"asst sich zusammen mit allen v- und k-Befehlen
+ verwenden. Verf"ugbare Schalter sind\hspace{.1em}
+ \verb|f| (weiblich),\hspace{.1em} \verb|m| (m"annlich) und\hspace{.1em} \verb|p{}|
+ (plural: S.\,\pageref{p}):\pdfko{.25}
+
+ \vspace{1.ex}{\small\noindent
+\verb| \footnote{\vqu [m] {Carl von}{Clausewitz}{\ktit{Strategie}.|\\
+\verb| Hrsg. von \vauthor{Eberhard}{Kessel}, Hamburg 1937}[58].} => |}
+{\renewcommand{\thefootnote}{{\bfseries\arabic{footnote}}}%
+ \footnote{\vqu [m] {Carl von}{Clausewitz}{\ktit{Strategie}.
+ Hrsg.\ von \vauthor{Eberhard}{Kessel}, Hamburg 1937}[58].
+ \hspace{.8em} $\Leftarrow$ \ \texttt{... \{Clausewitz\} \{\bs ktit\{Strategie\}. ...\}[58].}}%
+}
+
+\vspace{1.ex}\noindent
+Dabei wurde zudem eine Seitenangabe (\kern.05em...\kern.1em\texttt{\underline{\}[}58]}
+\textit{ohne} \underline{Leerzeichen}) gemacht.
+
+Die Ank"undigung des
+Kurztitels mit \verb|\ktit| erm"oglicht ein \textsc{ebd.}\hy Setzen:
+Falls das folgende Kurzzitat auf
+dieselbe Seite der Quellenedition verweist, ergibt sich ...
+{\renewcommand{\thefootnote}{{\bfseries\itshape\arabic{footnote}}}%
+ \footnote{\kqu{Clausewitz}{Strategie}[58].\label{ErsterFall}
+ \hspace{5.95em} $\Leftarrow$ \ \texttt{\bs kqu\{Clausewitz\}\{Strategie\}[58].}}
+} ... w"ahrend eine andere Seite (\verb|[60]|) gedruckt wird
+als~...~\footnote{\kqu{Clausewitz}{Strategie}[60].
+\hspace{3.05em} $\Leftarrow$ \ \texttt{\bs kqu\{Clausewitz\}\{Strategie\}[60].}}\kern.05em.
+
+\BibArts\ druckt in Fu"snote\,\ref{ErsterFall} nur den Abk"urzungspunkt von \textsc{ebd.},
+nicht aber den direkt folgenden Punkt am Satzende. Dies funktioniert nur,
+wenn zwischen \verb|[|\textit{Seitenzahl}\verb|]| und \verb|.|
+\textit{keine Klammern oder Leerzeichen} stehen ... \footnote{\textit{\kqu{Clausewitz}{Strategie}[60]}.
+\hspace{5.68em} $\Leftarrow$ \ \texttt{\bs textit\b{\{}\bs kqu\{Clausewitz\}\{Strategie\}[60]\b{\}}.
+\texttt{\%Fehler}}}!
+
+Das automatischen Ebenda-Setzen f"uhrt \BibArts\ in einer Fu"snote nicht durch,
+wenn in der vorausgehenden Fu"snote zwei verschiedene Werke angegeben sind
+(weil dies nicht eindeutig w"are): ...
+\footnote{\kqu[m]{Clausewitz}{Strategie}[60] und \kqu[m]{Clausewitz}{Vom Kriege}.
+\hspace{3em} \texttt{\%\% Ein Autor mit zwei Werken. \%\%}}
+$\leftarrow$
+\footnote{\kqu[m]{Clausewitz}{Strategie}[12].
+\hspace{3.85em} $\Leftarrow$ \ \texttt{\bs kqu[m]\{Clausewitz\}\{Strategie\}[12].}}
+... Mit \verb|\notibidemize| l"asst sich das automatische Ebenda-Setzen ausschalten
+(nicht demonstriert).
+
+In jedem Fall ist sinnvoll, im letzten Argument eines v\fhy Befehls
+einen Teil des Volltitels mittels \verb|\ktit| als Kurztitel zu
+markieren: Dies bewirkt einerseits den Eintrag ins\hspace{-.15em} \verb|.vkc|\hy Verzeichnis
+und erm"oglicht \texttt{bibsort} parallel die Kontrolle, ob beim Erstzitieren stets
+vollzitiert wurde. Andererseits kann nur dann ein k\fhy Befehl in der
+folgenden Fu"snote als \textsc{ebd.} ausgedruckt werden.
+
+\BibArts\ erzwingt aber keine Verwendung von \verb|\ktit| in normalen
+v\fhy Befehlen, denn sicherlich wollen manche Anwender die k\hy Befehle
+\verb|\kli| und \verb|\kqu|\pdfko{.5}\
+"uberhaupt nicht benutzen.\footnote{Das
+unten eingef"uhrte Setzen von \textit{inneren v\fhy Befehlen} (im letzten Argument
+eines \textit{"au"seren v\fhy Befehls}) ist dann allerdings nicht m"oglich;
+\textit{innere v\fhy Befehle} m"ussen immer ein \texttt{\bs ktit} haben.
+Das liegt daran, dass auf den v\fhy Listen \textit{innere v\fhy Befehle}
+stets als Kurztitel ausgedruckt werden; \texttt{bibsort} druckt den Volltitel
+automatisch in eigenen Listenpunkt! Falls Sie das nicht wollen, k"onnen
+Sie \textit{innen} \texttt{\bs ntvauthor} verwenden (siehe unten S.\,\pageref{ntvauthor}).}
+In \BibArts~2.2 erzeugt \texttt{bibsort} "ubrigens Meldungen als Kommentare
+in den erzeugten Dateien\hspace{-.15em} \verb|.vli| und\hspace{-.15em} \verb|.vqu|\kern.05em, falls \verb|\ktit|
+gelegentlich verwendet und gelegentlich vergessen wurde.
+
+Das Weglassen von \verb|\ktit| ist aber keine gute Methode, im Ausdruck von
+Vollzitaten die\hspace{.2em} {\small im Folgenden\,...}\kern.05em\hy Ank"undigung\hspace{.1em} (wie nachfolgend
+kurzzitiert werden wird) auszuschalten.\footnote{\texttt{bibsort}
+w"urde am ersten Kurzzitat vorschlagen, \textit{dieses} in ein Vollzitat zu
+verwandeln.} Dazu dient vielmehr \verb|\notannouncektit|, das\pdfko{.25}\
+im Dokumentenvorspann \textit{global} gesetzt werden kann. Das Beispiel zeigt,
+wie es \textit{lokal} $-$\,also zusammen mit dem v\fhy Befehl eingeklammert\,$-$ zu setzen
+ist:\footnote{Ein lokales Setzen eines v\fhy Befehls unter
+\texttt{\bs notannouncektit} scheint zwar naheliegend, wenn ein Werk nur
+einmal pro Text angef"uhrt wird. Aber falls Sie sp"ater \textit{dasselbe} Werk
+doch noch kurzzitieren sollten, macht \BibArts\ keine Meldung, dass
+\textit{der} Kurztitel \textit{im Text}\pdfko{.1}\
+nicht vorangek"undigt wurde: \texttt{bibsort}
+wei"s von Ihrem \texttt{\bs notannouncektit} nicht~(nie!).}
+
+\Doppelbox
+{... \bs vli\{Niklas\}\{Luhmann\}
+ \\ \{\bs ktit\{Soziale Systeme\}.
+ \\ \ Grundri"s einer allgemeinen
+ \\ \ Theorie, 1984: Frankfurt/M.\}
+ \\[1.25ex]
+ Unannonciert:
+ \b{\b{\{}}\bs notannouncektit
+ \bs vli\{Niklas\}\{Luhmann\} \b{\{}\bs ktit\{Soziale Systeme\}.
+ \\ \ Grundri"s einer allgemeinen
+ \\ \ Theorie, 1984: Frankfurt/M.\b{\}}\b{\b{\}}}
+ \\[.75ex] \%\% Zu \}. siehe unten S.\pageref{v-Ausnahme}! \%\%
+}
+{\vspace{.375ex}
+ Annonciert: \vli{Niklas}{Luhmann} {\ktit{Soziale Systeme}.
+ Grundri"s einer allgemeinen Theorie, 1984: Frankfurt/M.}
+ \\[4.6ex] Unannonciert:
+ {\notannouncektit
+ \vli{Niklas}{Luhmann} {\ktit{Soziale Systeme}.
+ Grundri"s einer allgemeinen
+ Theorie, 1984: Frankfurt/M.}}
+}
+
+\vspace{.5ex}\noindent
+Beide \verb|\vli|\hy Befehle ergeben $-$\,weil beide ein \verb|\ktit| haben\,$-$
+auch Eintr"age in die\hspace{-.15em} \verb|.vkc|\hy Datei\hspace{.25em} (die\hspace{.1em}
+{\small\balistnumemph\thepage}\hspace{.1em} hinter
+{\small\printonlykli{Luhmann}{Soziale Systeme}} in der Liste S.\,\pageref{vkc}).
+
+\vspace{2ex}\noindent
+Das automatische \textsc{ebd.}\hy Setzen f"uhrt \BibArts\ "ubrigens nur von
+Fu"snote zu Fu"snote durch, nicht im Haupttext. Nie in \textsc{ebd.} umgewandelt
+werden v\fhy Befehle.
+
+
+\vspace{1ex}\noindent
+Auch im speziellen Fall des Texttyps \textbf{Aufsatz} $-$\,gemeint ist:
+falls \verb|\printvli| nicht verwendet wird\,$-$ ist die Verwendung von \verb|\ktit|
+sinnvoll. In solchen Texten ist n"amlich w"unschenswert, beim Kurzzitat
+Querverweise auf das Vollzitat zu drucken, um auf die vollst"andigen bibliographischen
+Angaben hinzuweisen. \BibArts\ kann deshalb optional aus jedem v\fhy Befehl
+(Vollzitat) eine Marke aus Autornachname und Kurztitel erzeugen,
+damit zugeh"orige k\fhy Befehle automatisiert einen Querverweis drucken k"onnen.
+Das Einschalten dieses Aufsatz\hy Modus erfolgt mit dem \BibArts-Befehl
+\verb|\conferize|. Der sollte global gelten, also im Vorspann von
+\LaTeX\hy Textdateien gesetzt werden.\footnote{Dies hat nichts
+damit zu tun, ob f"ur den \LaTeX-Text der Dokumentenstil \texttt{\{article\}}\pdfko{.5}\
+oder \texttt{\{book\}} gew"ahlt wird. Vielmehr sind die Auswahl des
+Dokumentenstils und das Setzen von \texttt{\bs conferize} zwei voneinander
+unabh"angige Entscheidungen. -- Studentische Hausarbeiten werden zwar oft
+als Aufs"atze bezeichnet, sollen aber meist eine Literaturliste haben.}
+Ein Blick auf die Fu"snoten \ref{vz} und \ref{fz}
+im Kurzzitateverzeichnis (S.\,\pageref{vkc}) belegt, dass es sich auch im
+\verb|\conferize|\hy Modus zu Kontrollzwecken ausdrucken l"asst.
+
+\Doppelbox
+{\bs conferize\ ...\bs footnote\b{\{}
+ \\ \ \ Vollzitat: \bs vli\{Niklas\}
+ \\ \ \ \{Luhmann\} \{\bs ktit\{Soziale
+ \\ \ \ \ \ \ Systeme\}. Grundri"s einer
+ \\ \ \ \ \ allgemeinen Theorie,
+ \\ \ \ \ \ 1984: Frankfurt/M.\}.\b{\}}
+ \\[.5ex] ...\bs footnote\{\} \ \% kein Ebd.
+ \\[.5ex] ...\bs footnote\H{\{}Kurzzitat:
+ \\ \ \ \bs kli\{Luhmann\} \ \ \{Soziale
+ \\ \ \ \ \ \ Systeme\}[23\bs f].\H{\}}
+}
+{\conferize ...\footnote{\label{vz}%
+ Vollzitat: \vli{Niklas}{Luhmann} {\ktit{Soziale Systeme}.
+ Grundri"s einer allgemeinen Theorie, 1984: Frankfurt/M.}.}
+ ...\footnote{}
+ ...\footnote{\label{fz}Kurzzitat: \kli{Luhmann} {Soziale Systeme}[23\f].}
+}
+
+
+\noindent
+Im Programmcode von \verb|bibarts.sty| wurde gro"ser Aufwand damit
+betrieben, dass dies immer funktioniert, also auch dann, wenn sich
+\LaTeX\hy Befehle in den Argumenten der
+v- und k\fhy Befehle befinden. Dazu durchsucht \BibArts\ sie und kopiert
+nur bestimmte Teile von \textit{Nachname} und \textit{Kurztitel} in das
+automatisch erzeugte \textit{Schl"usselwort} f"ur die Marke (vorz"uglich
+die Buchstaben).\footnote{\BibArts\ bildet zudem einige
+Sonderzeichen bzw.\ Akzente im Schl"usselwort ab, etwa:\hspace{.8em}
+\texttt{\bs \string`}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{[}\hspace{.9em}
+\texttt{\bs \string'}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{]}\hspace{.9em}
+\texttt{\bs \string"}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{*}\hspace{.9em}
+\texttt{\bs ss}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{(ss}\hspace{.9em}
+\texttt{\bs l}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{(l}\hspace{.9em}
+\texttt{\bs o}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{(o}\hspace{.9em}
+\texttt{\bs \string^}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{)}\hspace{.9em}
+\texttt{\bs \string~}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{-}\hspace{.9em}
+\texttt{\bs c}\nobreak\hspace{.25em}$\Rightarrow$\nobreak\hspace{.2em}\texttt{+}\pdfko{.3}\hspace{.9em}
+(\kern.05em in Version~2.2\hspace{.1em} sind\hspace{.7em}\texttt{\bs \string=}\hspace{.5em} \texttt{\bs \string.}\hspace{.225em}
+\texttt{\bs b}\hspace{.4em} \texttt{\bs d}\hspace{.4em} sowie das\hspace{.1em} \textit{aktive} \texttt{\string"}\hspace{.15em}
+ausgeschieden).\hspace{.3em} In Fu"snoten z.\,B.\pdfko{.1}\ setzt\hspace{.3em}
+\texttt{\bs vli\hspace{.2em}\{Peter\}\hspace{.2em}\{M\bs\string"uller\}\hspace{.2em}%
+\{Die \bs ktit\{Reise\}, Verlagsstadt 2002\}}\hspace{.3em}
+die Querverweis\hy Marke\hspace{.325em}
+\texttt{\bs newlabel\{baf.M*uller..Reise\}\{\{{\normalfont
+\textit{Fu"snote}}\}\{{\normalfont \textit{Seite}}\}\}}\hspace{.35em} ins\hspace{-.15em} \texttt{.aux}\hy File ab.}
+
+Sorgfalt erfordert mehr das automatische \textsc{ebd.}\hy Setzen
+(\verb|\notibidemize| schaltet es aus). \BibArts\ erkennt zwei
+Argumente nur als gleich an, wenn sie zeichengleich sind.
+\verb|\only|...\hy Befehle sind zwar erlaubt (sollten jedoch
+jeweils getestet werden f"ur den Querverweis \textit{und} die
+\textsc{ebd.}\hy Setzung). Falls Sie aber \verb|\underline| im v\fhy Befehl mit
+\verb|\protect| sch"utzen und im zugeh"origen k\fhy Befehl nicht,
+gibt es zwei Eintr"age in der\hspace{-.15em} \verb|.vkc|-Liste und
+definitiv kein \textsc{ebd.}\hy Setzen.
+
+Die ohnehin f"ur geisteswissenschaftliche Texte g"ultige Spielregel, dass
+jedes Kurzzitat aus Autoren\hy Nachname plus Kurztitel ein bestimmtes Werk
+eindeutig bezeichnen muss, schlie"st aus, dass eine Marke absichtlich
+zweimal vorkommt (Kurztitel d"urfen sogar mehrfach gleich
+sein, wenn sich nur die Nachnamen unterscheiden). Trotzdem steht
+das Befehlspaar \verb|\balabel| und\pdfko{.5}\
+\verb|\baref| bereit, um 'von Hand' Marken setzen zu k"onnen,
+wie k\fhy Befehle es im\pdfko{.3}\
+\verb|\conferize|\hy Stil tun: \verb|\baref| bemerkt ebenfalls selbst, ob
+es auf eine Fu"snote\pdfko{.3}\
+verweist. In den 'von Hand' zu tippenden Schl"usselworten in den
+Argumenten von \verb|\balabel| und \verb|\baref| sind Sonderzeichen
+allerdings verboten.
+
+\Doppelbox
+{M"uller \bs balabel\{Mueller\} im
+ Text.\bs footnote\b{\{}Maier in
+ \\ \ Fu"snote.\bs balabel\{Maier\}\b{\}}
+ \\ ... M"uller ist nochmal erw"ahnt \bs baref\{Mueller\}
+ und Maier ebenfalls \bs baref[vgl.]\{Maier\}.
+}
+{M"uller \balabel{Mueller} im
+ Text.\footnote{Maier in
+ Fu"snote.\balabel{Maier}}
+ ... M"uller ist nochmal erw"ahnt \baref{Mueller}
+ und Maier ebenfalls \baref[vgl.]{Maier}.
+}
+
+\noindent
+Das \texttt{[}\textit{OptionalArg}\texttt{]} "uberschreibt 'siehe'
+(\verb|\grefverbname|; vgl.\ unten S.\,\pageref{grefverbname}).
+
+
+\vspace{2ex}\noindent
+Zur"uck zu den v\fhy Befehlen. Bei der Auswahl eines Kurztitels aus
+dem Volltitel mit \verb|\ktit| wird es gelegentlich so sein, dass
+der Kurztitel dort mit einem Kleinbuchstaben beginnt. \BibArts\
+erkennt die Verbindung mit sp"ater in k\fhy Befehlen gro"sgeschriebenen
+Kurztiteln mittels \verb|\onlyvoll| und \verb|\onlykurz|:
+
+\label{Ferguson}%
+\Doppelbox
+{...\bs footnote\{\bs vli\{Niall\}
+ \\ \ \{Ferguson\} \b{\b{\{}}Der
+ \\ \ \bs ktit\b{\{}\bs onlykurz\{F\}\%
+ \\ \ \ \bs onlyvoll\{f\}alsche\bs onlykurz\{r\}
+ \\ \ \ Krieg\b{\}}, M"unchen 2001\b{\b{\}}}[22].\}
+ ...\bs footnote\{\bs kli\{Ferguson\}
+ \\ \ \{Falscher Krieg\}[23].\}
+ ...\bs footnote\{\bs clearbamem
+ \\ \ \bs kli\{Ferguson\}\{Falscher Krieg\}.\}
+}
+{...\footnote{\vli{Niall}
+ {Ferguson} {Der
+ \ktit{\onlykurz{F}%
+ \onlyvoll{f}alsche\onlykurz{r} Krieg},
+ M"unchen 2001}[22].}
+ ...\footnote{\kli{Ferguson}
+ {Falscher Krieg}[23].}
+ ...\footnote{\clearbamem \kli{Ferguson}{Falscher Krieg}.\label{clearbamem}}
+}
+
+\vspace{.5ex}\noindent
+Die Fu"snote\,\ref{clearbamem} soll sich auf das ganze
+Werk beziehen; nur \textsc{ebd.} wieder mittels \verb|\kli{Ferguson}{Falscher Krieg}[23]|
+zu erzeugen, w"are falsch. Stattdessen l"oschte \verb|\clearbamem| die
+Zwischenspeicher. Sonst h"atte der \verb|\kli|-Befehl ohne \verb|[|\textit{Seite}\verb|]|
+bei der "Ubersetzung mit \LaTeX\ diese Fehlermeldung ausgel"ost:
+
+\vspace{0.5ex}\label{before}
+{\scriptsize\begin{verbatim}
+ ! Same title, before with :{p}{23}:, has now no page/folio number.
+ . . . . . . . . . . . .
+ \errmessage@ba ...
+ \space . . . . . . . . . . . }
+ }
+ l.461 \footnote{\kli{Ferguson}{Falscher Krieg}.}
+ }
+\end{verbatim}}
+
+Neben Monografien gibt es noch B"ucher, die aus mehreren Aufs"atzen bestehen.
+Es ist genug, auch \textbf{Herausgeberwerke} nur einmal voll zu zitieren. Bei der
+Ersteinf"uhrung des \textit{zweiten} Aufsatzes darf das Buch (im letzten
+Argument des '"au"seren' v\fhy Befehls) kurzzitiert sein, denn es ist ja schon
+bekannt. Es steht ein 'inneres' \textsc{ebd.}\hy Setzen an, falls Sie beide
+Aufs"atze in aufeinander folgenden Fu"snoten einf"uhren. \BibArts\
+hat daf"ur eine zweite Speicherebene.\footnote{Falls Sie das Herausgeberwerk
+sp"ater \textit{eigenst"andig} kurzzitieren wollen (wie unten S.\,\pageref{MEhlert}:
+also nicht im letzten Argument eines v- oder k\fhy Befehls)
+\textit{und} dort \textsc{[Hrsg.]} nicht mehr setzen wollen, dann m"ussen
+Sie hier \textsc{[Hrsg.]} mit \texttt{\bs onlyvoll} im inneren v\fhy Befehl und mit
+\texttt{\bs vollout} im inneren k\fhy Befehl maskieren
+(Leerzeichen so: \texttt{\{Gro"s\}\bs onlyvoll\{ [Hrsg.]\}}).}
+
+\vspace{.75ex}
+\Doppelbox
+{...\bs footnote\{Innen vollzitiert:
+ \\ \bs vqu \{\} \{\}
+ \\ \b{\b{\{}}\bs ktit\{Aufmarschanweisungen
+ \\ \ \ 1912\}, abgedruckt in:
+ \\ \ \bs xvqu\{Hans\} \{Ehlert\}
+ \\{} \ \ *\b{\{}\bs midvauthor\{Michael\}
+ \\ \ \ \ \ \ \{Epkenhans\}
+ \\ \ \ \ \ \bs vauthor\{Gerhard P.\}
+ \\ \ \ \ \ \ \{Gro"s\} [Hrsg.]\b{\}}
+ \\ \ \ \{Der \bs ktit\{Schlieffenplan\},
+ \\ \ \ \ Paderborn
+ \\ \ \ \ 2007\}[462-466]\b{\b{\}}}*[463].\}
+ \\ \
+ \\ ...\bs footnote\{Innen kurz:
+ \\ \bs vqu \{\} \{\}
+ \\ \H{\{}\bs ktit\{Aufmarsch 1913/14\},
+ \\ \ abgedruckt in:
+ \\ \ \bs xkqu\{Ehlert\}
+ \\{}\ \ *\{\bs midkauthor\{Epkenhans\}
+ \\ \ \ \ \ \bs kauthor\{Gro"s\} [Hrsg.]\}
+ \\ \ \ \{Schlieffenplan\%
+ \\ \ \ \}[467-477]\H{\}}*[469].\}
+}
+{\vspace{1ex}
+ \fbox{\parbox{.95\textwidth}{Siehe \texttt{.vkc}-Eintr"age oben S.\,\pageref{vkc}:
+ \\[1ex] \scshape[Anonym]\\{}[Anonym]\\{}[...]\\Ehlert\baslash Epkenhans\baslash Gro"s}}\\
+ \\[1ex] ...\footnote{Innen vollzitiert: \vqu {} {}
+ {\ktit{Aufmarschanweisungen 1912},
+ abgedruckt in: \xvqu{Hans} {Ehlert}
+ *{\midvauthor{Michael} {Epkenhans}
+ \vauthor{Gerhard P.} {Gro"s} [Hrsg.]}
+ {Der \ktit{Schlieffenplan},
+ Paderborn 2007}[462-466]}*[463].}
+
+ ...\footnote{Innen kurz: \vqu {} {}
+ {\ktit{\onlyhere{\onlykurz{\,}}Aufmarsch 1913/14},
+ abgedruckt in: \xkqu{Ehlert}
+ *{\midkauthor{Epkenhans} \kauthor{Gro"s} [Hrsg.]}
+ {Schlieffenplan%
+ }[467-477]}*[469].}
+}
+
+
+\vspace{.75ex}\noindent
+\verb|*[463]| und \verb|*[469]| ergeben 'dort: S.' zur Bezeichnung der
+zitierten Einzelseite innerhalb des zuvor genannten Seitenbereichs des
+Teiltextes. Vor \verb|*[| darf\pdfko{1}\ kein Leerzeichen stehen; vor
+\verb|[462-466]| und \verb|[467-477]| auch nicht. Setzen\pdfko{.5}\
+von runden statt eckigen Klammern w"urde Bl.\ statt S.\ ausdrucken.
+
+Das Beispiel f"uhrte zudem das 'Sternargument' ein, das in allen v-
+und k\hy Befehlen nach dem Nachnamensargument \verb|*{|\textit{optional}\verb|}|
+stehen darf, um Koautoren aufzunehmen. In v\fhy Befehlen sind vauthor\hy
+Formatierer und in k\fhy Befehlen kauthor\fhy Formatierer zu verwenden.
+\BibArts\ setzt \textsc{ebd.} nur dann, wenn\pdfko{.5}\
+\textit{auch} gleiche Nachnamen in den vauthor\hy\ und kauthor\hy
+Formatierern stehen.
+
+Dabei benennen \verb|\vauthor| und \verb|\kauthor| stets den letzten von
+jeweils mehreren Autoren. Falls $-$\,wie oben\,$-$ mehr als zwei
+Autoren genannt werden, sind alle davor im Sternargument mit
+\verb|\midvauthor| bzw.\ \verb|\midkauthor| zu kennzeichnen. Die setzen
+Schr"agstriche nach dem Nachnamen. Der Schr"agstrich nach dem Erstautor
+wird von x\fhy Befehlen erzeugt. Im letzten Beispiel waren das \verb|\xvqu|
+und \verb|\xkqu|, bei Literatur sind es \verb|\xvli| und
+\verb|\xkli|.
+
+Auch 'normale' v- und k\fhy Befehlen d"urfen Sternargumente haben.
+Nach \verb|\vli| und \verb|\vqu| k"onnen sie Attribute wie
+\verb|*{\onlyvoll{[Hrsg.]}}| aufnehmen. Das Sternargument
+des v\fhy Befehls ist hier \textit{komplett} mit \verb|\onlyvoll| maskiert, sodass sp"atere
+k\fhy Befehle kein Sternargument brauchen (\textsc{ebd.}\hy Setzung):
+
+\vspace{-.25ex}
+\Doppelbox
+{
+\vspace{-.3ex}
+...\bs footnote\{\bs vli\{Peter\}\{Maier\}
+\\[.4ex] \ \ \ \ \ \ *\b{\b{\{}}\bs onlyvoll\{[Hrsg.]\}\b{\b{\}}}
+\\[.3ex] \ \ \ \ \ \ \b{\{}Das \bs ktit\{Buch\}\b{\}}.\}
+\\[.7ex] Go!\bs footnote\{\bs kli\{Maier\}\{Buch\}.\}
+}
+{Nicht in Listen "ubernommen.\footnote{\notktitaddtok
+\printonlyvli{Peter}{Maier} *{\onlyvoll{[Hrsg.]}} {Das \ktit{Buch}}.}
+Go!\footnote{\printonlykli{Maier}{Buch}.}
+}
+
+
+\vfill\noindent
+Werden direkt hintereinander zwei verschiedene Aufs"atze aus einem
+Herausgeberwerk zitiert, erfolgt das innere und "au"sere \textsc{ebd.}\hy
+Setzen automatisch:
+
+\vspace{.5ex}
+\Doppelbox
+{\scriptsize
+ ...\bs footnote\{Innen vollzitiert:
+ \\ \bs vqu \{\} \{\}
+ \\ \b{\b{\{}}\bs ktit\{Aufmarschanweisungen
+ \\ \ \ 1912\}, abgedruckt in:
+ \\ \ \bs xvqu\{Hans\} \{Ehlert\}
+ \\{} \ \ *\b{\{}\bs midvauthor\{Michael\}
+ \\ \ \ \ \ \ \{Epkenhans\}
+ \\ \ \ \ \ \bs vauthor\{Gerhard P.\}
+ \\ \ \ \ \ \ \{Gro"s\} [Hrsg.]\b{\}}
+ \\ \ \ \{Der \bs ktit\{Schlieffenplan\},
+ \\ \ \ \ Paderborn
+ \\ \ \ \ 2007\}[462-466]\b{\b{\}}}*[463].\}
+ \\[1ex] ...\bs footnote\{\bs kqu\{\}
+ \\ \ \ \ \ \ \{Aufmarschanweisungen
+ \\ \ \ \ \ \ \ 1912\}[464].\}
+ \\[1ex] ...\bs footnote\{Innen kurz:
+ \\ \bs vqu \{\} \{\}
+ \\ \H{\{}\bs ktit\{Aufmarsch 1913/14\},
+ \\ \ abgedruckt in:
+ \\ \ \bs xkqu\{Ehlert\}
+ \\{}\ \ *\{\bs midkauthor\{Epkenhans\}
+ \\ \ \ \ \ \bs kauthor\{Gro"s\} [Hrsg.]\}
+ \\ \ \ \{Schlieffenplan\%
+ \\ \ \ \}[467-477]\H{\}}*[469].\}
+}
+{\vspace{9ex}\showbamem
+ ...\footnote{Innen vollzitiert: \vqu {} {}
+ {\ktit{Aufmarschanweisungen 1912},
+ abgedruckt in: \xvqu{Hans} {Ehlert}
+ *{\midvauthor{Michael} {Epkenhans}
+ \vauthor{Gerhard P.} {Gro"s} [Hrsg.]}
+ {Der \ktit{Schlieffenplan},
+ Paderborn 2007}[462-466]}*[463].\label{InnVoll}}
+
+ ...\footnote{\kqu{} {Aufmarschanweisungen 1912}[464].\label{zweite}}
+ %%
+ %\footnote{\kqu{}{Aufmarschanweisungen 1912!!!!!}[464].} %% Aussen anders %%
+ %%
+ %\newbox\mybox
+ %\setbox\mybox=\hbox{\footnotetext{\printonlyvqu{}{} {\xprintonlykqu{Ehlert}
+ % *{\midkauthor{Epkenhans} \kauthor{Gro"s} [Hrsg.]}{Schlieffenplan}}}}
+
+ ...\footnote{Innen kurz: \vqu {} {}
+ {\ktit{\onlyhere{\onlykurz{\,}}Aufmarsch 1913/14},
+ abgedruckt in: \xkqu{Ehlert}
+ *{\midkauthor{Epkenhans} \kauthor{Gro"s} [Hrsg.]}
+ {Schlieffenplan%
+ }[467-477]}*[469].\label{dritte}}
+}
+
+
+\vspace{.5ex}\noindent
+Ein k\fhy Befehl, der den Eintrag der "au"seren Speicherebene wiederholt,
+l"asst die innere Ebene also unber"uhrt: In Fu"snote\,\ref{dritte} wurde
+ein inneres \textsc{ebd.} gesetzt.
+
+Die Zwischenspeicher lassen sich mit \verb|\showbamem| auch ansehen.
+Dies kann bei Problemen mit dem \textsc{ebd.}\hy Setzen
+helfen.\footnote{\BibArts\ gibt der \LaTeX-\texttt{minipage}\hy Umgebung
+eigene Speicher; die \textsc{ebd.}\hy Setzung in \texttt{minipage}\hy
+Fu"snoten erfolgt deshalb unabh"angig von Fu"snoten im "ubrigen Text.}
+\BibArts\ druckt auf den Bildschirm aus (\verb|o-ref| bzw.\ \verb|i-ref| nennen
+dabei den f"ur \textsc{ebd.} gesuchten Inhalt):
+
+{\scriptsize\vspace{3ex}\noindent
+\verb| FNT |\texttt{\ref{zweite}}
+\vspace{-3ex}
+\begin{verbatim}
+ -- outer: {qu}{}{}{Aufmarschanweisungen 1912} --
+ ---------- inner: {qu}{Ehlert}{\midkauthor {Epkenhans}
+ \kauthor {Gro"s} [Hrsg.]}{Schlieffenplan} --
+ -- o-ref: {qu}{}{}{Aufmarschanweisungen 1912} --
+\end{verbatim}}
+
+
+\vspace{-.5ex}\noindent
+Nun h"atte in der mittleren Fu"snote alternativ auch ein dritter Aufsatz aus dem gleichen
+Herausgeberband kurzzitiert sein k"onnen. Rein logisch d"urfte in der letzten
+Fu"snote dann weiterhin \textsc{ebd.} stehen. Steht aber etwas Anderes als
+\verb|\kqu{}{Aufmarschanweisungen 1912}| in der
+zweiten Fu"snote, unterbleibt ohne weitere Ma"snahmen das innere \textsc{ebd.}\hy Setzen in
+der dritten.\footnote{Um doch das innere \textsc{ebd.} zu kriegen:
+\texttt{\bs newbox\bs mybox} im Vorspann und vor Fu"snote~\ref{dritte}:
+\\[.5ex] \hspace*{.75em} \texttt{\bs setbox\bs mybox=\bs hbox\{\bs footnotetext\{\bs printonlyvqu\{\}\{\}
+\\ \hspace*{1em} \{\bs xprintonlykqu\{Ehlert\}
+\\ \hspace*{1.5em} *\{\bs midkauthor\{Epkenhans\} \bs kauthor\{Gro"s\} [Hrsg.]\}
+\\ \hspace*{1.5em} \{Schlieffenplan\}\}\}\}}}
+
+\vspace{1.5ex}\noindent
+Nun wird das Verzeichnis gedruckter Quellen mit \verb|\printnumvqu| gedruckt:
+
+
+\balabel{printnumvqu}\printnumvqu
+
+\noindent
+Der Herausgeberband
+\textsc{Ehlert}, Hans\baslash""Michael \textsc{Epkenhans}\baslash""Gerhard P.\pdfko{.25}\
+\textsc{Gro"s}
+bekam auf der Liste einen \textit{eigenen} Volleintrag, den \BibArts\ automatisch\pdfko{1}\
+aus dem 'inneren' Vollzitat in Fu"snote~\ref{InnVoll} erzeugte
+(S.\,\pageref{InnVoll}). In den Listenpunkten "`Aufmarsch"' und
+"`Aufmarschanweisungen"' druckte \BibArts\ die 'inneren'\pdfko{1}\
+Angaben dagegen als Kurzzitat. Damit \BibArts\ dort v\hy\ in k\fhy Angaben
+umwandeln kann, m"ussen Kurztitel in 'inneren' v\fhy Befehlen stets mit
+\verb|\ktit| markiert\pdfko{1.25}\
+sein (nur bei '"au"seren' v\fhy Befehlen ohne \verb|\ktit| gibt es keine Fehlermeldung).
+
+Beim Ausdruck von v\fhy Listen ergeben Zug"ange, die auf v\fhy Befehle mit leeren
+Namensargumenten (\verb|\vqu{}{}{...}|) zur"uckgehen, stets \printonlyvqu{}{}{...}\,.\pdfko{.75}\
+Und trotz \verb|bibsort -k| wird der zweite anonyme Autor nicht als $\sim$ gedruckt.\pdfko{.5}
+
+
+\vspace{2ex}\noindent
+Gelegentlich sollen Teile der Literaturangaben nur in der Liste erscheinen, jedoch
+nicht in der Fu"snote. Die Reihenangaben hier sind nur in obiger Liste:
+
+\vspace{.75ex}
+\Doppelbox
+{...\bs footnote\{\bs vqu \{Karl\}\{Marx\}
+ \\ \b{\b{\{}}Das \bs ktit\{Kapital\%
+ \\ \ \bs onlyhere\{\string~I\}\}\%
+ \\ \ \bs onlyout \{. Kritik der
+ \\ \ \ politischen "Okonomie,
+ \\ \ \ erster Band; das ist
+ \\ \ \ Bd.\bs,23 (1962) von:\}%
+ \\ \ \bs onlyhere\{, in:\}
+ \\ \ \bs xvqu [m]\{Karl\}\{Marx\}
+ \\ \ \ *\{\bs vauthor\{Friedrich\}\{Engels\}\}
+ \\ \ \ \b{\{}\bs ktit\{Werke\},
+ \\ \ \ \ \bs onlyout \{hrsg. vom Institut
+ \\ \ \ \ \ f"ur Marxismus-Leninismus
+ \\ \ \ \ \ beim ZK der SED, 40\string~Bde.
+ \\ \ \ \ \ Berlin 1958--1971\}\%
+ \\ \ \ \ \bs onlyhere\{Berlin 1962\}\b{\}}\b{\b{\}}}[49].\}
+ \\ \
+ \\ ...\bs footnote\{\bs kqu\{Marx\}
+ \\ \ \ \{Kapital\bs onlyhere\{\string~I\}\}[49].\}
+}
+{...\footnote{\vqu {Karl}{Marx}
+ {\onlyhere{~}Das \ktit{Kapital%
+ \onlyhere{~I}}%
+ \onlyout {.
+ Kritik der politischen "Okonomie, erster Band;
+ das ist Bd.\,23 (1962) von:}%
+ \onlyhere{, in:}
+ \xvqu [m]{Karl}{Marx}
+ *{\vauthor{Friedrich}{Engels}}
+ {\ktit{Werke}, \onlyout {hrsg.\ vom Institut f"ur
+ Marxismus-Leninismus beim ZK der SED, 40~Bde.\
+ Berlin 1958--1971}%
+ \onlyhere{Berlin 1962}}}[49].\balabel{ders}}
+
+ ...\footnote{\kqu{Marx} {Kapital\onlyhere{~I}}[49].\label{I}}
+}
+
+\vspace{.75ex}\noindent
+Das Argument von \verb|\onlyhere| wird nur in
+Haupttext oder Fu"snote, das Argument von \verb|\onlyout|
+nur in den Listen ausgedruckt. Im Beispiel steht von der
+"au"seren Angabe die Nummer~("`I"') in der Fu"snote und statt
+dessen eine genauere Angabe zum Band auf der Liste. Von
+der inneren Angabe wurde die Institution der Herausgeber
+nur auf der Liste (ganz unten) ausgedruckt.\kern-1pt\footnote{Falls
+Fu"snote~\ref{I} \texttt{\bs kqu\{Marx\}\{Kapital\string~I\}}
+enthielte, w"urde dort auch \textsc{ebd.} gesetzt; Ziel war
+aber, im Kurzzitateverzeichnis S.\,\pageref{vkc} nur
+\textit{einen} Eintrag \textsc{Marx}: Kapital [Q] f"ur alle
+Teilb"ande des "`Kapital"' zu bekommen.}\pdfko{.5}
+
+Ein Vergleich mit der Liste auf der Vorseite zeigt, dass das
+\verb|[m]| nach dem\pdfko{1}\
+inneren \verb|\xvqu|\hy Befehl
+\textsc{ders.\baslash Engels} erzeugte \baref[Eintrag von]{ders}.
+
+Neben der Markierung von Text in \BibArts\hy Befehlen mit
+\verb|\onlyhere| und\pdfko{1}\
+\verb|\onlyout| gibt es eine "altere M"oglichkeit,
+unterschiedliche Eintr"age in Text und Liste zu erzeugen: \BibArts\hy
+Hauptbefehle (S.\,\pageref{Hauptbefehle}) lassen sich aufsplitten in
+eine printonly- und eine addto\hy Komponente, also in die
+Aufgabenteile 'Schreibe an Ort und Stelle' und 'Schreibe in die Liste'.
+\label{printonly} \verb|\vqu| beispielsweise l"asst\pdfko{1}\
+sich durch \verb|\printonlyvqu| plus \verb|\addtovqu| ersetzen. Die
+Syntax ist identisch.
+
+\Doppelbox
+{...\bs footnote\{
+ \\ \ \bs addtovqu\{Carl von\}\{Clausewitz\}
+ \\ \ \ \b{\b{\{}}\bs ktit\{Strategie\}. Hrsg. von
+ \\ \ \ \ \bs vauthor\{Eberhard\}\{Kessel\},
+ \\ \ \ \ Hamburg 1937\b{\b{\}}}\%
+ \\[.2ex] \ \bs printonlyvqu\{Carl von\}
+ \\ \ \ \ \ \{Clausewitz\}
+ \\ \ \ \b{\{}\bs ktit\{Strategie\},
+ \\ \ \ \ Hamburg 1937\b{\}}[58].\}
+}
+{Der Herausgeber Eberhard Kessel erscheint
+ nur auf der Liste der gedruckten Quellen,
+ aber nicht in der Fu"snote.\footnote{
+ \addtovqu{Carl von}{Clausewitz}
+ {\ktit{Strategie}. Hrsg.\ von
+ \vauthor{Eberhard}{Kessel},
+ Hamburg 1937}%
+ \printonlyvqu{Carl von}{Clausewitz}
+ {\ktit{Strategie},
+ Hamburg 1937}[58].}
+}
+
+\noindent
+Da \textit{in} addto\hy Komponenten \textit{innere Befehle} nicht abgearbeitet
+werden, m"ussen solche Komponenten au"serhalb stehen.
+\verb|\onlyhere| und \verb|\onlyout| sind also zu bevorzugen.
+Weiter lassen sich innere v\hy\ und k\fhy Befehle so ganz vermeiden:
+
+\Doppelbox
+{\vspace{.3em}
+ \bs vqu \{Karl\} \{Marx\}
+ \\ \b{\{}Das \bs ktit\{Kapital\}. Kritik der
+ \\ \ politischen "Okonomie, erster
+ \\ \ Band; das ist Bd.\bs,23 (1962)
+ \\ \ von: \bs midkauthor\{ders.\}
+ \\ \ \bs ntvauthor\{Friedrich\}\{Engels\}
+ \\ \ Werke,
+ \\ \ \bs ersch\string|40\string|\{Berlin\}\{1958-{}-1971\}\b{\}}
+ \vspace{.2em}
+}
+{\footnotesize\notktitaddtok
+ \texttt{\%HIER nicht in Listen "ubernommen\%}
+ \\[.5ex] \printonlyvqu {Karl} {Marx} {Das \ktit{Kapital}. Kritik der politischen
+ "Okonomie, erster Band; das ist Bd.\,23 (1962) von:
+ \midkauthor{ders.} \ntvauthor{Friedrich}{Engels}
+ Werke,
+ \ersch|40|{Berlin}{1958--1971}}
+}\label{ntvauthor}%
+
+\vspace{.5ex}\noindent
+Dies leitet "uber zur \textbf{Umdefinition vorgefertigter Textelemente}:
+\BibArts\ l"asst gro"se Freiheiten bei der Wahl von Zitierkonventionen.
+Die Schr"agstiche definiert \verb|\nsep|, \label{nsep1} das seinerseits \verb|\baslash|
+('\baslash') ausf"uhrt. mid\hy Befehle und\pdfko{1}\
+die Sternargumente von
+x\fhy Befehlen nutzen ihn. \verb*|\renewcommand{\nsep}{, }|\pdfko{.75}\
+w"urde Komma statt Schr"agstrich zwischen Namen drucken. Dies kann
+auch lokal geschehen: Die jeweils aktuelle Definition von \verb|\nsep| reist
+\label{Ausreise} mit jedem v- und k\fhy Zugang \textit{separat} in die Listen
+und wird dort reproduziert. Die Voreinstellung l"asst sich mit
+\verb|\renewcommand{\nsep}{\baslash}| wiederherstellen.
+
+Ein weiterer Separator, \verb|\ntsep|, \label{ntsepA} der zwischen Name und
+Titel '\printntsep' druckt,\pdfko{.5}\
+sollte dagegen nur im Dokumentenvorspann ge"andert werden.
+Ausgef"uhrt wird \verb|\ntsep| von v- und k\fhy Befehlen
+sowie \verb|\ntvauthor| und \verb|\ntkauthor|. Gelegentlich
+ist ein lokal auf den \textit{Ausdruck ganzer Listen}
+beschr"anktes "Andern\pdfko{1.125}\
+von \verb|\ntsep| sinnvoll und k"onnte etwa
+\verb*|\renewcommand{\ntsep}{, }| lauten.
+
+Im letzten Beispiel wurde auch \verb!\ersch|40|{Berlin}{1958--1971}! \label{ersch}
+verwendet, was ausgedruckt ergibt:\hspace{.1em} {\small \ersch|40|{Berlin}{1958--1971}}\kern.1em.
+Dabei ist \verb!|40|! optional. Ein normales Buch kann \textit{am Ende} des
+letztes Arguments eines v\fhy Befehls stets etwas stehen haben wie\hspace{.1em}
+\verb!\ersch{Berlin}{2003}!\hspace{.2em} $-$ das ergibt:\hspace{.1em} {\small \ersch{Berlin}{2003}} $-$\,;
+oder auch\hspace{.1em} \verb!\ersch[2]{Berlin}{2003}!\,, was\hspace{.1em} {\small \ersch[2]{Berlin}{2003}}\hspace{.1em}
+ergibt. Und\hspace{.1em} \verb!\ersch{}{}!\hspace{.1em} druckt\hspace{.1em}
+{\small \ersch{}{}}\hspace{.1em} $-$ also: ohne Ort, ohne
+Jahr. Nach\hspace{.1em} \verb|\exponenteditionnumber|\hspace{.1em} druckt
+\verb!\ersch|5|[2]{Mainz}{2008}! aus:\hspace{.1em} {\small \exponenteditionnumber
+\ersch|5|[2]{Mainz}{2008}}\hspace{.1em} (Auf"|lageexponent). Das sonst verwendete
+{\small `\gerscheditionname'}\,, definiert als\hspace{.2em}
+\verb|{\teskip Auf{\kern.03em}l.,}|\,, kann dudengerecht ge"andert werden in
+{\small \renewcommand{\gerscheditionname}{\teskip Aufl.,} `\gerscheditionname'}\hspace{.2em}
+mittels\hspace{.2em} \verb+\renewcommand{\gerscheditionname}{\teskip Aufl.,}+\,.
+%% ohne Ligatur sagt: Duden S.96 %%
+
+
+\vspace{1.25ex}\label{female}\noindent
+Falls in den \textit{v\fhy Listen bei Autorwiederholung} \textsc{dies.}
+oder \textsc{ders.} statt $\sim$ stehen soll, k"onnen Sie \verb|\female|
+bzw.\ \verb|\male| in die v-Befehle zu Anfang der Vornamensargumente
+tippen. Beispiel: \verb|\vqu{\male Karl}{Marx}{|...\verb|}| Das muss $-$\,einmal
+etwa f"ur die vli-Liste angefangen\,$-$ dann aber in jedem vli-Befehl stehen
+(ausgenommen anonyme Autoren \verb|\vli{}{}{|...\verb|}|): Nur so wird w\kern-.1em/m von
+\hspace{.2em}\verb|bibsort -k|\hspace{.2em} richtig zugeordnet (gleiche Namen
+gelten auch dann als gleich, wenn \verb|\female| oder \verb|\male| vergessen
+wird; evtl.\ gilt dann das Geschlecht der vorausgehenden Person).
+Sind dann auch alle Koautoren gleich, wird automatisch \textsc{diesn.}
+f"ur 'Dieselben' gesetzt. Falls nur die ersten von mehreren Koautoren gleich sind,
+wird f"ur \textit{die} weiterhin {\small$\sim$} oder {\small$\sim$\baslash$\sim$}
+gesetzt.\pdfko{.5}
+
+\vspace{.675ex}\noindent
+Um den \textit{Text} zu ver"andern (\textit{nicht die} \textsc{schrift}\ko\textit{!}), k"onnen
+\verb|\geademname| (f"ur \textsc{die"-selbe}),
+ \verb|\gidemname| (\textsc{der"-selbe}) und
+\verb|\giidemname| (\textsc{die"-selben})
+mit \verb|\renewcommand| ver"andert werden. Diese Definitionen bestimmen auch,
+was von \verb|[f]|, \verb|[m]| und \verb|[p{}]| ausgedruckt wird (Schalter von v- und k\fhy Befehlen).
+
+
+\vspace{1.25ex}\noindent
+Dagegen erfolgt ein \textit{Umstellen von \textsc{ebd.}} mit \label{setibidem}
+\verb|\setibidem{g}{ebenda}{}| in\pdfko{1.25}\
+\textsc{ebenda}. Die Voreinstellung ist
+\verb|\setibidem{g}{ebd\kern -0.07em}{.}| in\pdfko{1.25}\
+\verb|bibarts.sty|. Das dritte
+Argument kann nur entweder leer sein oder einen Punkt enthalten; es dient
+dazu, \BibArts\ mitzuteilen, wie beim automatischen\pdfko{.5}\
+\textsc{ebd.}\hy Setzen mit
+einem nach dem k\fhy Befehl stehenden Punkt umgegangen werden soll (um
+\textsc{ebd.}.\ zu vermeiden). Nur hier ist \verb|\renewcommand| verboten!\pdfko{1.25}
+
+
+\vspace{1.25ex}\noindent
+Die Schrift, in der \textit{Autoren\hy Nachnamen} gesetzt sind, ist \verb|\authoremph|.
+Mit\pdfko{1.25}\
+\verb|\renewcommand{\authoremph}{\upshape}| lie"se sich die voreingestellte
+Hervorhebung von \textsc{Nachnamen} beim Ausdruck von v- und k\fhy Befehlen
+aufheben. Alternativ kann \verb|\stressing| \textit{ein} Schriftbefehl
+ohne~\kern-.15em\verb|\| "ubergeben werden: \textit{Etwa} \verb|\stressing{underbar}|
+\textit{initiiert
+{\itshape\notprinthints\stressing{underbar}\printonlykli{Meyer}{}} auch
+in kursivem Umfeld.}
+
+
+\vfill\noindent{\sffamily
+Sprachabh"angig vorgefertigte Textelemente folgen in Kapitel~\ref{SprachSep}
+unten ab S.\,\pageref{SprachSep};}
+\\[.25ex]{\sffamily
+einstellbare Texthervorhebungen liste ich in Kapitel~\ref{hervor}
+unten S.\,\pageref{hervor} auf;}
+\\[.25ex]{\sffamily
+und der Literaturtyp \textit{Zeitschriften} kommt gleich in
+Kapitel~\ref{per} unten ab S.\,\pageref{per}.}%
+
+
+\newpage
+Da das \textbf{\textsc{ders.}\hy Setzen} mit \verb|[f]|, \verb|[m]|
+oder \verb|[p{}]| fehleranf"allig ist, falls Textteile im
+Texteditor ausgeschnitten und verschoben werden, gibt es
+eine weitere \textbf{Kontrollm"oglichkeit}: "Uber den \LaTeX\hy
+Bildschirmausdruck hinaus \baref{DERS} k"onnen Sie sich testweise
+im Ausdruck selbst informieren lassen:
+
+\vspace{1ex}
+\Doppelbox
+{\bs writeidemwarnings
+ \\ \ \bs footnote\{\bs kqu[m]\{Clausewitz\}
+ \\ \ \ \ \{Strategie\}[61] und
+ \\ \ \ \bs kqu\{Clausewitz\}
+ \\ \ \ \ \{Vom Kriege\}[62].\}
+ \\[1ex] \ \bs footnote\{\bs kqu[m]\{Clausewitz\}
+ \\ \ \ \{Strategie\}[63].\}
+ \\[1ex] \ \bs footnote\{\bs kqu[m]\{Clausewitz\}
+ \\ \ \ \ \{Vom Kriege\}[64] und
+ \\ \ \ \bs kli[m]\{Luhmann\}\{Soziale
+ \\ \ \ \ Systeme\}[65].\}
+ \\[1ex] \ \bs footnote\{\bs kqu[m]\{Clausewitz\}
+ \\ \ \ \{Strategie\}[66].\}
+ \\[1ex] \ \bs footnote\{\bs vqu[m]\{Karl\}\{Marx\}
+ \\ \ \ \b{\b{\{}}Das
+ \\ \ \ \ \bs ktit\{Kapital\bs onlyhere\{\string~II\}\}\%
+ \\ \ \ \ \bs onlyout\{. Kritik der
+ \\ \ \ \ \ politischen "Okonomie,
+ \\ \ \ \ \ zweiter Band; das ist
+ \\ \ \ \ \ Bd.\bs,24 (1962)
+ \\ \ \ \ \ von:\}\bs onlyhere\{, in:\}
+ \\ \ \ \ \bs xvqu \{Karl\}\{Marx\}
+ \\ \ \ \ \ *\{\bs vauthor
+ \\ \ \ \ \ \ \ \ \{Friedrich\}\{Engels\}\}
+ \\ \ \ \ \ \b{\{}\bs ktit\{Werke\},
+ \\ \ \ \ \ \ \bs onlyout\{hrsg.\ vom Institut
+ \\ \ \ \ \ \ \ f"ur Marxismus-Leninismus
+ \\ \ \ \ \ \ \ beim ZK der SED, 40\string~Bde.
+ \\ \ \ \ \ \ \ Berlin 1958-{}-1971\}\%
+ \\ \ \ \ \ \ \bs onlyhere\{Berlin
+ \\ \ \ \ \ \ \ 1962\}\b{\}}\b{\b{\}}}[67].\}
+}
+{\writeidemwarnings
+ \footnote{\kqu[m]{Clausewitz} {Strategie}[61] und
+ \kqu{Clausewitz} {Vom Kriege}[62].}
+ \\[8.25ex]
+ \footnote{\kqu[m]{Clausewitz} {Strategie}[63].}
+ \\[3ex]
+ \footnote{\kqu[m]{Clausewitz} {Vom Kriege}[64] und
+ \kli[m]{Luhmann}{Soziale Systeme}[65].}
+ \\[8.25ex]
+ \footnote{\kqu[m]{Clausewitz} {Strategie}[66].}
+ \\[3ex]
+ \footnote{\vqu[m]{Karl}{Marx} {Das
+ \ktit{Kapital\onlyhere{~II}}%
+ \onlyout{. Kritik der politischen
+ "Okonomie, zweiter Band; das ist Bd.\,24 (1962)
+ von:}\onlyhere{, in:} \xvqu {Karl}{Marx}
+ *{\vauthor{Friedrich}{Engels}} {\ktit{Werke}, \onlyout{hrsg.\
+ vom Institut f"ur Marxismus-Leninismus beim ZK der SED,
+ 40~Bde.\ Berlin 1958--1971}%
+ \onlyhere{Berlin 1962}}}[67].
+ \\
+ \texttt{\% Vgl.\ DERS. in der Liste \baref[]{printnumvqu}}
+ }
+}
+
+\vspace{1ex}\noindent
+Nach Setzen von \verb|\writeidemwarnings| druckten v- und k\fhy Befehle
+dabei in Klammern deren Nachnamensargument hinter folgenden Symbolen aus:
+
+ \vspace{2ex}\noindent
+ {\small\begin{tabular}{cl}%
+ $\bullet$ & \textsc{\footnotesize DERS.} \sffamily fehlt m"oglicherweise (gleiche Nachnamen registriert). \\
+ $\heartsuit$ & \textsc{\footnotesize DERS.} \sffamily ist offenbar richtig gesetzt (gleiche Nachnamen registriert). \\
+ $\nabla$ & \textsc{\footnotesize DERS.} \sffamily wegen fehlender Autoren in vorausgehender Fu"snote unberechtigt. \\
+ $\spadesuit$ & \textsc{\footnotesize DERS.} \sffamily "uberschreibt einen Namen, der nicht der vorausgehende ist. \\
+ $\clubsuit$ & \textsc{\footnotesize DERS.} \sffamily steht irref"uhrenderweise nach einer Fu"snote mit mehreren Autoren. \\
+ \end{tabular}}
+
+\vspace{2ex}\noindent
+\BibArts\ kontrolliert niemals Koautoren. Falls auch die in
+aufeinanderfolgenden Fu"snoten gleich sind, lassen sie sich zwar durch
+Ersatzworte ersetzen, wozu \BibArts\ bei Anwenderfehlern aber nicht warnt.
+Hier ein Beispiel ohne Fehler:
+
+\Doppelbox
+{\vspace{1.25ex}%
+ \bs footnote\{.... \bs xkli
+ \\ \ \{Maier\} *\H{\{}\bs midkauthor\{M"uller\}
+ \\ \ \ \ \bs kauthor\{Huber\}\H{\}} \{Geld\}[i].\}
+ \\[1ex] \bs footnote\{\bs xkli[p\{\}]
+ \\ \ \{Maier\} *\{\bs midkauthor\{M"uller\}
+ \\ \ \ \ \bs kauthor\{Huber\}\} \{Haus\}[ii].\}
+ \\[1ex] \bs footnote\{\bs xkli
+ \\ \ [p\b{\b{\{}} ersten beiden und
+ \\ \ \ \ \ \ \bs kauthor\{Schmidt\} \bs editors\b{\b{\}}}]
+ \\ \ \{Maier\} *\b{\{}\bs midkauthor\{M"uller\}
+ \\ \ \ \ \ \ \bs kauthor\{Schmidt\} \bs editors\b{\}}
+ \\ \ \{Vorsorge\}[iii].\}
+ \vspace{1ex}
+}
+{\texttt{\% HIER nicht in den Listen \%}
+ \\[3ex]
+ \footnote{Lokal erst \xprintonlykli
+ {Maier} *{\midkauthor{M"uller} \kauthor{Huber}} {Geld}[i].}
+
+ \footnote{\xprintonlykli[p{}]
+ {Maier} *{\midkauthor{M"uller} \kauthor{Huber}} {Haus}[ii].}
+
+ \footnote{\xprintonlykli[p{ ersten beiden und \kauthor{Schmidt} \editors}]
+ {Maier} *{\midkauthor{M"uller} \kauthor{Schmidt} \editors} {Vorsorge}[iii].\label{wieder}}
+}
+
+
+\noindent\label{p}%
+Nur mit \verb|[p{}]| werden alle Namen mit \textsc{diesn.}\ko\ (\verb|\giidemname|)
+"uberschrieben $-$ und nicht wie mit \verb|[p]|
+nur der erste Name! Falls mehrere, aber eben
+nicht alle Autoren \textit{dieselben} sind, k"onnen Sie die zuviel mit
+\textsc{diesn.} "uberschriebenen wie oben in Anm.\,\ref{wieder} gezeigt in
+\verb|[p{|\textit{xx}\verb|}]| wieder nennen. Auch Attribute wie \verb|\editors|
+w"aren in \textit{xx} zu nennen. (Bei der v\fhy Liste, die\hspace{.2em}
+\verb|bibsort -k|\hspace{.2em} erzeugt, werden\hspace{.2em} $\sim$\baslash$\sim$ \textit{Attribute}\hspace{.2em}
+"ubrigens \textit{aus den Hauptargumenten} "ubernommen.)
+
+Um \textit{richtig sortierte Listen} zu erzeugen, sollten in v-
+und k\fhy Befehlen die 'regul"aren' Namensargumente
+\textit{in jedem Fall} vollst"andig bef"ullt sein (obwohl \textit{die}
+in der Fu"snote gar nicht gedruckt werden, sondern \textsc{ders.} etc.).
+
+\vspace{1.25ex}\noindent
+Dass bei \textit{inneren} v- und k\fhy Befehlen gesetzte Schalter \verb|[f]|,
+\verb|[m]| und \verb|[p{}]| in\pdfko{1}\
+die Listen "ubernommen werden, wurde oben
+beim Ausdruck des Verzeichnisses der gedruckten Quellen anhand des ersten
+Bandes von Marx' Kapital demonstriert. Beim zweiten Band dagegen ist
+der 'innere' Marx nicht mit \verb|[m]| versehen; beim "Ubersetzen der
+\textit{Fu"snote}, aus der der Eintrag herstammt, erscheint die Warnung
+{\footnotesize\texttt{Inner ...vqu-cmd repeats author's lastname}}.
+Falls Sie\pdfko{.5}\ nur dort kein \textsc{ders.} haben wollten, k"onnen
+Sie vor den inneren v- oder k\fhy Befehl \verb|\notwarnsamename|
+setzen, um die Warnung lokal auszuschalten. Beim
+"Ubersetzen der \textit{Listen} erfolgen solche Warnungen "ubrigens niemals.
+
+\vfill\noindent
+Falls Sie \textsc{dies.}, \textsc{ders.} und \textsc{diesn.} nicht
+verwenden wollen, k"onnen Sie alle diesbez"uglichen Warnungen auch
+mit \verb|\notwarnsamename| im Vorspann Ihres \LaTeX\hy Textes
+global ausschalten. Das unterbindet bei der \LaTeX\hy "Ubersetzung die
+Bildschirmwarnung {\small\texttt{cmd repeats (first) author's
+lastname}} samt allen weiteren Meldungen f"ur die eben
+aufgelisteten Fehlertypen. \textit{Zus"atzlich} wird
+\verb|\writeidemwarnings| unwirksam; \BibArts\ druckt also nicht
+mehr {\small$\bullet\heartsuit\nabla\spadesuit\clubsuit$}\,.
+
+
+\newpage\noindent
+Zum \textbf{Zitieren mehrb"andiger Werke} gibt es einen Speicher
+f"ur Bandnummern. Das optionale Argument \verb+|+\textit{Band}\verb+|+
+zur \textsc{ebd}.\hy Setzung steht ohne Leerzeichen vor dem
+Seitenargument (\verb+\ersch|+\textit{Band}\verb+|+... bef"ullt den Speicher nicht):
+
+\label{Reinhard}%
+\Doppelbox
+{\bs footnote\{... \bs vli\{Wolfgang\}
+ \\ \ \{Reinhard\} \b{\b{\{}}Geschichte der
+ \\ \ \ \bs ktit\b{\{}\bs onlyvoll\{e\}\%
+ \\ \ \ \ \ \ \ \ \ \bs onlykurz\{E\}urop"aische\%
+ \\ \ \ \ \ \ \ \ \ \bs onlyvoll\{n\} Expansion\b{\}},
+ \\ \ \ \bs ersch\string|4\string|\{Stuttgart\}
+ \\ \ \ \ \ \ \ \ \ \ \ \{1983-{}-1990\}\b{\b{\}}}\string|2\string|[98].\}
+ \\[1ex] \bs footnote\{\bs kli \{Reinhard\} \{Europ"aische Expansion\}\string|2\string|[98].\}
+ \\[1ex] \bs footnote\{\bs kli \{Reinhard\} \{Europ"aische Expansion\}\string|3\string|[1].\}
+}
+{\vspace{1.5ex}%
+ \footnote{Band aus Reihe: \notktitaddtok\printonlyvli{Wolfgang} {Reinhard} {Geschichte der
+ \ktit{\onlyvoll{e}%
+ \onlykurz{E}urop"aische%
+ \onlyvoll{n} Expansion},
+ \ersch|4|{Stuttgart} {1983--1990}}|2|[98].\label{Ranf}}
+
+ \footnote{\printonlykli {Reinhard} {Europ"aische Expansion}|2|[98].}
+
+ \footnote{\printonlykli {Reinhard} {Europ"aische Expansion}|3|[1].\label{Rend}}
+}
+
+\noindent
+St"unden hier \verb|\vli| und \verb|\kli| statt der
+tats"achlich verwendeten printonly-Befehle, ginge ins Kurzzitateverzeichnis
+\textsc{Reinhard}: Europ"aische Expansion [L] \hspace{.5em}
+\textsf{\pageref{Ranf}$^{\ref{Ranf}-\ref{Rend}}$}
+und ins Literaturverzeichnis:
+\textsc{Reinhard}, Wolfgang: Geschichte der europ"aischen Expansion,
+4 Bde., Stuttgart 1983--1990.
+
+\vspace{.1ex}
+W"urde die Bandangabe \verb+|3|+ \hspace{.1em}(oder Nummer \hspace{-.3em}\verb+_n_+)\hspace{.1em} in
+Fu"snote~\ref{Rend} fehlen, dann erschiene w"ahrend der \LaTeX\hy "Ubersetzung die
+Fehlermeldung:\footnote{Eine Warnung bei 'innerer' \textsc{ebd.}\hy Setzung erfolgt nur,
+wenn \textit{innen} Band- bzw.\ Seitenangaben fehlen
+\textit{und} zuvor (auch) entsprechende '"au"sere' Angaben standen. Sie erhalten\pdfko{.5}\
+also \textsc{ebd.}, aber u.\,U. keine Warnung, wenn Sie innere
+Bandangaben zu tippen vergessen!}
+
+\vspace{.5ex}\noindent
+\label{pervol}%
+{\small\texttt{ !~Same title, before with :\{pervol\}\{2\}:, has now no no./vol number.}}
+
+\vspace{.75ex}\noindent
+Dagegen d"urfte die \verb|[1]| nach der \verb+|3|+ wegbleiben, weil es
+sich um einen anderen Band als in der vorausgehenden
+Fu"snote handelt. $-$ Im Falle von \textbf{mehrb"andigen Herausgeberwerken}
+sind auch 'innere' Bandangaben erlaubt:
+
+\vspace{-.2ex}%
+\Doppelbox
+{\vspace{1.75ex}\bs footnote\{\bs vli \{\}\{\}
+ \\ \ \b{\{}\bs ktit\{Au"sen~1\}, in:
+ \\ \ \ \bs vli \{\}\{\} \b{\b{\{}}\bs ktit\{Innen\}\b{\b{\}}}\%
+ \\ \ \ \ \ \ \ \string|12\string|[100-199]\b{\}}*[111].\}
+ \\[.5ex] \bs footnote\{\bs kli\{\}\{Au"sen~1\}[111].\}
+ \\[.5ex] \bs footnote\{... \bs vli\{\}\{\}
+ \\ \ \H{\{}\bs ktit\{Au"sen~2\}, in: \bs kli \{\}
+ \\ \ \ \ \{Innen\}\string|12\string|[200-299]\H{\}}*[222].\}
+}
+{\footnote{\notktitaddtok\printonlyvli {}{}%
+ {\ktit{Au"sen~1}, in:
+ \printonlyvli {}{}
+ {\ktit{Innen}}%
+ |12|[100-199]}*[111].}
+ \footnote{\printonlykli{}{Au"sen~1}[111].}
+ \footnote{Gleiche Reihe: \notktitaddtok\printonlyvli{}{}
+ {\ktit {Au"sen~2}, in:
+ \printonlykli {} {Innen}|12|[200-299]}*[222].}
+}
+
+\vspace{-.2ex}\noindent
+\BibArts\ pr"uft nicht, ob \verb|*[|\textit{Seite}\verb|]| innerhalb des
+genannten Seitenintervalls liegt.
+
+\newpage\noindent
+Wie sind \textbf{Werke} in die Listen aufzunehmen, \textbf{die im Text nie
+verwendet wurden}? Solche Werke d"urfen auf den num\hy Listen nicht mit den
+Seiten\fhy/""Fu"snotennummern der Stelle gedruckt werden, an der die Angaben
+im \hspace{-.2em}\verb|.tex|\hy File stehen; normale addto\hy Befehle sind also
+ungeeignet. Stattdessen gibt es die \balabel{unused} \verb|{unused}|\hy
+Umgebung. Dort eingef"ugte \BibArts\hy Hauptbefehle bef"ullen nur\pdfko{.25}\
+die Listen, sind aber im DVI\fhy\slash PDF\hy File unsichtbar. Ein Beispiel:
+
+\vspace{-.25ex}
+{\small\begin{verbatim}
+ \begin{unused}
+ \vli{James M.}{McPherson}{\ktit{Battle Cry of Freedom}. The
+ American Civil War, Oxford 1988}[vi]
+ \end{unused}
+\end{verbatim}}
+
+\vspace{-.25ex}
+%\begin{unused}
+%\vli{James M.}{McPherson}{\ktit{Battle Cry of Freedom}. The
+%American Civil War, Oxford 1988}[vi]
+%\end{unused}
+%%
+\noindent Seitenzahlen in der Literaturangabe wie hier \verb|[vi]|
+werden ignoriert. Somit lassen sich Literaturangaben
+w"ahrend des Schreibens einfacher von einer Fu"snote in die
+\verb|{unused}|\hy Umgebung verschieben. In diesen Umgebungen d"urfen Sie
+alle \BibArts\hy Hauptbefehle wie etwa \verb|\vli| und \verb|\vqu| sowie
+die unten Seite~\pageref{per} und \pageref{archivquellen} eingef"uhrten
+Befehle \verb|\per| und \verb|\arq| nutzen; dazwischen d"urfen
+Leerzeichen und \textit{einfache} Zeilenumbr"uche stehen.
+Au"serdem sind addto\hy Befehle erlaubt; tats"achlich sieht \BibArts\
+\verb|\vli|\hy Befehle nun als \verb|\addtovli|\hy Befehle unbestimmter Herkunft.
+\verb|\printonlyvli| hat in \verb|{unused}|\hy Umgebungen nat"urlich nichts
+zu suchen. Ganz am Ende Ihrer\hspace{-.2em} \verb|.tex|\hy Datei
+$-$ insbesondere nach Ende einer \verb|twocolum|\fhy Umgebung $-$
+sind \verb|{unused}|\hy Umgebungen schlecht platziert, da sie dort nicht
+mehr umgesetzt werden und deshalb in die Listen nichts geschrieben w"urde.
+Ein guter Platz zum Sammeln ist dagegen \textit{vor} dem zugeh"origen
+Listenausdruckbefehl.
+
+\vspace{2ex}\noindent
+In \verb|{unused}|\hy Umgebungen gilt "ahnliches wie f"ur addto\fhy
+Befehle au"serhalb:
+
+\vspace{1ex}\noindent
+\parbox{1.8em}{(1)}Die dort in v\fhy Befehlen mit \verb|\ktit| markierten
+Kurztitel bewirken keinen Eintrag ins Kurzzitateverzeichnis. Falls
+Sie einen Text schreiben wollen, in welchem von der ersten Fu"snote an
+kurzzitiert wird, m"ussten Sie ggf.\ gew"unschte Eintr"age f"ur das
+Kurzzitateverzeichnis in der Umgebung mit Separaten \verb|\kli|\hy\ und
+\verb|\kqu|\hy Eintr"agen selbst erzeugen. (Im normalen Text
+schreibt das \verb|\ktit| der \verb|\printonlyvli|\hy Komponente den
+Eintrag in die\hspace{-.2em} \verb|.vkc|\hy Datei; das \verb|\ktit| der
+\verb|\addtovli|\hy Komponente w"urde ebenfalls 'verschluckt'.)
+
+\vspace{1ex}\noindent
+\parbox{1.8em}{(2)}In der \verb|{unused}|\hy Umgebung erzeugen
+\textit{innere v\fhy Befehle} keinen eigenen\pdfko{.25}\
+Volleintrag auf den v\fhy Listen.
+\BibArts\ erzeugt nur einen Eintrag in den v\fhy Listen, wobei es
+innere v\fhy Eintr"age als Kurzzitat ausdruckt. Innere v\fhy Befehle
+m"ussen deshalb kopiert und nochmals separat in die Umgebung
+eingef"ugt werden.
+
+
+\vfill\noindent
+\textsf{Bevor ich Zeitschriftenbelege vorstelle, kommt nun erst das w"ortliche
+Zitieren.}
+
+
+\newpage
+\section{W"ortliche Zitate in verschiedenen Sprachen}\label{Sect2}
+
+\BibArts\ stellt eine Umgebung bereit, um l"angere w"ortliche Zitate
+zur besseren Erkennbarkeit vom restlichen Text deutlich abgesetzt
+ausdrucken zu k"onnen:\vspace{-.4ex}
+
+\Doppelbox
+{\ \ ... (hier deutsch):
+ \\[.5ex] \bs begin\{originalquote\}
+ \\[.35ex] \ \ \string"\string`Der Krieg entsteht
+ \\ \ \ nicht urpl"otzlich; seine
+ \\ \ \ Verbreitung ist nicht das
+ \\ \ \ Werk eines Augenblicks,
+ \\[.125ex] \ \ [...].\string"\string'\bs footnote \b{\{}
+ \\[.125ex] \ \ \ \ \bs kqu\{Clausewitz\}
+ \\[.2ex] \ \ \ \ \ \ \ \ \{Vom Kriege\}[22].\b{\}}
+ \\[.25ex] \bs end\{originalquote\}
+}
+{\renewcommand{\originalquotetype}{\footnotesize}%
+ Dieses Zitat hat den Trennsatz des umgebenden Textes (hier deutsch):
+ \begin{originalquote}
+ "`Der Krieg entsteht nicht urpl"otzlich; seine Verbreitung
+ ist nicht das Werk eines Augen"-blicks,
+ [...]."'\footnote {
+ \kqu{Clausewitz} {Vom Kriege}[22].}
+ \end{originalquote}
+}
+
+\vspace{.25ex}\noindent
+Gr"unde f"ur die neue Umgebung: Die \LaTeX\hy Umgebung \verb|{quote}| setzt den
+vertikalen Abstand zum Fu"snotenbereich viel zu klein, wenn mitten in den
+"ubersetzten Zitatblock ein Seitenumbruch f"allt. Damit die
+\verb|{originalquote}|\hy Umgebung reagieren kann, versieht \verb|bibarts.sty|
+den bestehenden \LaTeX\hy Befehl\pdfko{1.25}\
+\verb|\footnoterule| mit einem Zusatz.\footnote{
+Au"serdem wird der \textit{Fu"snotenbereich} an den Fu"s der Seite geschoben
+durch Einf"ugen von zus"atzlichem vertikalem Zwischenraum.
+Deshalb sollten Sie in Texten mit \texttt{\{originalquote\}} den
+\LaTeX\hy Befehl \texttt{\bs flushbottom} nicht verwenden. $-$
+\BibArts\ setzte den \textit{Abstand zwischen Fu"snoten} in Version 2.0
+auf \texttt{2ex}. Falls Sie dies weiterhin wollen, m"ussen Sie nun
+selbst \texttt{\bs setlength\{\bs footnotesep\}\{2ex\}} im Vorspann definieren.}
+Wenn Sie \verb|\footnoterule| anschlie"send\pdfko{1}\
+einfach umdefinieren, dann schalten Sie diese Eigenschaft
+aus.\footnote{Um die Dicke des Strichs vor dem Fu"snotenbereich zu
+"andern, m"ussen Sie unter \BibArts\pdfko{1.25}\
+den Befehl \texttt{\bs fnrbasave} statt
+lehrbuchgem"a"s \texttt{\bs footnoterule} "andern, beispielsweise: \\[.25ex]
+\hspace*{2em}{\ttfamily
+ \bs renewcommand\{\bs fnrbasave\}\{\bs noindent\bs rule\{5cm\}\{0.5mm\}\bs vspace\{1ex\}\} }}
+
+Ein zweiter Grund f"ur die \verb|{originalquote}|\hy Umgebung betrifft
+den Zeilenumbruch. Geistes- und
+SozialwissenschaftlerInnen zitieren oft in einer von der Basissprache
+ihres Textes abweichenden Sprache. Dann muss zur richtigen Worttrennung
+aber \textit{nur} der Trennsatz umgestellt werden.
+\verb|\selectlanguage|\pdfko{.5}\
+aus \texttt{ngerman.sty} bewirkt aber gleichzeitig,
+dass am Kapitelkopf nach Setzen von
+\verb|{french}| \textit{Chapitre}
+steht und eine Seite \textit{Page} hei"st. \BibArts\ separiert\pdfko{.5}\
+beides (vgl.\ sprachabh"angige Textelemente unten S.\,\pageref{SprachSep}).
+Zur Einstellung des\pdfko{.25}\
+Trennsatzes mit \BibArts\hy Befehlen dienen
+dieselben Schl"usselbegriffe, die Sie\pdfko{.5}\
+auch als Argument f"ur \verb|\selectlanguage| verwenden.
+Folgendes Beispiel ist\pdfko{.5}\
+englisch und druckt das Zitat zudem in Gr"o"se der umgebenden Schrift aus:
+
+
+{\notktitaddtok\renewcommand{\originalquotetype}{}
+ \begin{originalquote}[UKenglish]
+ "`Virginia brought crucial resources to the Confederacy.
+ Her population was the South's largest. Her industrial
+ capacity was nearly as great as that of the seven original
+ Confederate states combined."'\footnote{Auch englische
+ Trennung: \printonlyvli{James M.}{McPherson}{\ktit{Battle
+ Cry of Freedom}. The American Civil War, Oxford 1988}.}
+ \end{originalquote}}
+
+\vspace{-.5ex}\noindent
+Dieses w"ortliche Zitat wurde mit folgendem \LaTeX\hy Code erzeugt:
+
+\vspace{-.75ex}{\small\begin{verbatim}
+ {\renewcommand{\originalquotetype}{} %% Statt \small
+ \begin{originalquote}[UKenglish]
+ "`Virginia brought crucial resources to the Confederacy.
+ Her population was the South's largest. Her industrial
+ capacity was nearly as great as that of the seven original
+ Confederate states combined."'\footnote{Auch englische
+ Trennung: \vli{James M.}{McPherson}{\ktit{Battle Cry of
+ Freedom}. The American Civil War, Oxford 1988}.}
+ \end{originalquote}}
+\end{verbatim}}
+
+
+\vspace{-.5ex}\noindent
+Falls dort {\small\verb|\begin{originalquote}[eglihs]|} st"unde, w"are die
+Fehlermeldung bei der \LaTeX\hy "Ubersetzung:
+
+\vspace{-.5ex}{\scriptsize\begin{verbatim}
+ ** Arg(s) of BibArts' sethyphenation-command: Error around line 1371!
+ You've called \begin{originalquote}[eglihs].
+ <H><return> for immediate help,
+ <return> to continue.
+ ! Language-name `eglihs' is undefined. (Old VALUE remains valid: 42).
+ . . . . . . . . . . . .
+ \errmessage@ba ...
+ \space . . . . . . . . . . . }
+ }
+ l.1145 \begin{originalquote}[eglihs]
+\end{verbatim}}
+
+\vspace{-.75ex}\noindent
+Da oben tats"achlich ein \verb|\printonlyvli|\hy Befehl
+steht, ist eine Besonderheit von \BibArts\ nur
+S.\,\pageref{Trennbeispiel} bei "`Zum Schluss ..."' zu sehen:
+\verb|bibsort| reproduziert den am Zugang g"ultigen Trennsatz
+\textit{beim Listenausdruck}. Bei der \LaTeX\hy "Ubersetzung
+der \textit{Datei mit der erzeugten Liste} kommen Bildschirm\hy
+Meldungen:\label{hyphenation}%
+
+\vspace{-0.5ex}
+{\scriptsize\begin{verbatim}
+ [bibsort] Reproduce hyphenation 67 in line 33 of BibArts file.
+ [bibsort] Reproduce hyphenation 42 in line 43 of BibArts file.
+\end{verbatim}}
+
+\vspace{-0.75ex}\noindent
+Das ist die Trennsatz\hy Umschaltung \textit{vor} dem englischen Listenpunkt
+und das Zur"uckschalten ins Deutsche \textit{dahinter} (42 f"ur Deutsch ist
+versionsabh"angig).
+
+\vspace{1.25ex}\noindent
+Um Trenns"atze $-$ und nur die $-$ auch au"serhalb von \verb|{originalquote}|
+einzustellen, bietet \BibArts\ den weiteren Befehl \verb|\sethyphenation| an.
+Ein deutschsprachiges Wort\footnote{In einem Zitat aus \kqu{Clausewitz}
+{Vom Kriege}[75 (I.6)].} ist unten f"alschlicherweise franz"osisch getrennt.
+Falls Sie diesen Text mit \LaTeX\ "ubersetzen und nicht widers-prechend
+getrennt wird, verf"ugt Ihre \LaTeX\hy Version entweder "uber keinen
+franz"osischen Trennsatz oder reagiert auf Umschaltungen \textit{in}
+Abs"atzen nicht (sondern nur am Absatzkopf):
+
+ \vspace{2ex}%
+ \noindent\hspace{1.9em}\parbox{12.5cm}{\small\ttfamily
+ \string"\string`Ein gro"ser Teil der Nachrichten, die man im Kriege \\
+ bekommt, ist \{\bs sethyphenation\{french\} widersprechend\}, \\
+ ein noch gr"o"serer ist falsch und bei weitem der \\
+ gr"o"ste einer ziemlichen Ungewi"sheit unterworfen.\string"\string'
+ }
+
+ \vspace{2ex}%
+ \noindent\hspace{1.9em}\parbox{12.5cm}{\small
+ "`Ein gro"ser Teil der Nachrichten, die man im Kriege
+ bekommt, ist {\sethyphenation{french} widersprechend},
+ ein noch gr"o"serer ist falsch und bei weitem der
+ gr"o"ste einer ziemlichen Ungewi"sheit unterworfen."'
+ }
+
+\vspace{2.5ex}\noindent
+Die verschiedenen Befehle zur Trennsatz\hy Einstellung sind
+kombinierbar. Falls in einer \verb|{originalquote}|\hy Umgebung
+der Titel des zitierten Werkes eine andere Sprache als das
+w"ortliche Zitat hat, darf \verb|\sethyphenation| am Kopf\pdfko{1.5}\
+der Fu"snote stehen. Falls Sie \verb|\sethyphenation| oder
+\verb|\selectlanguage| zudem \textit{in} den
+\BibArts\hy Argumenten verwenden, ist dies (samt Argument) f"ur die
+Sortierreihenfolge unerheblich. Speziell aber im Nachnamensargument
+von \verb|\vli| und \verb|\kli| sollten Sie solche Befehle wegen der
+\textsc{ebd.}\hy Setzung vermeiden. Wenn Sie in Autorennamen (also)
+\textit{Trennhilfen} nutzen, sollten die bei allen v- und k\fhy Nennungen
+zumindest \textit{dieses einen Werkes} einheitlich gesetzt
+sein.\footnote{Mehrere (ansonsten) zeichengleiche Listenzug"ange,
+bei denen \texttt{\bs sethyphenation} oder\pdfko{.5}\
+\texttt{\bs selectlanguage} mal gesetzt und
+mal vergessen (oder mit verschiedenen Sprachen besetzt)
+wurde, ergeben mehrere Listeneintr"age; uneinheitliche
+Trennhilfen \texttt{\bs-} und \texttt{\dq-} auch.
+$-$ Bei wechselnden Trennhilfen \texttt{\bs-} und \texttt{\dq-} setzt
+\texttt{bibsort\hspace{.3em}-k} \hspace{.2em}das $\sim$
+dagegen richtig.}
+
+\vspace{1.5ex}\noindent
+Nebenbei: Die \verb|{originalquote}|\hy Umgebung und der
+\verb|\sethyphenation|\hy Befehl "andern absichtlich auch das
+\textit{spacing} nicht, weil dies in einem Text durchgehend gleich sein sollte.
+Vgl. unten Kap.\,\ref{nonfrenchspacing} ab S.\,\pageref{nonfrenchspacing} und
+Kap.\,\ref{Punkte} ab S.\,\pageref{Punkte}.
+
+\vspace{1.5ex}\noindent
+\BibArts\ reproduziert dar"uber hinaus den \verb|german.sty|\hy\ bzw.\
+\verb|ngerman.sty|\hy Befehl \verb|\originalTeX| beim Listenausdruck,
+falls ein Eintrag aus einem Umfeld mit ver"andertem \textit{catcode} f"ur \verb|"|
+herstammt. Von den beiden \verb|"a| unten S.\,\pageref{originaltex}
+ist nur eines als "a einsortiert. \verb|\originalTeX| schaltet zudem
+den englischen Trennsatz ein. W"ahrend der "Ubersetzung einer
+\BibArts\hy Liste wird gemeldet:
+
+\vspace{-.75ex}{\scriptsize\begin{verbatim}
+ [bibsort] Set \baoriginalTeX in line 64 of BibArts file.
+ [bibsort] Reproduce hyphenation 255 in line 65 of BibArts file.
+ [bibsort] Set \bagermanTeX in line 75 of BibArts file. (new)
+ [bibsort] Reproduce hyphenation 42 in line 76 of BibArts file.
+\end{verbatim}}
+
+\vspace{-1ex}\noindent
+\verb|\baoriginalTeX| f"uhrt \verb|\originalTeX| aus, \verb|\bagermanTeX|
+f"uhrt selbst"andig \verb|\germanTeX| oder \verb|\ngermanTeX|
+(mit Meldungen \texttt{\footnotesize (old)} oder \texttt{\footnotesize (new)}) aus,
+je nachdem, ob Sie \verb|german.sty|
+oder \verb|ngerman.sty| geladen haben.\footnote{\label{bagermanTeX}Die Zwischenstufe mit
+\texttt{\bs baoriginalTeX} bzw.\ \texttt{\bs bagermanTeX} dient dazu, dass
+Sie mit \texttt{\bs renewcommand} beide Definitionen ausschalten k"onnen,
+falls es in Ihrem Text eine andere Bedeutung hat, wenn sich der
+\textit{catcode} des \texttt{\dq} "andert (vgl.\ unten S.\,\pageref{original} samt Anm.\,\ref{original}).}
+Ganz allgemein kommt \verb|bibarts.sty| klar, falls \verb|~":;!?'`<>|
+\textit{aktive} Zeichen sind, doch "Anderungen \label{catcode}
+des \textit{catcode} reproduziert \verb|bibsort| nur bez"uglich~\verb|"|.
+
+
+
+\section{Formatierungs- und Editionshilfen}\label{Sect3}
+
+Um Datumsangaben gutformatiert drucken zu k"onnen, verf"ugt
+\BibArts\ f"ur das\pdfko{1}\
+Deutsche "uber den Befehl \verb|\te|, der einen Punkt und ein
+kurzes Leerzeichen (ohne Zeilenumbrucherlaubnis) druckt:
+\hspace{.4em}\verb|Der 1\te April| \hspace{.4em}\verb|=>| \hspace{.4em}Der 1\te April.
+
+\vspace{1ex}\noindent
+F"ur englische Texte wird
+\hspace{.1em}\verb|\eordinal{|\textit{arabische Zahl}\verb|}|
+\hspace{.2em}bereitgestellt:
+
+\vspace{.75ex}{\small\noindent
+\verb| \eordinal{1} Assistant => | \eordinal{1} Assistant. \\
+\verb| \eordinal{2} Assistant => | \eordinal{2} Assistant. \\
+\verb| \eordinal{3} Assistant => | \eordinal{3} Assistant. \\
+\verb| \eordinal{4} Assistant => | \eordinal{4} Assistant. \\
+\verb| \eordinal{11} Assistant => | \eordinal{11} Assistant. \\
+\verb| \eordinal{21} Assistant => | \eordinal{21} Assistant.}
+
+\vspace{1ex}\noindent
+Im Franz"osischen ergibt sich bei \verb|{1}| ein geschlechtsspezifischer Unterschied:
+
+\vspace{.75ex}{\small\noindent
+\verb| Le \fordinalm{1} homme => | Le \fordinalm{1} homme. \\
+\verb| La \fordinalf{1} femme => | La \fordinalf{1} femme. \\
+\verb| Le \fordinalm{2} homme => | Le \fordinalm{2} homme. \\
+\verb| La \fordinalf{2} femme => | La \fordinalf{2} femme.}
+
+\vspace{1ex}\noindent
+Die ordinal\hy Befehle dienen auch als Hilfsbefehle f"ur den Befehl
+\verb|\ersch| (oben S.\,\pageref{ersch}). \verb|\ersch| nutzt verschiedene
+ordinal\hy Befehle, wenn \verb|\bacaptionsgerman|,
+\verb|\bacaptionsenglish| oder \verb|\bacaptionsfrench| gilt
+(vgl.\ Kapitel~\ref{SprachSep} unten ab S.\,\pageref{SprachSep}).
+\textit{Auf"|l.} und \textit{edition} lassen sich direkt "andern
+(\verb|\gerscheditionname| und \verb|\eerscheditionname| unten
+S.\,\pageref{erscheditionname}). Weil aber \verb|\ferscheditionname|
+das feminine Wort \textit{\'edi\-tion} druckt, setzt \BibArts\
+\verb|\fordinalf| in \verb|\ersch| ein.\footnote{\texttt{\bs ersch}
+nutzt unter \texttt{\bs bacaptionsgerman} statt \texttt{\bs te} den
+Befehl \texttt{\bs gordinal}. Seit Version 2.2 wird\hspace{.2em} \texttt{1\bs te X}\hspace{.2em} wie\hspace{.2em}
+\texttt{1.}\ \texttt{X}\hspace{.2em} \textit{einsortiert},
+aber\hspace{.2em} \texttt{\bs gordinal\{1\} X}\hspace{.2em}
+wie\hspace{.2em} \texttt{1 X}\hspace{.2em} (relevant f"ur \texttt{-p}).}
+Bei Wechsel zu einem maskulinen Wort
+m"ussten Sie zudem \verb|\fordinal| anpassen:\label{fordinalf}%
+
+\vspace{.75ex}{\small\noindent
+\verb| \bacaptionsfrench| \\
+\verb| \ersch[1]{Paris}{1976} => | {\bacaptionsfrench\ersch[1]{Paris}{1976} \\
+\verb| \renewcommand{\ferscheditionname}{\fupskip classement}| \\[-.25ex]
+\verb| \renewcommand{\fordinal}{\fordinalm}| \\[.1ex]
+\verb| \ersch[1]{Paris}{1976} => | \renewcommand{\fordinal}{\fordinalm}%
+\renewcommand{\ferscheditionname}{\fupskip classement,}%
+\ersch[1]{Paris}{1976}}}
+
+\vspace{1.25ex}\noindent
+Zum Hochstellen von freien Texteingaben dient
+\verb|\fup{|\textit{\kern-.05em Text}\verb|}|
+\hspace{.2em}(\kern-.025em\textit{F}\kern-.05em rench \textit{up}). In\pdfko{.25}\
+schr"aggestelltem Umfeld wird automatisch eine \textit{italics}\hy
+Korrektur gesetzt. Die l"asst sich nach \hspace{-.1em}\verb|.| mit \verb|\bahasdot|
+unterbinden (vgl.\ Kapitel~\ref{Punkte} ab
+S.\,\pageref{Punkte}):
+
+\vspace{1ex}{\small\noindent
+\verb| S\fup{te} Claire => | \hbox to 6em{S\fup{te} Claire\hfill}\texttt{\% Laden von} \\
+\verb| \textit{S\fup{te} Claire} => | \hbox to 6em{\textit{S\fup{te} Claire\hfill}}\texttt{\% babel-french} \\
+\verb| \textit{S.\fup{te} Claire} => | \hbox to 6em{\textit{S.\fup{te} Claire\hfill}}\texttt{\% "uberschreibt} \\
+\verb| \textit{S.\bahasdot\fup{te} Claire} => | \hbox to 6em{\textit{S.\bahasdot\fup{te} Claire\hfill}}\texttt{\% dieses \bs fup!}}
+
+
+\newpage\noindent
+F"ur \textit{Editionsarbeiten} (w"ortliches Zitieren) stellt \BibArts\
+\verb|\abra{|\textit{Symbol}\verb|}| und\pdfko{1}\
+\verb|\fabra{|\textit{Symbol}\verb|}|
+bereit. Als \textit{Symbol} lassen sich i.\,O. vergessene Satzzeichen
+nachtragen, die dann in eckigen Klammern (\kern-.1em\textit{a}ngular \textit{bra}ckets)
+ausgedruckt werden, um sie als \textit{editorische Zus"atze} zu kennzeichnen.
+Der Fixier\hy Befehl \verb|\fabra| verbietet einen Zeilenumbruch direkt
+\textit{nach} dem \textit{Symbol}.
+
+Besonderheit der beiden Befehle ist, dass sie etliche kleine Symbole
+automatisch in \textit{h"ohenangepassten} Klammern ausdrucken. 'Unbekannte'
+Zeichen werden in ein normales eckiges Klammerpaar gesetzt. Bekannte Symbole sind:
+
+\vspace{1.75ex}\noindent
+ \verb| \abra{,} => | Rot\abra{,} blau und gr"un \\[-.5ex]
+ \verb| \abra{.} => | kamen vor\abra{.} Und da \\[-.5ex]
+ \verb| \abra{...} => | \abra{...} waren \\[-.5ex]
+ \verb| \abra{\dots} => | \abra{\dots} noch \\[-.5ex]
+ \verb| \abra{$-$} => | \abra{$-$} glaube ich \abra{$-$} \\[-.5ex]
+ \verb| \abra{-} => | gr"un\abra{-} und gelb\abra{-}farbene \\[-.5ex]
+ \verb| \abra{--} => | Punkte \abra{--}\\[-.5ex]
+ \verb| \abra{---} => | Englischer\abra{---}Gedankenstrich.\\[-.5ex]
+ \verb| \fabra{`} => | \hbox to 3em{\fabra{`}So,\hfill} \\[-.5ex]
+ \verb| \fabra{'} => | \hbox to 3em{so\abra{'}.\hfill} \\[-.5ex]
+ \verb| \fabra{\glq} => | \hbox to 3em{\fabra{\glq}So,\hfill} \\[-.5ex]
+ \verb| \fabra{\grq} => | \hbox to 3em{so\abra{\grq}.\hfill} \\[-.5ex]
+ \verb| \fabra{\glqq} => | \fabra{\glqq}Das kann \\[-.5ex]
+ \verb| \abra{\grqq} => | nicht sein.\abra{\grqq} \\[-.5ex]
+ \verb| \fabra{"`} => | \fabra{"`}Das kann \\[-.5ex]
+ \verb| \abra{"'} => | nicht sein.\abra{"'} \\[-.5ex]
+ \verb| \abra{``} => | ,,Gut!\abra{``} \\[-.5ex]
+ \verb| \abra{''} => | ''Good?\abra{''} \\
+ \verb| \fabra{g}gf. => | \hbox to 3em{\fabra{g}gf.\hfill} \verb| % unbekannt => 'grosse' Klammern|
+
+
+\vspace{2ex}\noindent
+Damit \BibArts\ die \textit{Symbole} erkennen kann, m"ussen sie genau "ubereinstimmen,
+d"urfen also auch keine Leerzeichen enthalten. F"ur das \verb|"| in
+\verb|"`| und \verb|"'| ist zudem Voraussetzung, dass es einen \textit{catcode}
+von 13 (\textit{aktiv}) hat, wie es nach Laden etwa von \verb|ngerman.sty| oder
+babel\hy ngerman der Fall ist. Sonst (Englisch\hy Original\hy\LaTeX) sind auch
+\verb|\abra{"}| bzw.\ \verb|\fabra{"}| m"oglich:~{\originalTeX\fabra{"}}
+
+\vspace{1ex}\vfill\noindent
+In den 'kleinen' Klammern der abra-Befehle setzt \BibArts\
+die \textit{Symbole} aufrecht,
+weil die sonst in einigen schr"aggestellten Schriften
+schlecht zentriert in den Klammern erscheinen w"urden.
+\verb|\abra| und \verb|\fabra| machen eine
+\textit{italics}\hy Korrektur. Sie wird durch ein direkt davor getipptes
+\verb|\bahasdot| unterbunden:
+
+\vspace{1.75ex}\noindent
+\verb| \fabra{"`}Haus\abra{"'} => | {\fabra{"`}Haus\abra{"'}} \\
+\verb| \itshape | \\
+\verb| \fabra{"`}Haus\abra{"'} => | {\itshape \fabra{"`}Haus\abra{"'}} \\
+\verb| \fabra{"`}H.\abra{"'} => | {\itshape \fabra{"`}H.\abra{"'}} \\
+\verb| \fabra{"`}H.\bahasdot\abra{"'} => | {\itshape \fabra{"`}H.\bahasdot\abra{"'}}
+
+\vspace{2ex}\noindent
+Weil normale \textit{Minuszeichen} in Worten die Silbentrennung ausschalten,
+stellt \BibArts\ zudem \verb|\hy| und \verb|\fhy| bereit.
+\verb|\hy| erlaubt die Trennung direkt nach dem gedruckten Minuszeichen
+(\verb|Haber\hy Bosch\hy Verfahren =>| Haber\hy Bosch\hy Verfahren),
+w"ahrend \verb|\fhy| ein Minuszeichen druckt, das fest am
+Folgewort klebt: \verb|Truppenaufmarsch und \fhy abzug =>|
+Truppenaufmarsch und \fhy abzug. Gegebenenfalls w"urde auch ab-zug getrennt
+(anders als nach~\verb|"~|).\label{hy}
+
+\vspace{1ex}\noindent
+\verb|\hy| machte im Beispiel oben auch ein \textit{kerning} zum V\ko,
+das es nach direkt angetippten Minuszeichen nicht gibt:
+\hspace{.3em}\verb|Haber-Bosch-Verfahren|
+\hspace{.3em}\verb|=>| \hspace{.2em}Haber-Bosch-Verfahren.
+Das \textit{kerning} erfolgt vor A, T\ko, v, V\ko, w, W\ko, x, X, y und Y\ko, sowie vor
+\verb|`|, \verb|'|, \verb|\glq|, \verb|)|, \verb|]| und \verb|\}| automatisch.
+Es funktioniert auch dann, wenn der Buchstabe \textit{einen} Akzent hat
+(\kern-.1em\textit{aktives} \hspace{-.1em}\verb|"|, \verb|\"|,
+\verb|\.|, \verb|\=|, \verb|\^|, \verb|\'|, \verb|\`|,
+\verb|\~|,\pdfko{.75}\
+\verb*|\accent |\textit{num}\verb*| |,
+\verb|\b|, \verb|\c|, \verb|\d|, \verb|\H|, \verb|\k|,
+\verb|\r|, \verb|\u| oder \verb|\v|; nur \verb|\t|
+funktioniert nicht).\pdfko{.5}
+
+\vspace{1.25ex}\noindent
+\verb| -Yser => | -Yser \\
+\verb| \hy Yser => | \hy Yser \\
+\verb| \hy\"Yser => | \hy \"Yser \hspace{1em} \texttt{\% Kein utf8-\"Y, sondern \bs\dq Y (auch \dq A)} \\
+\verb| \hy\"{Y}ser => | \hy \"{Y}ser
+
+\vspace{1.5ex}\noindent
+Dieses automatische \textit{kerning} l"asst sich durch \verb|\nothyko|
+ausschalten (Wiedereinschalten mit \verb|\hyko|). Setzen von
+\verb|\hy{}|\hspace{-.15em}\textit{Wort} bzw.\
+\verb|\fhy{}|\hspace{-.15em}\textit{Wort} unterbindet es ebenfalls.
+Das folgende Wort kann dann immer noch getrennt werden.
+In einem \texttt{typewriter}\hy Umfeld sollten Sie weiterhin
+Minuszeichen '\verb|-|' tippen.
+
+\vspace{1.5ex}\noindent
+\hspace*{-.16em}\textit{Vor} \verb|\hy| oder \verb|\fhy| kann
+$-$ falls ein penibler Textsatz gew"unscht ist $-$ kein
+automatisches \textit{kerning} durchgef"uhrt werden. \BibArts\
+stellt den Korrekturbefehl \verb|\ko| bereit. Die Kosmetik
+ist (\kern-.05em\textit{wenn "uberhaupt!}) n"otig nach
+Gro"sbuchstaben, die sehr weit vom nachfolgenden Minuszeichen
+entfernt sind: T\ko, V\ko, W und Y\ko.
+
+\vspace{1.25ex}\noindent
+\verb| T\hy Zacke => | T\hy Zacke \\
+\verb| T\ko\hy Zacke => | T\ko\hy Zacke \\
+\verb| V\hy Form => | V\hy Form \\
+\verb| V\ko\hy Form => | V\ko\hy Form
+
+\vspace{1.5ex}\noindent
+Die Definition von \verb|\ko| kann Ihnen als Beispiel f"ur "ahnliche Befehle dienen
+
+\vspace{1.25ex}{\small\noindent
+\verb| \newcommand{\pko}{\ifhmode\nobreak\hskip -0.07em plus 0em\fi}| \\
+\verb| \newcommand{\ko}{\protect\pko}|\label{ProtectBeispiel}}
+
+\vspace{1.5ex}\noindent
+falls Sie die Korrektur zwischen V und Punkt oder Komma zu klein finden:
+
+\vspace{1.25ex}\noindent
+\verb| V\te Armee => | V\te Armee \\
+\verb| V\ko\te Armee => | V\ko\te Armee
+
+\vspace{1.5ex}\noindent
+Sicher w"are der Abstand von V und \hspace{-.1em}\verb|.|
+aber besser in den Ligaturtabellen definiert (worauf
+\verb|\te| reagiert: \verb| P\te I und P{}\te I => |
+P\te I und P{}\te I).
+
+
+
+\newpage
+\section{Abk"urzungen}\label{Sect4}
+
+\BibArts\ stellt Instrumente zur Verwaltung von Abk"urzungen zur Verf"ugung.
+Dies ist ein zus"atzliches Feature, das sie (unabh"angig von der \BibArts\hy
+Verwaltung von Belegstellen mit \verb|\vli| etc.) verwenden k"onnen, um
+sich ein Abk"urzungsverzeichnis ausdrucken zu lassen. Sie werden von
+\verb|bibsort| zudem mittels Bildschirm\hy Meldung gewarnt, falls Sie eine
+Abk"urzung verwenden, ohne sie f"ur Ihren Leser aufgel"ost zu haben.
+Spielregeln dabei sind: Falls Sie eine Abk"urzung bereits \textit{in einer Fu"snote}
+auf"|l"osten, darf die Abk"urzung \textit{in\pdfko{.75}\
+weiteren Fu"snoten} ohne neuerliche
+Erkl"arung verwendet werden; erfolgte die Definition der Bedeutung dagegen im
+Haupttext, darf die Abk"urzung danach "uberall verwendet werden. Das
+Abk"urzungsverzeichnis wird jedoch in jedem Fall mit Abk"urzungen
+gef"uttert, sofern deren Auf"|l"osung vorliegt; \verb|bibsort| warnt, falls
+(stets m"ogliche) Mehrfach\hy Auf"|l"osungen \textit{voneinander abweichen}.
+
+Abk"urzungen sind also zun"achst zu definieren. Dabei ist wahlfrei, ob erst
+die Abk"urzung und dann ihre Auf"|l"osung gesetzt wird oder umgekehrt:
+
+\Doppelbox
+{... eine
+ \bs abkdef\{OHG\}\{Offene
+ \\ \ \ \ Handelsgesellschaft\}.
+ \\ Oder: \bs defabk\{Offene
+ \\ \ Handelsgesellschaft\}\{OHG\}.
+ Nun d"urfen Sie \bs abk\{OHG\} benutzen.
+}
+{Das Unternehmen ist eine
+ \abkdef{OHG}{Offene
+ Handelsgesellschaft}.
+ Oder: \defabk{Offene
+ Handelsgesellschaft}{OHG}.
+ Nun d"urfen Sie \abk{OHG} benutzen.
+}\label{defabk}
+
+
+\noindent
+Falls Sie die weitere Abk"urzung \abk{GmbH} mit \verb|\abk{GmbH}| setzen,
+aber \textit{nie} definieren, wird sie nicht ins Abk"urzungsverzeichnis
+"ubernommen; stattdessen druckt \verb|bibsort| eine Warnung folgenden
+Typs auf den Bildschirm:
+
+\vspace{-.5ex}
+{\scriptsize\begin{verbatim}
+ %%> Warning: Abbreviation "GmbH" is NEVER defined!
+ %% The entry (file 1 line 1764) is rejected. Use \abkdef?
+\end{verbatim}}
+
+\vspace{-.5ex}\noindent
+Falls Sie die Abk"urzung mit \verb|\abkdef| oder
+\verb|\defabk| definieren, dies im Texteditor aber in einer
+Zeile \textit{nach} \verb|\abk{GmbH}| tun, kommt sie ins
+Abk"urzungsverzeichnis. \verb|bibsort| warnt in seinem
+Bildschirmausdruck allerdings etwa so:
+
+%\abk{GmbH}
+%\abkdef{GmbH}{Gemeinschaft mit beschr"ankter Haftung}
+
+\vspace{-.5ex}
+{\scriptsize\begin{verbatim}
+ %%> Warning: Abbreviation "GmbH" is used in
+ %% file 1 line 1782 and def in file 1 line 1783!
+\end{verbatim}}
+
+\vspace{-.5ex}\noindent
+Verwenden Sie Abk"urzungen im Text, die \textit{nur} in Fu"snoten
+aufgel"ost sind, erscheint (nicht\hy abschaltbar) eine Bildschirm\hy
+Warnung. Falls Sie tippen ...
+
+\Doppelbox
+{...\bs footnote\b{\{}Ein \bs abkdef\{e.\bs,V.\}
+ \\ \ \ \ \ \ \ \{eingetragener Verein\} hat
+ \\ \ mehrere Mitglieder.\b{\}} Der Verein hat \bs abk\{e.\bs,V.\} als Form.
+}
+{...\footnote{Ein \abkdef{e.\,V.}
+ {eingetragener Verein} hat
+ mehrere Mitglieder.} Der Verein hat \abk{e.\,V.} als Form.
+}
+
+\noindent
+... "ubernimmt \verb|bibsort| Abk"urzung und zugeh"orige Auf"|l"osung
+zwar ins Abk"urzungsverzeichnis, meldet allerdings stets etwas wie:
+
+{\scriptsize\begin{verbatim}
+ %%> Warning: Abbreviation "e.\,V." is used in
+ %% file 1 line 1805 and def in A FNT file 1 line 1805!
+\end{verbatim}}
+
+\noindent
+Durch eine Eigenart von \LaTeX2e\ nennt die Meldung
+die Zeilennummer, in der die Fu"snote endet,\footnote{In \LaTeX~2.09 evtl.\ auch bez"uglich der Zeile,
+in der sie anf"angt.} w"ahrend \verb|\abkdef| im Beispiel sich tats"achlich
+in einer vorausgehenden Editorzeile befand.
+
+\vspace{2ex}\noindent
+Das Abk"urzungsverzeichnis wird hier mit \verb|\printnumabklist| ausgedruckt.
+Die Befehle \verb|\printabk| bzw.\ das zentrale \verb|\printnumabk| ergeben
+einen doppelspaltigen Ausdruck in \verb|\footnotesize| auf einer neuen
+Seite unter der "Uberschrift \textbf{Abk"urzungen}, was hier nur aus
+Platzgr"unden unterbleibt:
+
+{\batwocolitemdefs\printnumabklist}\balabel{abklist}
+
+\noindent
+Die K"opfe der Listenpunkte wurden dabei in \verb|\abklistemph|
+ausgedruckt, das\pdfko{.75}\
+defaultm"a"sig \verb|\bfseries| ausf"uhrt
+(\textbf{fett}). Die Seiten, von denen Definitionen\pdfko{.5}\
+herstammen, sind in der Auf"|listung von Seitenzahlen nicht
+hervorgehoben. Eine Hervorhebung einzelner Seitenzahlen sieht
+auch \texttt{bibsort} 2.2 nie vor.
+
+F"ur Abk"urzungen wie \printonlyabk{u.\,a.}, die Allgemeingut sind und deshalb
+vielleicht nicht ins Abk"urzungsverzeichnis sollen, kann
+\verb|\printonlyabk{u.\,a.}| genutzt werden, um das
+Argument einheitlich in der Schrift aller Abk"urzungen
+ausgedruckt zu bekommen. Die Kontrolle durch \verb|bibsort| entf"allt
+dann. Radikaler k"onnen Sie insofern im Vorspann mittels
+\verb|\renewcommand{\abkemph}{}|
+die Hervorhebung von Abk"urzungen ausschalten und dann \verb|u.\,a.| tippen.
+
+Falls ein Eintrag ins Abk"urzungsverzeichnis soll, man sich die
+Auf"|l"osung im Text aber sparen will, hilft die bereits erw"ahnte
+\verb|{unused}|\hy Umgebung:
+
+\vspace{-1.25ex}
+{\small
+\begin{verbatim}
+ \begin{unused}
+ \abkdef{u.\,a.}{unter anderem} %vgl. Liste oben%
+ \end{unused}
+\end{verbatim}}
+%
+ \begin{unused}
+ \abkdef{u.\,a.}{unter anderem} %vgl. Liste oben%
+ \end{unused}
+
+\vspace{-1ex}\noindent
+Solche Definitionen kommen ohne Seiten\fhy/""Fu"snotennummer in die
+num\hy Liste. Zudem kann \verb|\abk{u.\,a.}| dann "uberall im Text
+(also auch davor) verwendet werden, ohne dass \verb|bibsort| das
+Fehlen der Auf"|l"osung bem"akelt.
+
+%Wenn das oben nur in einer Fu"snote erkl"arte \verb|\abk{e.\,V.}| jetzt
+%nochmal im Haupttext -- anders als oben: \textit{auf einer anderen Seite
+%als die Definition} -- verwendet wird (hier: \abk{e.\,V.}), meldet \verb|bibsort|
+%diesen Fehler "ubrigens anders:
+%
+%\vspace{-1ex}
+%{\scriptsize\begin{verbatim}
+% %%> Warning: Abbreviation "e.\,V." is used
+% %% in TEXT file 1 line 1384, whereas all foregoing defs were in FNTs!
+%\end{verbatim}}
+
+\noindent
+Mehrfach verwendete Abk"urzungen sowie mehrfach verwendete Auf"|l"osungen
+m"ussen zeichengleich sein, um von \verb|bibsort| als gleich erkannt zu
+werden. Wird das bereits oben aufgel"oste \abk{OHG}
+nochmals erkl"art (vielleicht wollen Sie die Bedeutung einiger bereits definierter
+Abk"urzungen am Anfang eines neuen Gro"skapitels nochmal erkl"aren),
+wird dies akzeptiert. Wenn Sie dann aber \verb|\abkdef{OHG}{Offene Handelsgschaft}|
+tippen, meldet \verb|bibsort|:\addtoabkdef{OHG}{Offene Handelsgschaft}
+
+\vspace{-.5ex}
+{\scriptsize\begin{verbatim}
+ %%> Warning: Different defs for abbreviation "OHG":
+ %% *Accept file 1 line 1761 "Offene Handelsgesellschaft";
+ %% *Reject file 1 line 1890 "Offene Handelsgschaft".
+\end{verbatim}}
+
+\vspace{-1ex}\noindent
+... und im Abk"urzungsverzeichnis erscheint nur die akzeptierte Variante.
+
+
+\vspace{1ex}\noindent
+Falls die Auf"|l"osung einer Abk"urzung im Abk"urzungsverzeichnis anders sein
+soll als im Text, lassen sich die Befehle \verb|\abkdef| (oder \verb|\defabk|)
+aufsplitten\pdfko{.4}\
+in ihre Teilkomponenten. Vergleichen Sie "`(Kochsalz)"' hier und in der Liste:
+
+\Doppelbox
+{\vspace{.25ex}
+ Das ist \bs addtoabkdef\{NaCl\}
+ \\ \ \{Natriumchlorid (Kochsalz)\}
+ \bs printonlyabkdef\{NaCl\}
+ \\ \ \{Natriumchlorid\}.
+ \vspace{.25ex}
+}
+{Das ist \addtoabkdef{NaCl}
+ {Natriumchlorid (Kochsalz)}
+ \printonlyabkdef{NaCl}
+ {Natriumchlorid}.
+}
+
+\noindent
+Dasselbe l"asst sich erreichen durch \verb|\onlyout| in \verb|\abkdef| (oder \verb|\defabk|):
+
+\Doppelbox
+{\vspace{.25ex}
+ Das ist \bs abkdef\{NaCl\}
+ \\ \ \b{\{}Natriumchlorid\%
+ \\ \ \ \ \bs onlyout\{ (Kochsalz)\}\b{\}}.
+}
+{\vspace{1.5ex}
+ Das ist \abkdef{NaCl}
+ {Natriumchlorid%
+ \onlyout{ (Kochsalz)}}.
+}
+
+
+\noindent
+Es gibt somit auch zwei Notationsarten, um eine in Text und Liste
+abweichende Gro"s\fhy/""Kleinschreibung der Abk"urzung auszudrucken:
+
+\Doppelbox
+{\vspace{.25ex}
+ \bs printonlyabk\{E.\bs,V.\}\string's \bs addtoabk\{e.\bs,V.\}
+ sind beim Amtsgericht anzumelden.
+ \\[2ex]
+ \bs abk\b{\{}\bs onlyhere\{E\}\%
+ \\ \ \ \bs onlyout\{e\}.\bs,V.\b{\}} kann auch
+ \\ alternativ so notiert sein.
+ \vspace{.25ex}
+}
+{\printonlyabk{E.\,V.}'s \addtoabk{e.\,V.}
+ sind beim Amtsgericht anzumelden.
+
+ \vspace{1.1ex}
+ \abk{\onlyhere{E}%
+ \onlyout{e}.\,V.} kann auch
+ alternativ so notiert sein.
+}
+
+
+\vspace{.25ex}\noindent
+Im Text werden das Argument von \verb|\abk| sowie
+die Abk"urzungen in \verb|\abkdef| und \verb|\defabk|
+in der Schrift \verb|\abkemph| gesetzt; der Befehl f"uhrt
+defaultm"a"sig \verb|\sffamily| aus ({\sffamily{sans serif}\/}),
+also anders als \verb|\abklistemph|. Im Text stellt
+\verb|\renewcommand{\abkemph}{}| wie erw"ahnt
+Umfeldschrift ein. Alternativ w"aren sogar \verb|\itshape| oder
+\verb|\slshape| erlaubt; nur auf Befehle der Art \verb|\textbf| oder
+\verb|\textit| sollten Sie wie immer verzichten. Wie sich \verb|\abk|
+zusammen mit schr"aggestellten Schriften verh"alt, wird unten in
+Kap.\,\ref{schraegkap} ab S.\,\pageref{schraegkap} erkl"art.
+
+
+\newpage
+\section{\texttt{\bs abk\{X.X.X.\}} unter \texttt{\bs nonfrenchspacing}}\label{Sect5}\label{nonfrenchspacing}
+
+\parbox{1.8em}{(1)}Falls Sie \verb|\nonfrenchspacing| einschalten (originaler
+\LaTeX\hy Textsatz mit vergr"o"serten Leerzeichen am Satzende), gilt in
+\LaTeX\ \textit{normalerweise} eine\pdfko{.25}\
+Vorschrift f"ur Abk"urzungen, \textit{die mit einem Kleinbuchstaben und einem
+Punkt\pdfko{.4}\
+enden}: \textbf{Falls der Satz danach weiter geht}, ist\hspace{.1em}
+\verb*|y.y.y.\ |\hspace{.2em} zu tippen.
+
+Im Argument von \verb|\abk| ist dagegen egal, ob der letzte Buchstabe klein oder gro"s ist.
+\BibArts\ pr"uft, ob \textit{nach} dem Argument ein Punkt steht; falls nein, geht es davon aus,
+dass ein Leerzeichen mit 'normaler' L"ange zu setzen ist:\footnote{Falls
+\texttt{ \}? \}! \}: \}; \}, }folgen, stellen die die Leerzeichenl"ange stets eigenst"andig
+ein.}\pdfko{1}
+
+\vspace{1ex}
+{\sffamily\nonfrenchspacing\noindent
+\hbox to 10em{\texttt{ \ \ \ \ \ Dr. Maier }\hfill}\verb| => |\hbox to 6em{Dr. Maier\hfill} {\footnotesize\verb| %% falsch in US-Voreinstellung|} \\
+\hbox to 10em{\texttt{ \ \ \ \ \ Dr.\bs\ Maier}\hfill}\verb| => |\hbox to 6em{Dr.\ Maier\hfill} {\footnotesize\verb| %% ueblich in US-Voreinstellung|} \\
+\hbox to 10em{\texttt{ \bs abk\{Dr.\} Maier}\hfill}\verb| => |\hbox to 6em{\printonlyabk{Dr.} Maier\hfill} {\footnotesize\verb| %% ausreichend in BibArts|}
+}
+
+
+\vspace{2ex}\noindent
+\parbox{1.8em}{(2)}Falls die Abk"urzung dagegen \textbf{am Satzende} steht, ist im
+\LaTeX\hy Standard '\verb|\nonfrenchspacing|' nur dann etwas zu
+unternehmen, falls die Abk"urzung mit einem Gro"sbuchstaben
+endet\hspace{.1em} (danach ist \verb|\@.|\hspace{.05em} statt\hspace{-.05em} \verb|.| zu setzen).
+
+Nach \verb|\abk| m"ussen Sie dagegen \textit{am Satzende} etwas
+unternehmen, \textit{falls\pdfko{1}\ der Punkt zur Abk"urzung geh"ort}.
+Bei \verb|\abk{NASA.}| statt \verb|\abk{NASA}| etwa:
+
+\vspace{1.25ex}
+{\sffamily\nonfrenchspacing\noindent
+\hbox to 10em{\texttt{ \ \ \ \ \ NASA\bs @.\ Next}\hfill}\verb| => |\hbox to 6em{NASA\@. Next\hfill} {\footnotesize\verb| %% US-Voreinstellung richtig|} \\
+\hbox to 10em{\texttt{ \bs abk\{NASA\}.\ \ Next}\hfill}\verb| => |\hbox to 6em{\printonlyabk{NASA}. Next\hfill} {\footnotesize\verb| %% BibArts ohne Punkt richtig|} \\
+\hbox to 10em{\texttt{ \bs abk\{NASA.\} \ Next}\hfill}\verb| => |\hbox to 6em{\printonlyabk{NASA.} Next\hfill} {\footnotesize\verb| %% BibArts mit Punkt falsch!|} \\
+\hbox to 10em{\texttt{ \bs abk\{NASA.\}.\ Next}\hfill}\verb| => |\hbox to 6em{\printonlyabk{NASA.}. Next\hfill} {\footnotesize\verb| %% BibArts mit Punkt richtig|}
+}
+
+\vspace{1.5ex}\noindent
+Nach \verb|\abk| \textit{d"urfen} Sie den 'Satzende-Punkt' \textit{immer}
+zus"atzlich setzen: Er wird\pdfko{.25}\
+'verschluckt', falls die Abk"urzung selbst
+schon mit einem Punkt endet; ein folgendes Leerzeichen wird nur im
+\verb|\nonfrenchspacing| verl"angert.\footnote{\BibArts\
+pr"uft erst, ob \texttt{.} einen \texttt{\bs sfcode} von 3000 hat (gilt unter
+\texttt{\bs nonfrenchspacing}); falls das nicht gilt, 'verl"angert' es
+keine Leerzeichen. Unter \texttt{\bs frenchspacing} hat der Punkt einen
+\texttt{\bs sfcode} von 1000; falls Sie einen dritten Wert verwenden,
+k"onnen Sie in einer Kopie von \texttt{bibarts.sty} alle
+3000er\hy Stellen gegen Ihre Zahl austauschten und die Kopie nutzen.}
+
+In jedem Fall sollten Sie direkt nach dem letzten Argument eines
+\BibArts\hy Hauptbefehls (siehe S.\,\pageref{Hauptbefehle}) nie \verb|\@|
+setzen: Eine Behandlung von \verb|\@.| ist dort \textit{nicht} vorgesehen.
+Im sonstigen Text gelten \verb|\@.| und \verb*|.\ |\hspace{.2em} aber
+weiterhin.
+
+\vspace{2ex}\noindent
+Die hier genannten Spielregeln f"ur das \textit{spacing} gelten
+auch f"ur andere \BibArts\hy Befehle (vgl.\ unten ab S.\,\pageref{Punkte}).
+So viel vorab: Unter \verb|\frenchspacing| (gilt
+nach Laden von \verb|german.sty| oder \verb|ngerman.sty|) ist
+beim Schreiben an nichts zu denken, weil im deutschen
+Textsatz alle Leerzeichen gleich gro"s sind. Sie m"ussen am
+Satzende also nicht \verb*|.}. | setzen; und wenn Sie es doch
+t"aten, w"urde nur ein Punkt gedruckt (ohne Einfluss auf die
+folgende Leerzeichenl"ange).
+
+
+\section{Zeitschriften und allgemein Bandangaben}\label{Sect6}\label{per}
+
+\BibArts\ stellt zum Zitieren gedruckter Literatur als weitere Klasse
+\textit{Zeitschriften}\pdfko{.1}\ bereit. Die kommen ins Argument von \verb|\per|
+(\textit{periodical}). Typischerweise steht\pdfko{.3}\ \verb|\per| im letzten
+Argument von \verb|\vli|, um Aufs"atze in Zeitschriften anzugeben.
+Nach dem Pflichtargument von \verb|\per|\hspace{.2em} kann zwischen
+\textit{underscores} optional\pdfko{.6}\
+eine Angabe zur \verb|_|\textit{Heftnummer}\ko\ko\verb|_|\hspace{.2em} folgen.
+Vor \verb|_| darf kein Leerzeichen stehen.
+
+\Doppelbox
+{
+...\bs footnote\{\bs vqu \{John
+\\ \ \ Frederick Charles\} \{Fuller\}
+\\ \ \H{\{}Gold Medal (Military)
+\\ \ \ \bs ktit\{Prize Essay\} for 1919,
+\\ \ \ in: \bs per\{Journal of the
+\\ \ \ \ \ \ \ \ Royal United Service
+\\ \ \ \ \ \ \ \ Institution\}\string_458
+\\ \ \ \ \ \ \ \ \ (1920)\string_[239-274]\H{\}}*[240].\}
+\\[1.5ex]
+...\bs footnote\{\bs kqu \{Fuller\}
+\\ \ \ \ \ \ \ \ \ \ \ \ \{Prize Essay\}[241].\}
+\\[1.5ex]
+...\bs footnote\{\bs vqu\{R[ichard]\}
+\\ \ \{Chevenix Trench\}
+\\ \ \{Gold Medal (Military)
+\\ \ \ \bs ktit\{Prize Essay\} for 1922,
+\\ \ \ in: \bs per\{Journal of the
+\\ \ \ \ \ \ \ \ Royal United Service
+\\ \ \ \ \ \ \ \ Institution\}\string_470
+\\ \ \ \ \ \ \ \ \ (1923)\string_[199-227]\}*[200].\}
+}
+{\notktitaddtok
+\fbox{Als Beispiel gedruckte Quellen:}
+\\[1.5ex]
+...\footnote{\printonlyvqu {John\, Frederick\, Charles\,} {Fuller}
+{Gold Medal (Military) \ktit{Prize Essay} for 1919,
+in: \per{Journal of the Royal United Service
+Institution}_458 (1920)_[239-274]}*[240].\label{noNr}\label{Fuller1}}
+
+"Au"sere Ebenda\hy Setzung.\footnote{\printonlykqu {Fuller}
+{Prize Essay}[241].\label{Fuller2}}
+
+Innere Ebenda\hy Setzung.\footnote{\printonlyvqu{R[ichard]\ \ } {Chevenix\ \ Trench}
+{Gold Medal (Military) \ktit{Prize Essay} for 1922,
+in: \per{Journal of the Royal United Service
+Institution}_470 (1923)_[199-227]}*[200].\balabel{Nr}\label{Trench}}
+}
+
+\noindent
+Im Kurzzitateverzeichnis, das mit \verb|\printnumvkc| ausdruckt wird, erg"abe dies:
+
+\vspace{-0.4ex}
+{\small\begin{description}\parsep 0ex \itemsep -.5ex
+\item \textsc{Chevenix Trench}: Prize Essay [Q] \ \textsf{\pageref{Trench}$^{\ref{Trench}}$}
+\item \textsc{Fuller}: Prize Essay [Q] \ \textsf{\pageref{Fuller1}$^{\ref{Fuller1},\ \ref{Fuller2}}$}
+\end{description}}
+
+\vspace{-0.25ex}\noindent
+In die Liste \verb|\printvqu| kommt (in \verb|bibarts.vqu| tats"achlich nicht umgesetzt):
+
+\vspace{-0.4ex}
+{\small
+\begin{description}\parsep 0ex \itemsep -.5ex
+\item \textsc{Chevenix Trench}, R[ichard]: Gold Medal (Military) Prize Essay for
+1922, in:\pdfko{.2}\
+\textsc{Journal of the Royal United Service Institution} 470 (1923), S.\,199-227.
+\item \textsc{Fuller}, John Frederick Charles: Gold Medal (Military) Prize Essay for
+1919, in: \textsc{Journal of the Royal United Service Institution} 458 (1920), S.\,239-274.
+\end{description}}
+
+\vspace{-0.25ex}\noindent
+Au"serdem lassen sich die verwendeten Zeitschriften in einer separaten Liste ausdrucken.
+M"oglich ist, dabei an einzelne Eintr"age \textit{Zusatztext} anzuh"angen:
+
+\vspace{.4ex}%
+{\footnotesize
+\hspace{1em}\verb|\fillper{Journal of the Royal United Service Institution}| \\[-.5ex]
+\hspace*{6.95em}\verb|{Zeitschrift gegr|"u\verb|ndet 1857} %% ist umgesetzt %%|
+}
+\fillper{Journal of the Royal United Service Institution}
+{Zeitschrift gegr"undet 1857}%
+
+\vspace{.75ex}\vfill\noindent
+\verb|\printnumper| druckt die Liste der Zeitschriften
+(das\hspace{-.1em} \verb|.per|\hy File) dann so:
+
+\printnumper\label{printnumper}
+
+\noindent
+Der nur einmal gesetzte fill\hy Befehl diente dazu, einen Zusatz anzuh"angen,
+der zur Vereinfachung nicht bei jedem Zitat aus der Zeitschrift getippt
+werden soll. Zu den Gedankenstrichen vor den fill\hy Eintr"agen
+siehe \verb|$-$| unten S.\,\pageref{perlistopen}.
+
+\vspace{1ex}\noindent
+Wie nach allen \BibArts\hy Befehlen (vgl.\ S.\,\pageref{Hauptbefehle})
+sind Sie frei, \verb+|+\ko\textit{Bandangaben}\ko\verb+|+ \textbf{oder}\pdfko{.5}\
+\verb+_+\textit{Heftnummern}\verb+_+ zu setzen. Beide drucken jeweils
+eigene vorgefertigte Textelemente (\textit{captions}). Im Text hier
+wurden f"ur Zeitschriften die \textit{underscores}\pdfko{.1}\ gew"ahlt
+und\hspace{.2em} \verb|_|\textit{Heftnummer} (\textit{Jahr})\verb|_|\hspace{.2em}
+eingetragen. In der letzten Fu"snote \baref{Nr} stand nach \textsc{ebd.}
+zus"atzlich {\footnotesize Nr.}, was zwei Fu"snoten zuvor\pdfko{.25}\
+unterblieb, wo keine \textsc{ebd.}\hy Setzung erfolgte (Anm.\,\ref{noNr}).
+Dies ist so definiert:
+
+\vspace{-1ex}
+{\small
+\begin{verbatim}
+ \gpername => {\ifbaibidem{, Nr.\,}{\pernosep}} % _X_
+ \gperpname => {\ifbaibidem{, Nr.\,}{\pernosep}} % _X, Y_
+\end{verbatim}}
+
+\vspace{-.75ex}\noindent
+Dabei f"uhrt \verb|\ifbaibidem| sein erstes Argument im Ebenda\hy Fall,
+sonst sein zweites Argument aus (das ein Leerzeichen druckt).
+\verb|\gperpname| $-$\,Plural\,$-$ f"uhrt
+\BibArts\ statt \verb|\gpername| dann aus, wenn im Argument zwischen
+den \textit{underscores} sich ein Minuszeichen (auch \verb|\hy|),
+ein Komma, \verb|\f| oder \verb|\ff| findet, also eine Auf"|listung
+von mehreren Zeitschriftennummern enthalten ist.
+
+Dies gilt "aquivalent f"ur \verb+|+\ko\textit{Bandangaben}\ko\verb+|+,
+die besonders nach dem letzten\pdfko{.25}\ Pflichtargument von
+v- oder k\fhy Befehlen stehen d"urfen (vgl.\ oben S.\,\pageref{Reinhard}):
+
+\vspace{-1ex}
+{\small
+\begin{verbatim}
+ \gvolname => {, Bd.\,} % |X|
+ \gvolpname => {, Bde.\,} % |X, Y|
+\end{verbatim}}
+
+\vspace{-.75ex}\noindent
+wobei Singular und Plural erkennbar unterschiedliche Separatoren drucken:
+
+\vfill
+\Doppelbox
+{\vspace{.75ex}%
+ \bs footnote\{Wieder \bs xkqu \{Marx\}
+\\[-1pt] \ \ \ *\{\bs kauthor\{Engels\}\}
+\\[-1pt] \ \ \ \{Werke\}\string|11-13\string|.\}
+\\[3pt] \bs footnote\{\bs xkqu \{Marx\}
+\\[-1pt] \ \ \ *\{\bs kauthor\{Engels\}\}
+\\[-1pt] \ \ \ \{Werke\}\string|14\string|.\}
+\\[3pt] \bs footnote\{\bs xkqu \{Marx\}
+\\[-1pt] \ \ \ *\{\bs kauthor\{Engels\}\}
+\\[-1pt] \ \ \ \{Werke\}\string|15\bs f\string|.\}
+\\[3pt] \bs footnote\{\bs xkqu \{Marx\}
+\\[-1pt] \ \ \ *\{\bs kauthor\{Engels\}\}
+\\[-1pt] \ \ \ \{Werke\}\string|17, 18\string|.\}
+\vspace{.75ex}%
+}
+{
+\footnote{Wieder \xkqu {Marx} *{\kauthor{Engels}} {Werke}|11-13|.}
+
+\footnote{\xkqu {Marx} *{\kauthor{Engels}} {Werke}|14|.}
+
+\footnote{\xkqu {Marx} *{\kauthor{Engels}} {Werke}|15\f|.}
+
+\footnote{\xkqu {Marx} *{\kauthor{Engels}} {Werke}|17, 18|.}
+}
+
+\noindent
+\verb|\gpername|, \verb|\gperpname| sowie \verb|\gvolname|
+und \verb|\gvolpname| lassen sich etwa\pdfko{.5}\
+mittels \verb|\renewcommand{\gpername}{, Heft }| ver"andern
+(Beispiel ohne \textit{if}):
+
+\vspace{.7ex}
+\verb+\per{ZfG.}_5_.+\hspace{1em} \verb|=>|\hspace{.5em}
+{\renewcommand{\gpername}{, Heft }\per{ZfG.}_5_.}
+
+\vspace{.9ex}\noindent
+Falls \BibArts\ nach v\fhy, k- oder per\hy Befehlen im Eintrag zwischen den
+\textit{senkrechten\pdfko{.5}\ Strichen} bzw.\ zwischen den \textit{underscores}
+Singular und Plural nicht richtig erkennt, l"asst sich mit
+\verb|\basingular| bzw.\ \verb|\baplural| \textit{am Ende}
+nachjustieren:\label{baplural}
+
+\vspace{-.25ex}
+\Doppelbox
+{
+\bs footnote\{\bs per \{ZfG.\}\string|11 u.
+\\ \ \ 13\string|.\}
+\\[1ex]
+\bs footnote\{\bs per \{ZfG.\}\string|11 u.
+\\ \ \ 13\bs baplural\string| (erzwungen).\}
+\\[2ex]
+\bs footnote\{\bs per \{ZfG.\}\string|17,
+\\ \ \ 18 oder 19\string|.\}
+\\[1ex]
+\bs footnote\{\bs per \{ZfG.\}\string|17,
+\\ \ \ 18 oder 19\bs basingular\string| (dito).\}
+\\[1ex]
+\bs footnote\{\bs per \{ZfG.\}\string_17,
+\\ \ \ 18 oder 19\bs basingular\string_.\}
+\\[1ex]
+\bs footnote\{\bs per \{ZfG.\}\string_17,
+\\ \ \ 18 oder 19\string_.\}
+}
+{
+\footnote{\per {ZfG.}|11 u. 13|.}
+
+\footnote{\per {ZfG.}|11 u. 13\baplural| (erzwungen).}
+
+\footnote{\per {ZfG.}|17, 18 oder 19|.}
+
+\footnote{\per {ZfG.}|17, 18 oder 19\basingular| (dito).}
+
+\footnote{\per {ZfG.}_17, 18 oder 19\basingular_.
+ \texttt{ \ \% Wechsel auf \string_...\string_ \%}\label{Wechsel}}
+
+\footnote{\per {ZfG.}_17, 18 oder 19_.}
+}
+
+\vspace{-.25ex}\noindent
+Falls Sie zwischen \verb+|+...\verb+|+ und \verb+_+...\verb+_+
+unbeabsichtigt wechseln (vgl.\ Anm.\,\ref{Wechsel}),
+erhalten Sie keine Warnung (die Zahlen werden im selben Speicher
+hinterlegt). \BibArts\ macht auch hier nur die oben
+S.\,\pageref{before} und \pageref{pervol} beschrieben Fehlermeldungen.
+
+\vspace{1ex}\noindent
+Wenn Zeitschriften abgek"urzt werden \textit{und} die Abk"urzung
+zus"atzlich im Abk"urzungsverzeichnis erscheinen soll, vereinfacht
+dies \verb|\abkper|: Das f"uhrt \verb|\per|\pdfko{1}\ aus
+(Liste S.\,\pageref{printnumper}) und zus"atzlich
+\verb|\addtoabk| f"ur das Abk"urzungsverzeichnis\pdfko{.5}\
+\baref[siehe {\abklistemph{ZfG.}}]{abklist}. Die Abk"urzung
+erscheint dort nur, wenn sie definiert ist:
+
+\vspace{-.75ex}
+\Doppelbox
+{\vspace{.5ex}
+ Die \bs abkper \{ZfG.\} \bs addtoabkdef\{ZfG.\}\{Zeitschrift
+ \\ \ \ \ \ f"ur Geschichtswissenschaft\} ist ... Satzende:
+ \bs abkper\{ZfG.\}.
+ \vspace{.25ex}
+}
+{\vspace{.75ex}%
+ Die \abkper {ZfG.} \addtoabkdef{ZfG.}{Zeitschrift f"ur
+ Geschichtswissenschaft} ist eine wissenschaftliche Zeitschrift.
+ Am Satzende: \abkper{ZfG.}.
+}
+
+\vspace{-.5ex}\noindent
+Hinter dem Hauptargument von \verb|\abkper| d"urfen Angaben zu
+Heftnummern und Seitenzahlen stehen wie nach jedem \BibArts\hy
+Hauptbefehl (siehe S.\,\pageref{Hauptbefehle}).
+%<<<
+
+\vspace{1.25ex}\noindent
+\verb|\per{|\textsc{Argument}\verb|}| und \verb|\abkper{|\textsc{Argument}\verb|}|
+werden in \verb|\peremph| ausgedruckt.
+Dessen Definition darf nicht leer sein; zumindest \verb|\upshape|
+sollte\pdfko{.1}\ darin stehen $-$ denn mit \verb|\renewcommand{\peremph}{}|
+allein w"urden alle per\hy Befehle, die in schr"aggestelltem
+Schriftumfeld stehen, etwas melden wie:
+
+\vspace{.5ex}{\scriptsize\begin{verbatim}
+ BibArts Warning: Add \upshape to \peremph on input line 1696.
+\end{verbatim}}
+
+
+%>>>
+\noindent
+Die Aufgaben von \verb|\per| lassen sich in
+\verb|\addtoper| und \verb|\printonlyper| teilen:
+
+\Doppelbox
+{
+Die \bs printonlyper\{Zeitschrift
+\\ \ \ \ f"ur Geschichtswissenschaft\}
+\bs addtoper\{ZfG.\}
+\\ soll als Abk"urzung ins Zeitschriftenverzeichnis.
+\\[.25ex] Alternativ gibt auch
+\bs per\b{\{}Z\bs onlyhere\{eitschrift \}\%
+\\ \ \ \ \ \ f\bs onlyhere\{"ur \}\%
+\\ \ \ \ \ \ G\bs onlyhere
+\\ \ \ \ \ \ \ \{eschichtswissenschaft\}\%
+\\ \ \bs onlyout\{.\}\b{\}} nur einen Eintrag.
+}
+{
+Die \printonlyper{Zeitschrift f"ur Geschichtswissenschaft}
+\addtoper{ZfG.}
+soll als Abk"urzung ins Zeitschriftenverzeichnis.
+Alternativ gibt auch
+\per{Z\onlyhere{eitschrift }%
+f\onlyhere{"ur }%
+G\onlyhere{eschichtswissenschaft}%
+\onlyout{.}} nur einen Eintrag.
+\\[.75ex]
+\fbox{\parbox{.95\textwidth}{Vergleichen Sie dazu die Angabe
+ der Seite \label{hier}{\balistnumemph{\pageref{hier}}} hier
+ nach {\perlistemph{ZfG.}}\ im Zeitschriftenverzeichnis
+ oben S.\,{\pageref{printnumper}}.}}\vspace{-.75ex}
+}
+
+\vfill\noindent
+In Voreinstellung \verb|\printlongpervol| wird vor der
+\verb+|+\ko\textit{Bandnummer}\ko\verb+|+ der Separator\hspace{.2em}
+{\footnotesize Bd.}\hspace{.2em}
+ausdruckt. Mit \verb|\notprintlongpervol| wird stattdessen nur
+ein Leerzeichen gedruckt; davor bleibt nach {\footnotesize [L]} bzw.\
+{\footnotesize [Q]} das Komma erhalten:
+
+\Doppelbox
+{
+Voreinstellung.\bs footnote\{
+\\ \ \ \bs kqu\{Marx\}\{Kapital\}\string|1\string|[2].\}
+\\[2ex] \bs footnote\{Kein Ebenda.\}
+\\[4ex] \bs notprintlongpervol
+\\[1ex] ...\bs footnote\{
+\\ \ \ \bs kqu\{Marx\}\{Kapital\}\string|1\string|[3].\}
+\\[1ex] ...\bs footnote\{
+\\ \ \ \bs kqu\{Marx\}\{Kapital\}\string|1\string|[4].\}
+}
+{
+Voreinstellung.\footnote{
+\kqu{Marx}{Kapital}|1|[2].}
+
+\footnote{Kein Ebenda.}
+
+\
+
+\notprintlongpervol
+...\footnote{
+\kqu{Marx}{Kapital}|1|[3].}
+
+...\footnote{
+\kqu{Marx}{Kapital}|1|[4].}
+}\label{notprintlongpagefolio}
+
+\noindent
+\verb|\notprintlongpagefolio| stellt ein, dass vor der Seitenzahl
+ein Doppelpunkt statt\hspace{.1em} {\footnotesize S.}\hspace{.1em}
+steht. Mit dem erw"ahnten \verb|\notprintlongpervol| wird bei
+\verb+_+\textit{Heftnummern}\verb+_+ im Falle von \textsc{ebd.}\hy
+Setzung zus"atzlich\hspace{.1em} {\footnotesize Nr.}\hspace{.1em} nicht ausgedruckt:
+
+\Doppelbox
+{
+ \bs notprintlongpagefolio
+ \\[.5ex] \bs footnote\{
+ \\ \ \ \bs per\{ShortMagazine\}\string_25\string_[4].\}
+ \\[.2ex] \bs footnote\{
+ \\ \ \ \bs per\{ShortMagazine\}\string_25\string_[5].\}
+ \\[.2ex] \bs footnote\{
+ \\ \ \ \bs per\{ShortMagazine\}\string_26\string_[6].\}
+ \\[3ex] \bs notprintlongpervol
+ \\[.5ex] \bs footnote\{
+ \\ \ \ \bs per\{ShortMagazine\}\string_27\string_[7].\}
+}
+{
+ \notprintlongpagefolio
+ \footnote{\per {ShortMagazine}_25_[4].}
+
+ \footnote{\per {ShortMagazine}_25_[5].}
+
+ \footnote{\per{ShortMagazine}_26_[6].}
+
+ \notprintlongpervol
+ \footnote{\per{ShortMagazine}_27_[7].}
+}
+
+
+
+\noindent
+Das folgende Beispiel zeigt (unten), was Setzen von
+\verb|\notprintlongpervol| und
+\verb|\notprintlongpagefolio|\footnote{\texttt{\bs notprintlongpagefolio}\hspace{.1em}
+bewirkt zudem, dass vor\hspace{.05em} \texttt{(}\textit{n}\texttt{)}\hspace{.05em} nicht "`Bl."'
+ausgedruckt wird; vgl.\hspace{-.1em} \texttt{\bs arq}\hspace{.1em} im
+folgenden Kap.\,\ref{archivquellen} \baref{BdSarq}.}
+zusammen mit \verb|\notannouncektit| ergibt:
+
+\vspace{.5ex}
+\Doppelbox
+{
+\vspace{1.5ex}
+\bs notprintlongpagefolio
+\\[1.5ex]
+Voll.\bs footnote\{\bs vqu \{John
+\\ \ \ Frederick Charles\} \{Fuller\}
+\\ \ \H{\{}Gold Medal (Military)
+\\ \ \ \bs ktit\{Prize Essay\} for 1919,
+\\ \ \ in: \bs per\{Journal of the
+\\ \ \ \ \ \ \ \ Royal United Service
+\\ \ \ \ \ \ \ \ Institution\}\string_458
+\\ \ \ \ \ \ \ \ \ (1920)\string_[239-274]\H{\}}*[240].\}
+\\[1.5ex]
+...\bs footnote\{\bs kqu \{Fuller\}
+\\ \ \ \ \ \ \ \ \ \ \ \ \{Prize Essay\}[241].\}
+\\[3.5ex]
+ \bs notannouncektit
+\\[.25ex]
+ \bs notprintlongpervol
+\\[1.5ex]
+...\bs footnote\{\bs vqu\{R[ichard]\}
+\\ \ \{Chevenix Trench\}
+\\ \ \{Gold Medal (Military)
+\\ \ \ \bs ktit\{Prize Essay\} for 1922,
+\\ \ \ in: \bs per\{Journal of the
+\\ \ \ \ \ \ \ \ Royal United Service
+\\ \ \ \ \ \ \ \ Institution\}\string_470
+\\ \ \ \ \ \ \ \ \ (1923)\string_[199-227]\}*[200].\}
+\\[-1ex] \strut
+}
+{\notktitaddtok
+\notprintlongpagefolio
+\texttt{\% Solche Befehle sollten nur}\\
+\texttt{\% global gesetzt werden; hier}\\
+\texttt{\% geht es darum, die Konse-}\\
+\texttt{\% quenzen zu demonstrieren.}
+\\[7.5ex]
+Voll.\footnote{\printonlyvqu {John\, Frederick\, Charles\,} {Fuller}
+{Gold Medal (Military) \ktit{Prize Essay} for 1919,
+in: \per{Journal of the Royal United Service
+Institution}_458 (1920)_[239-274]}*[240].\label{erste}}
+
+\vspace{3.5ex}
+"Au"seres Ebenda.\footnote{\printonlykqu {Fuller}
+{Prize Essay}[241].}
+
+\notannouncektit
+\notprintlongpervol
+\vspace{1.7ex}
+Voll und inneres Ebenda.\footnote{\printonlyvqu{R[ichard]\ \ } {Chevenix\ \ Trench}
+{Gold Medal (Military) \ktit{Prize Essay} for 1922,
+in: \per{Journal of the Royal United Service
+Institution}_470 (1923)_[199-227]}*[200].}
+}
+
+\vspace{.5ex}\noindent
+\verb|\notprintlongpervol| ordnete an, dass in der letzten Fu"snote
+nach dem inneren \textsc{ebd.} (vor {\footnotesize 470}) kein {\footnotesize Nr.}\
+ausgedruckt wurde. In Fu"snote~\ref{erste} fehlte {\footnotesize Nr.}\pdfko{.5}\
+bereits, weil dort kein \textsc{ebd.} gesetzt ist und
+in \verb|\gpername| das zweite Argument von \verb|\ifbaibidem| dann
+\verb|\pernosep| ausdruckt, ein gesch"utztes Leerzeichen.\footnote{
+\texttt{\bs renewcommand\{\bs pernosep\}\{\bs bastrut\bs\ \bs bacorr\}}
+\\ w"urde stattdessen einen Zeilenumbruch am Leerzeichen erlauben \balabel{pernosep}
+("Anderung in \BibArts\ 2.2).}\pdfko{.5}
+
+\vspace{3ex}\noindent
+Die Befehle sind auch auf Listen anwendbar. Ausgedruckt
+werden w"urde beispielsweise ein Eintrag unter\hspace{.1em}
+\verb|{\notprintlongpagefolio|\,\verb|\printvqu|\,\verb|}|\hspace{.1em} so:
+
+\vspace{.1ex}
+{\footnotesize
+\begin{description}\parsep 0ex \itemsep -.5ex
+\item \textsc{[Anonym]}: Aufmarschanweisungen 1912,
+abgedruckt in: \textsc{Ehlert}\baslash \textsc{Epkenhans}\baslash \textsc{Gro"s}\pdfko{1}\
+[Hrsg.]: Schlieffenplan [Q]: 462-466.
+\end{description}}
+
+
+
+\newpage
+\section{Archivquellen}\label{Sect7}\label{archivquellen}
+
+Historische Forschungsliteratur weist h"aufig ein separates Verzeichnis
+f"ur \textit{ungedruckte Quellen} auf, die \BibArts\ wiederum aus
+Haupttext oder Fu"snoten gewinnen kann. Zudem ist eine korrekte
+\textsc{ebd.}\hy Setzung in Fu"snoten n"otig. Beides bew"altigt der Befehl\hspace{-.1em}
+\verb|\arq| mittels zwei Pflicht- und zwei optionalen Argumenten.
+Das erste Pflichtargument nennt ein Schriftst"uck und das zweite eine
+Archivsignatur (eventuell samt Eigennamen des Quellenbestandes). Die
+\textsc{ebd.}\hy Setzung kann mal Schriftst"uck \textit{und} Signatur betreffen,
+mal nur die\pdfko{.25}\
+Signatur (wenn Sie ein anderes Schriftst"uck aus derselben
+Akte zitieren). Nur das zweite Pflichtargument kommt ins Verzeichnis
+ungedruckter Quellen.
+
+Falls Sie in Ihren Fu"snoten h"aufig verschiedene Mappen \textit{einer}
+Akte (gleiche Signatur) verwenden, k"onnen Sie zudem etwas wie\hspace{.1em}
+{\footnotesize\textsc{Ebd.}, Bd.\,2}\hspace{.15em} drucken lassen: Die Mappen\hy
+Nummern w"aren \textit{dann} stets in senkrechten Strichen nach dem zweiten
+Pflichtargument zu nennen. Falls die Schriftst"ucke in der Mappe paginiert
+sind, kann die Blattnummer \textit{in jedem Fall} zuletzt in
+runden Klammern stehen. Vor {\small\verb+|+\ko\textit{Band}\verb+|+} sowie
+vor {\small\verb+(+\textit{Blatt}\verb+)+} darf kein Leerzeichen sein:
+
+\vspace{-.125ex}
+\Doppelbox
+{\strut\\[-2ex]
+...\bs footnote\{\bs arq\{Haber
+\\ \ am 17.12.1914 an
+Kultusminister\} \{GStAPK, HA\bs ,1, Rep\string~76\string~Vc,
+\\ \ Sekt\string~1,
+Tit\string~23, Litt\string~A,
+\\ \ Nr.\bs ,108\}\string|2\string|(223\bs f).\}
+\\[1ex]
+...\bs footnote\{\bs arq\{Setsuro Tamaru
+\\ \ \ \ am 24.12.1914 an
+Clara Haber\} \{GStAPK, HA\bs ,1, Rep\string~76\string~Vc,
+\\ \ Sekt\string~1,
+Tit\string~23, Litt\string~A,
+\\ \ Nr.\bs ,108\}\string|2\string|(226-231).\}
+\\[1ex]
+...\bs footnote\{\bs arq\{Setsuro Tamaru
+\\ \ \ \ am 24.12.1914 an
+Clara Haber\} \{GStAPK, HA\bs ,1, Rep\string~76\string~Vc,
+\\ \ Sekt\string~1,
+Tit\string~23, Litt\string~A,
+\\ \ Nr.\bs ,108\}\string|2\string|(226-231).\}
+\\[1ex]
+...\bs footnote\{\bs arq\{Valentini am
+\\ \ \ \ 13.3.1911 an Schmidt\} \{GStAPK,
+HA\bs ,1, Rep\string~76\string~Vc, Sekt\string~1, Tit\string~23, Litt\string~A,
+Nr.\bs ,108\}\string|1\string|(47).\}
+\\[-2.25ex]\strut
+}
+{
+Solche komplexen Signaturen m"ussen nat"urlich
+mit der Kopier\hy Funktion des Texteditors eingef"ugt
+werden; nur bei gleichen Eintr"agen f"uhrt \BibArts\ eine Ebendasetzung durch:
+
+\vspace{.5ex}
+Neue Akte, erste Mappe.\footnote{\arq{Haber am 17.12.1914 an
+Kultusminister} {GStAPK, HA\,1, Rep~76~Vc, Sekt~1,
+Tit~23, Litt~A, Nr.\,108}|2|(223\f).}
+
+Selbe Mappe, anderes Schriftst"uck.\footnote{\arq{Setsuro Tamaru am 24.12.1914 an
+Clara Haber} {GStAPK, HA\,1, Rep~76~Vc, Sekt~1,
+Tit~23, Litt~A, Nr.\,108}|2|(226-231).}
+
+Selbes Schriftst"uck.\footnote{\arq{Setsuro Tamaru am 24.12.1914 an
+Clara Haber} {GStAPK, HA\,1, Rep~76~Vc, Sekt~1,
+Tit~23, Litt~A, Nr.\,108}|2|(226-231).}
+
+Selbe Akte, zweite Mappe.\footnote{\arq{Valentini am 13.3.1911 an Schmidt}
+{GStAPK, HA\,1, Rep~76~Vc, Sekt~1, Tit~23, Litt~A,
+Nr.\,108}|1|(47).}
+}
+
+\vspace{-.25ex}\noindent
+Blattnummern werden (deutsch) im Singular und Plural gleich angek"undigt:
+
+\vspace{-.625ex}
+{\small
+\begin{verbatim}
+ \gisonfolioname => {, Bl.\,}
+ \gisonfoliopname => {, Bl.\,}
+\end{verbatim}}
+
+\vfill\noindent
+Ohne dies mit \verb|\renewcommand| zu ver"andern, wirkt sich alternativ der
+erw"ahnte Schalter \verb|\notprintlongpagefolio| so auf \verb|\arq| aus:
+
+
+\newpage
+\Doppelbox
+{\strut\\[-2ex]
+\bs notprintlongpervol
+\bs notprintlongpagefolio
+\\[1ex]
+...\bs footnote\{ \bs arq\{Haber am
+\\ \ \ \ 17.12.1914 an Kultusminister\}
+\\ \ \ \b{\{}GStAPK, HA\bs ,1, Rep\string~76\string~Vc,
+\\ \ \ \ \ \ Sekt\string~1, Tit\string~23, Litt\string~A,
+\\ \ \ \ \ \ \ \ Nr.\bs ,108\b{\}}\string|2\string|(223 \bs f).\}
+\\[-2.25ex]\strut
+}
+{\notprintlongpervol
+ \notprintlongpagefolio
+Die \texttt{|}\ko\textit{Bandnummer}\ko\texttt{|}
+wird hier ohne `Bd.'\slash`Bde.' ausgedruckt und
+\texttt{(}\textit{Blatt}\texttt{)} steht hinter `:'
+statt `Bl.'.\footnote{ \arq{Haber am 17.12.1914 an
+Kultusminister} {GStAPK, HA\,1, Rep~76~Vc, Sekt~1,
+Tit~23, Litt~A, Nr.\,108}|2|(223 \f).\balabel{BdSarq}}
+}\balabel{banotlong}%
+
+
+\vspace{1.75ex}\noindent
+In den\hspace{.1em} \textbf{Ausdruck des Archivquellenverzeichnisses}\hspace{.1em} lassen sich
+optional "Uberschriften einf"ugen. Zur korrekten Sortierung
+muss das erste Argument mit \textit{den ersten Buchstaben
+der jeweils "uberschriebenen Signatur} beginnen:
+
+\vspace{1.25ex}\noindent
+{\small
+\verb| \arqsection{GStAPK}{Geheimes Staatsarchiv|\\
+\verb| Preu|\texttt{"s}\verb|ischer Kulturbesitz}|\\
+\verb| \arqsection{BA} {Bundesarchiv}|
+}
+ \arqsection{GStAPK}{Geheimes Staatsarchiv
+ Preu"sischer Kulturbesitz}
+ \arqsection{BA} {Bundesarchiv}
+
+\vspace{2ex}\noindent
+\verb|\arqsubsection| \label{arqsection} erzeugt eine Unter\fhy,
+\verb|\arqsubsubsection| eine Unter\hy Unter\hy "Uberschrift;
+sie m"ussen je in \underline{mehr} Zeichen mit den "uberschriebenen
+Signaturen "ubereinstimmen.
+\verb|\arqsubsection {GStAPK|\underline{\texttt{, HA}}\verb|} {Hauptabteilung}|
+\arqsubsection {GStAPK, HA} {Hauptabteilung} wurde hier verwendet.
+Die Zahl der Mappen in Nr.\,108 kann au"serdem mit einmaligem
+fill\hy Befehl an den \verb|\arq|\hy Zugang im Verzeichnis angeh"angt werden:
+
+\vspace{-.25ex}\noindent
+{\small
+\begin{verbatim}
+ \fillarq{GStAPK, HA\,1, Rep~76~Vc, Sekt~1,
+ Tit~23, Litt~A, Nr.\,108} {2\,Bde.}
+\end{verbatim}}
+ \fillarq{GStAPK, HA\,1, Rep~76~Vc, Sekt~1,
+ Tit~23, Litt~A, Nr.\,108} {2\,Bde.}
+
+
+\noindent
+Um im Verzeichnis "Uberschriften auf neue Seiten zu setzen,
+w"aren alternativ zudem Angaben wie \verb|\arqsection[\newpage]{BA}{Bundesarchiv}| m"oglich.
+
+\vspace{2ex}\noindent
+\verb|\printarq| druckt die von \verb|bibsort| erzeugte\hspace{-.15em}
+\verb|.arq|\hy Datei so aus (vgl.\ S.\,\pageref{newpage}):
+
+\vfill
+\printarq
+
+
+\newpage\noindent
+Falls Sie\hspace{-.1em} \verb|\arq| in\hspace{-.1em} \verb|\printonlyarq|
+und\hspace{-.1em} \verb|\addtoarq| separieren, m"ussen beide die genannten
+zwei Pflichtargumente haben. Das erste Argument von\hspace{-.1em}
+\verb|\addtoarq| sollten Sie dabei nicht leer lassen, sondern
+wie\hspace{-.1em} \verb|\printonlyarq| bef"ullen ...
+
+\Doppelbox
+{
+...\bs footnote\b{\{} \bs printonlyarq\{\%
+\\ \ \ Gesellschaftsvertrag der KCAG\}
+\\ \ \{BA R\bs ,8729\string~4\}(94).
+\\[.25ex] \ \bs addtoarq\{Gesellschaftsvertrag
+\\ \ \ der KCAG\}\{BA Zwischenarchiv
+\\ \ \ Dahlwitz\bs hy Hoppegarten
+\\ \ \ R\bs ,8729\string~4\}(94)
+Die ...\b{\}}
+}
+{
+...\footnote{ \printonlyarq{%
+Gesellschaftsvertrag der KCAG}
+{BA R\,8729~4}(94).
+\addtoarq{Gesellschaftsvertrag
+der KCAG}{BA Zwischenarchiv
+Dahlwitz\hy Hoppegarten
+R\,8729~4}(94)
+\\ Die \texttt{(94)} hinter dem addto\hy Befehl wird einfach 'verschluckt' (nicht gedruckt).
+\\ Grundlage der \textsc{ebd.}\hy Setzung ist die printonly\hy Komponente.}
+}
+
+\noindent
+... denn es wird (wie sonst auch auch die jeweils
+ersten Argumente von\hspace{-.1em} \verb|\arq|)
+zur Nachvollziehbarkeit als \hspace{.1em}
+{\small\verb|%%|~\textit{Kommentar}\ko~\verb|%%|}
+\hspace{.1em} im\hspace{-.1em} \verb|.aux|\hy File festgehalten:
+
+\vspace{-.75ex}
+{\footnotesize\begin{verbatim}
+ %\archqentry{BA Zwischenarchiv Dahlwitz\hy Hoppegarten
+ R\,8729~4}{}{{}{}{}{}}{{35}{97}{@}}[13][42](line 2704)
+ %% (mpf) Gesellschaftsvertrag der KCAG %%
+\end{verbatim}}
+
+\vspace{-.75ex}\noindent
+Die Eintr"age {\small\verb|(f)|} bzw.\ {\small\verb|(mpf)|}
+dokumentieren, ob Zug"ange aus einer normalen oder
+\verb|minipage|\hy Fu"snote herstammen (oder leer: nicht aus
+einer Fu"snote).
+
+\vspace{1.25ex}\noindent
+Im\hspace{-.1em} \verb|.arq|\hy File stehen alle
+\textsf{R\,8729~4} zusammengefasst unter der BA\hy "Uberschrift.
+Im {\small\verb|%%|~\textit{Kommentar}\ko~\verb|%%|}
+steht der erste Eintrag.
+Die Band\fhy\ko\slash Mappen\hy Nummer\,\verb|4|\pdfko{1}\ stand stets
+\textit{im} zweiten\hspace{-.1em} \verb|\arq|\hy Argument und wird im Verzeichnis ausgedruckt:
+
+\vspace{-.5ex}
+{\scriptsize\begin{verbatim}
+ \archqentry{BA}{Bundesarchiv}{{\bastrut \ \bacorr
+ $-$ }{\bahasdot }{1}{}}{{}{}{-}}[13][42](line 2641)
+ %% <- List-internal heading (class 1).
+
+ \archqentry{BA Zwischenarchiv Dahlwitz\hy Hoppegarten
+ R\,8729~4}{}{{}{}{}{}}{{35}{}{}}[13][42](line 2760) %% %%
+ \first@baidx{35, 35$^{97}$, 41$^{101}$, 48}
+\end{verbatim}}
+
+\vspace{-.5ex}\noindent
+Falls Sie Ihren Leser aber einfach nur darauf hinweisen wollen, dass
+es einen Bestand oder eine Akte gibt (also kein bestimmtes
+Schriftst"uck daraus zitieren), kann das erste Argument von arq\hy
+Befehlen freilich auch leer bleiben (das ist "ubrigens der erste
+\textsf{R\,8729~4}\hy Eintrag S.\,\pageref{toparq}, der obiges\hspace{.3em}
+{\scriptsize\verb|%% %%|}\hspace{.3em} erzeugte):
+
+\Doppelbox
+{
+In \bs arq\{\}\{BA Zwischenarchiv
+\\ \ \ \ \ \ \ Dahlwitz\bs hy Hoppegarten
+\\ \ \ \ \ \ \ R\bs ,8729\string~4\} findet sich ...
+}
+{
+In \arq{}{BA Zwischenarchiv
+Dahlwitz\hy Hoppegarten
+R\,8729~4} findet sich ...
+\label{toparq}
+}
+
+\vfill\noindent
+{\sffamily Zur Schrifteinstellung mit }\verb|\arqemph|{\sffamily\
+und }\verb|\arqlistemph|{\sffamily\ unten S.\,\pageref{arqemph1} und \pageref{arqemph2}. \\
+Und S.\,\pageref{Gedankenstriche} wird erkl"art, wie die
+fill\hy\ und section\hy Separatoren einzustellen sind.}
+
+
+\newpage
+\section{Orts\fhy, Sach\hy\ und Personenregister}\label{Sect8}
+
+\BibArts\ stellt drei Register zur Verf"ugung. (\textsc{MakeIndex} kann
+unabh"angig\pdfko{.5}\
+davon parallel verwendet werden.) \verb|bibsort| nutzt seine F"ahigkeit,
+auch Fu"snotennummern zu verarbeiten. Bef"ullt werden die Register mit\hspace{-.1em}
+\verb|\addtogrr|\pdfko{.75}\
+(Ortsregister), \verb|\addtosrr| (Sachregister) und \verb|\addtoprr|
+(Personenregister). Ein vielfach verwendetes Stichwort \textit{kann} zudem mittels fill\hy
+Befehl einen ausf"uhr"-lich{\small(}\hspace{-.05em}er\hspace{-.05em}{\small)}en
+Zusatz erhalten, der nur einmal getippt zu werden braucht.
+fill\hy Befehle haben ein benutztes Stichwort als
+erstes und eine Erg"anzung dazu als zweites Argument.
+Sie sind wie die addto\hy Befehle im Text unsichtbar:
+
+\Doppelbox
+{
+\vspace{.75ex}
+\underline{\bs fillgrr\{Rom\}\{Stadt in Italien\}}
+\\[1.2ex] Hier geht es ums Ortsregister (Geografie).\bs footnote\b{\{}Rom
+\\[0.2ex] \ \ \underline{\bs addtogrr\{Rom\}} ist ein Ort.\b{\}}
+\\[1.1ex] Nero lebte in Rom.\underline{\bs addtogrr\{Rom\}}
+\\[1.1ex] \bs printnumgrrlist
+\vspace{.25ex}
+}
+{
+\fillgrr{Rom}{Stadt in Italien}
+Hier geht es ums Ortsregister (Geografie).\footnote{Rom
+\addtogrr{Rom} ist ein Ort.}
+Nero lebte in Rom.\addtogrr{Rom}
+ %{\batwocolitemdefs
+\printnumgrrlist
+ %}
+\vspace{-.25ex}
+}
+
+
+\vspace{-.25ex}\noindent
+\verb|\printnumgrr| erg"abe (mit "Uberschrift \verb|\ggrrtitlename| im Deutschen: \ggrrtitlename)
+einen zweispaltigen Ausdruck, der hier vermieden wurde. Die beiden
+anderen Register werden mit \verb|\printnumprr| und \verb|\printnumsrr|
+ausgedruckt.\footnote{\balabel{fromnopagexrrsep}Falls Eintr"age in den zahlen\hy losen Ausgaben
+\texttt{\bs printgrr}, \texttt{\bs printsrr} und \texttt{\bs printprr}\pdfko{1.5}\
+mit einem Punkt enden sollen:\hspace{.25em}
+\texttt{\bs renewcommand\{\bs fromnopagexrrsep\}\{\bs bapoint\}}}
+Stichworte wie "`Rom"' werden in \verb|\xrrlistemph| gesetzt, das \label{xrr}
+sich mit \verb|\itshape| etc.\ belegen l"asst; verwendete \textit{fills}
+behalten die Umfeldschrift.
+
+\vspace{2ex}\noindent
+\verb|bibsort| kann keine Unterstichworte erzeugen, sondern nur
+Haupteintr"age. Argumente (Stichworte) werden wie immer so getippt, dass
+\LaTeX\ sie auch direkt drucken w"urde (anders als bei \verb|\index|
+gibt es keine Sonderzeichen); nur zerbrechliche
+Befehle sollten Sie mit \verb|\protect| sch"utzen.
+
+\vspace{2ex}\noindent
+Neben \verb|\fillgrr| existieren \verb|\fillsrr| und \verb|\fillprr|.
+Falls Sie ein Stichwort "uberfl"ussigerweise zweimal und dann irrt"umlich
+auch noch mit unterschiedlichen
+Zus"atzen bef"ullen, w"urde \verb|bibsort| z.\,B. folgende Warnung ausgeben:
+
+\vspace{-.75ex}
+{\scriptsize\begin{verbatim}
+ %%> Warning: Different fills for head "Rom":
+ %% *Accept file 1 line 2669 "Stadt in Italien";
+ %% *Reject file 1 line 2678 "Stadt in Mittel-Italien".
+\end{verbatim}}
+
+\vspace{-1ex}\noindent
+Den Registern lassen sich Querverweise der Art "`Roma $\rightarrow$ Rom"'
+hinzuf"ugen:
+
+\vspace{-1.25ex}{\small
+\begin{verbatim}
+ {\renewcommand{\xrrlistopen}{\bastrut\ \bacorr$\rightarrow$ }
+ \renewcommand{\xrrlistclose}{}
+ \fillgrr{Roma}{Rom}} %\addtogrr{Roma} nicht verwenden!
+\end{verbatim}}\label{xrrlistclose}%
+
+In den Listen bestimmen allein die Stichworte die Sortierreihenfolge;
+die F"ullungen haben kein Gewicht. Falls Sie die Zusatzf"ullungen nicht in
+runden Klammern gedruckt haben wollen, k"onnen Sie \verb|\xrrlistopen|
+etwa in \verb|{, }|\pdfko{.5}\
+und \verb|\xrrlistclose| in \verb|{}|
+"andern.\footnote{Im Beispiel sind wegen des niederen Zeichens~`\texttt{,}'
+am Kopf von \texttt{\bs xrrlistopen} weder \texttt{\bs bastrut} noch die
+\textit{italics}\hy Korrektur \texttt{\bs bacorr} n"otig; vgl.
+unten das Kap.\,\ref{schraegkap} ab S.\,\pageref{schraegkap}.}
+Die Serie von fill\hy Befehlen ist im folgenden sorgf"altigen Beispiel
+in eine \verb|{unused}|\hy Umgebung gesetzt \baref[vgl.]{unused},
+damit an ihren Positionen im Text kein horizontaler Leerraum erzeugt wird:
+
+\vspace{1ex}
+{\small\begin{verbatim}
+ %% Verschiedene Stellen im Text mit Namen:
+ ... Winston Churchill \addtoprr{Churchill} ...
+ ... Hans Maier \addtoprr{Maier, Hans} ...
+ ... Peter Maier \addtoprr{Maier, Peter} ...
+ ... Theobald von Bethmann-Hollweg \addtoprr{Bethmann-Hollweg} ...
+
+ %% Eine gute Stelle zum Sammeln der optionalen
+ %% Zusatzfuellungen ist VOR dem Ausdruckbefehl:
+ \begin{unused}
+ {\renewcommand{\xrrlistopen}{, }%
+ \renewcommand{\xrrlistclose}{}%
+ \fillprr{Churchill}{Winston (1874-1965)}
+ \fillprr{Bethmann-Hollweg}{Theobald von (1856-1921)}
+ }%
+ %% Wieder in Default-Klammerung (...):
+ \fillsrr{Maier, Peter}{1887-\protect\framebox{????}}
+ \end{unused}
+
+ \printnumprr
+\end{verbatim}}\label{pgofexample}
+
+
+\vspace{1.5ex}\noindent
+Im obigen Beispiel sollen Personen, deren Nachnamen nur je \textit{eine}
+Person im Text hat, in den \verb|\addtoprr|\hy Argumenten eben auch nur mit
+diesem Nachnamen angetippt werden. Diese Nutzung ist wohl nur
+f"ur Fortgeschrittene geeignet. Verdeutlicht werden sollte
+jedoch: Die lokalen Umdefinitionen von \verb|\xrrlistopen| und
+\verb|\xrrlistclose| reisen separat mit dem \verb|Churchill|\hy\ und\pdfko{.5}\
+\verb|Bethmann-Hollweg|\hy \textit{fill} ins \hspace{-.2em}\verb|.prr|\hy File.
+Dann druckt \verb|\printnumprr| in etwa:
+
+
+\vspace{-0.25ex}
+\begin{description}\itemsep 0pt \parskip 0pt \lineskip 0pt \small
+\item Bethmann-Hollweg, Theobald von \\ (1856-1921)\hspace{1.2em}\textsf{\pageref{pgofexample}}
+\item Churchill, Winston (1874-1965)\hspace{1.2em}\textsf{\pageref{pgofexample}}
+\item Maier, Hans\hspace{1.2em}\textsf{\pageref{pgofexample}}
+\item Maier, Peter (1887-\framebox{????})\hspace{1.2em}\textsf{\pageref{pgofexample}}
+\end{description}
+
+
+\newpage
+\section{\texttt{\bs protect} und zerbrechliche Befehle}\label{Sect9}\label{zerbrechen}
+
+Ein \LaTeX\hy Befehl $-$\,etwa mit
+\verb|\newcommand{|\textit{Befehlsname}\verb|}{|\textit{Deklaration}\verb|}|
+definiert\,$-$ arbeitet bei der Ausf"uhrung seine Deklaration ab. Die
+besteht oft aus mehreren schon vorhandenen \LaTeX\hy Befehlen. Falls
+Sie den neuen Befehl\pdfko{.75}\
+\textit{in das Argument} eines \BibArts\hy Befehls wie etwa
+\verb|\vli| tippen, wird eine Kopie dieses Eintrags an Ort und Stelle
+ausgedruckt und eine zweite Kopie in das\hspace{-.2em} \verb|.aux|\hy
+File geschrieben. Ist der neue Befehl nicht gesch"utzt, wird er beim
+Schreiben in das\hspace{-.2em} \verb|.aux|\hy File von \LaTeX\
+allerdings teilweise ausgef"uhrt: Enth"alt die Deklaration gesch"utzte
+Befehle, werden \textit{sie} ins\hspace{-.2em} \verb|.aux|\hy File
+geschrieben; sind sie aber ungesch"utzt, wiederum deren Deklarationen
+$-$ u.\,s.\,w.
+
+Wie weit ein Befehl in diesem Sinne `zerbricht', ist also unklar. Ist
+ein neuer Befehl ungesch"utzt, droht zumindest, dass \verb|bibsort| Ihre
+Eintr"age nicht richtig sortiert. Schlimmstenfalls wird beim Schreiben
+ins\hspace{-.2em} \verb|.aux|\hy File oder beim Drucken der daraus erzeugten Liste die
+\TeX\hy Kapazit"at "uberschritten und die \LaTeX\hy "Ubersetzung Ihres
+Textes abgebrochen.
+
+Seit \LaTeX2e\ ist letzteres kaum noch ein Problem, da fast alle wichtigen
+Befehle gesch"utzt definiert sind. Allerdings bleibt das Risiko, dass
+Titel mit Ihren eigenen Neudefinitionen falsch einsortiert werden. Wenn Sie etwa
+\verb|\newcommand{\meinspace}{{\hskip 3cm}}| definieren und
+\verb|\meinspace| in das Argument eines \verb|\vli|\hy Befehls tippen,
+wird dies bei der \LaTeX\hy "Ubersetzung den Eintrag
+\verb|{\hskip 3cm}| im\hspace{-.2em} \verb|.aux|\hy File ergeben und Ihr
+Literaturtitel von \verb|bibsort| im\hspace{-.2em} \verb|.vli|\hy File
+entsprechend der Zeichenfolge \verb|3cm| einsortiert.
+
+\underbar{Gegenma"snahme:} Durch Tippen von \verb|\protect\meinspace|
+in solche Argumente ist der Befehl gesch"utzt; es wird \verb|\meinspace|
+ins\hspace{-.2em} \verb|.aux|\hy File kopiert.
+
+Dabei muss \verb|\protect| also nicht von \verb|\onlyout| maskiert werden!
+Vielmehr arbeitet \verb|\protect| in der addto- und der printonly\hy Komponente
+des \verb|\vli|\hy Befehls unterschiedliche Deklarationen ab; beim Ausdrucken
+tut es nichts.
+
+Falls Sie eine Eigendefinition sehr oft benutzen, k"onnen Sie $-$\,wie
+oben S.\,\pageref{ProtectBeispiel} f"ur \verb|\ko| vorgemacht\,$-$ den
+Schutz in eine Doppel\hy Definition einf"ugen.
+
+Da die \BibArts\hy Befehle meist nur Text aufnehmen sollen, stellt sich das
+Problem selten. In \verb|bibarts.sty| habe ich ggf.\ zerbrechliche Befehle
+gesichert, die zum Drucken von \textit{Buchstaben} dienen. Dieser Schutz erstreckt
+sich auf die Argumente aller \BibArts\hy Befehle, jedoch nicht auf die
+Argumente von \LaTeX\hy Befehlen wie \verb|\section|, die ebenfalls in Dateien
+schreiben! Nirgendwo gesichert ist \verb|\underline{X}|, von dem
+(ohne \verb|\protect| davor) im\hspace{-.2em} \verb|.aux|\hy File\pdfko{.25}\
+etwas wie\hspace{.1em}
+\verb|\relax| \verb|$\@@underline| \verb|{\hbox {X}}\mathsurround| \verb|\z@| \verb|$\relax|\pdfko{.25}\hspace{.1em}
+ankommt. Das wird von \verb|bibsort| zwar zwischen \verb|W|
+und \verb|Y| einsortiert; trotzdem sollten Sie ein neues\hspace{-.2em} \verb|.aux|\hy File
+bzw.\ die von \verb|bibsort| daraus erzeugten Dateien immer durchsehen,
+nachdem Sie einen Befehl in ein \BibArts\hy Argument setzten,
+"uber dessen Zerbrechlichkeit\slash Unzerbrechlichkeit Sie nichts wissen.
+
+Ob ein Befehl mit \verb|\protect| gesch"utzt werden sollte, ist nicht immer nur am
+Umstand erkennbar, ob das, was Sie im\hspace{-.15em} \verb|.tex|\hy File eingegeben haben,
+auch ebenso im\hspace{-.15em} \verb|.aux|\hy File erscheint. Der \BibArts\hy Befehl \verb|\hyf|
+ist ein Beispiel: Falls Sie \verb|\sethyphenation{german}| festgelegt haben,
+wird ins\hspace{-.15em} \verb|.aux|\hy File \verb|\oldhyf| eingetragen, sonst \verb|ff|. Das
+sollte eben nicht mit \verb|\protect| unterbunden werden (\verb|bibsort| kann
+sogar nur \verb|\oldhyf| richtig als \verb|f| sortieren, nicht jedoch \verb|\hyf|).
+Der Befehl macht aus \verb|Sto\hyf figur| unter Voreinstellung \verb|\sethyphenation{german}|,
+also alter deutscher Rechtschreibung: {\sethyphenation{german} `Sto\hyf figur'};
+unter Voreinstellung \verb|\sethyphenation{ngerman}| wird dagegen {\sethyphenation{ngerman} `Sto\hyf figur'}
+ausgedruckt. Und \verb|bibsort| sortiert jeweils das, was gedruckt wird. Es war
+n"otig, diesen Befehl in \BibArts\ einzuf"uhren, weil \verb|"ff| in Versionen von
+\verb|ngerman.sty| `fff' ausdruckt, \label{ff} was \verb|bibsort| anhand von \verb|"ff| aber
+nicht erkennen kann und jedenfalls stets als \verb|ff| sortiert. \verb|\hyf|~\verb|f| druckt
+nach Einstellung von \verb|german| ein {\sethyphenation{german} `\hyf f'}, das am Zeilenende ff-f getrennt wird.
+Parallel zu \verb|german.sty| gibt es
+\verb|Scha\hyl leistung|,
+\verb|Sta\hym mutter|,
+\verb|Ke\hyn nummer|,
+\verb|Ste\hyp pullover|,
+\verb|Sta\hyr rahmen| und
+\verb|Schri\hyt tempo|.
+Alle sollen ohne davorstehendes \verb|\protect|
+verwendet werden. Aus Symmetriegr"unden existiert noch\hspace{.1em} \verb|Dru\hyc| \verb|ker|
+$\Rightarrow$ Dru\hyc ker, das sich bei Trennung in k- wandelt.
+
+Zuletzt f"uhrt \BibArts~2.2
+den Befehl \verb|\newhyss| ein, das ein `Scharf\fhy S zwischen Vokalen' in neuer
+deutscher Rechtschreibung richtig trennt: In \textsc{small caps} trennt es s-s,
+und sonst, wie es der gew"ahlte Trennsatz f"ur Scharf\fhy S vorsieht (meist -\ss).
+\verb|\oldhyss| f"ur die alte deutsche Rechtschreibung trennt dagegen immer s-s.
+Verwendet werden soll \verb|\hyss|, \label{hyss}
+das mit \verb|german|\hy Trennung \verb|\oldhyss| ausf"uhrt, sonst \verb|\newhyss|.
+Der Befehl \verb|\hyss| ist wichtig, weil \BibArts\ Nachnamen in v- und k\fhy Befehlen
+defaultm"a"sig in \textsc{small caps} setzt, in dem `\ss' nicht existiert, sondern \textsc{\ss}
+gedruckt wird. Eine Trennung \verb|au"ser| $\Rightarrow$ \textsc{au"ser} f"ur ein `Scharf\fhy S zwischen Vokalen
+in einer Schrift, in der das Scharf\fhy S als ss dargestellt wird', ist nicht dudengerecht,
+\verb|au\hyss er| trennt aber \textsc{au\hyss er} in neuer Rechtschreibung richtig;
+in anderen Schrifts"atzen trennt es au\hyss er. An anderen Positionen sollten Sie Ihr Scharf\fhy S verwenden,
+etwa \verb|da"s|.
+
+Der ganze Aufwand wird also nicht nur betrieben, um w"ortliche Zitate
+aus der Zeit der alten deutschen Rechtschreibung original
+wiedergeben zu k"onnen: \verb|\hyss| wird auch f"ur die \texttt{ngerman}\hy Trennung ben"otigt.
+
+Die auf dieser Seite eingef"uhrten \BibArts\hy
+Befehle funktionieren auch im Argument von \verb|\MakeUppercase|. Die Worttennung
+zwischen Silben an Positionen vor und nach den erw"ahnten Zeichen erfolgt ebenso,
+wie sie auch mit \verb|"|\textit{x}\pdfko{.05}\ erfolgen w"urde. Es bleibt nur ein kleiner Sch"onheitsfehler:
+Mit \textsc{small caps} speziell im \verb|ngerman|\hy Trennsatz zeigt \verb|\hyss|
+im Argument von \verb|\showhyphens| f"alschlicherweise als Bildschirmausdruck an, es
+werde -\ss\ getrennt (Anzeige z.\,B.: \texttt{au-\"yer}); tats"achlich wird im Preview und im Papierausdruck aber wie
+gew"unscht vom dann ausgef"urten \verb|\newhyss| am Zeilenende \textsc{s-s} getrennt.
+
+
+\newpage
+\section{Punkte, \,\texttt{\bs bahasdot} \,und \,\texttt{\bs banotdot}}\label{Sect10}\label{Punkte}
+
+Die \BibArts\hy Befehle, die statt ihrer Argumente auch \textsc{ebd.}
+ausdrucken k"onnen,\pdfko{.5}\
+d"urfen den Ausdruck eines unmittelbar nach ihnen
+getippten Punktes eigenst"andig unterbinden. Sonst w"urden
+am Satzende oft zwei Punkte gedruckt (\kern-.5pt\textsc{ebd.}.).
+Diese Befehle sind \verb|\kli|, \verb|\kqu|, \verb|\per|
+und \verb|\abkper|, sowie \verb|\arq|.
+
+\vspace{1ex}\noindent
+In englischen Texten (unter \verb|\nonfrenchspacing|)\hspace{.1em} stellen
+Punkte nach \BibArts\hy Befehlen zudem das richtige
+\textit{spacing} ein: \hspace{.35em}\verb*|}. |\hspace{.25em} \textit{hinter} einem der oben aufgez"ahlten
+Befehle markiert ein Satzende und verl"angert das
+\verb*| | entsprechend.\pdfko{.75}\
+Auch\hspace{.1em} \verb*|\abk{X.X.X.}. |\hspace{.2em} bezeichnet ein Satzende und druckt
+\textit{immer} \hspace{.1em}\abk{X.X.X.}.
+
+Auch im \verb|\frenchspacing| (dt.\ oder frz.\ Texte mit stets gleicher Leerzeichenl"ange)
+sollten Sie hinter \verb|\kli| und sogar unter \verb|\notprinthints| tippen:
+
+\vspace{1ex}{\notprinthints\noindent\small
+\verb| [deutsch/franz.:] \kli{Maier}{D.\,D.\,R.}. N =>| \printonlykli{Maier}{D.\,D.\,R.}. N \\
+\verb| \nonfrenchspacing \kli{Maier}{D.\,D.\,R.}. N =>| {\nonfrenchspacing\printonlykli{Maier}{D.\,D.\,R.}. N}}
+
+\vspace{1.25ex}\noindent
+... denn nur dann k"onnen Sie sp"ater wieder auf \verb|\printhints| zur"uckschalten:\pdfko{1}\
+
+\vspace{1ex}{\printhints\noindent\small
+\verb| [deutsch/franz.:] \kli{Maier}{D.\,D.\,R.}. N =>| \printonlykli{Maier}{D.\,D.\,R.}. N \\
+\verb| \nonfrenchspacing \kli{Maier}{D.\,D.\,R.}. N =>| {\nonfrenchspacing\printonlykli{Maier}{D.\,D.\,R.}. N}}
+
+\vspace{1.75ex}\noindent
+\BibArts\ durchsucht viele Argumente nach Punkten und verhindert ..\
+eigenst"andig. Falls es doch ..\ druckt, `sieht' es den Punkt
+\textit{am Ende des Arguments}\pdfko{.5}\
+nicht. Mit \hspace{.2em}\verb|{|...\verb|\bahasdot}.| \hspace{-.1em}k"onnen
+Sie befehlen, den Punkt zu `verschlucken'.
+
+\vspace{1ex}\noindent
+Diese Halbautomatisierung ist seit Version~2.2 auf Band- und Seitenangaben ausgedehnt.
+Weiterhin drucken\hspace{.1em} \verb|\f].| und\hspace{.15em} \verb|\sq].|\hspace{.1em}
+(f"ur \textit{folgende} bzw.\ \textit{sequentes}\ko) ein `f.'
+unter {\small\verb|\bacaptionsgerman|} und (Beispiel) {\small\verb|\bacaptionsenglish|}:
+
+\vspace{1.25ex}\noindent
+{\small\bacaptionsenglish
+\verb+ \per{ZfG.}[2~f.]. => + \per{ZfG.}[2~f.]. \\
+\verb+ \per{ZfG.}[2~f.\baplural]. => + \per{ZfG.}[2~f.\baplural]. \\
+\verb+ \per{ZfG.}[2~f.\baplural\bahasdot]. => + \per{ZfG.}[2~f.\baplural\bahasdot]. \\
+\verb+ \per{ZfG.}[2 \f]. => + \per{ZfG.}[2 \f].
+}
+
+\vspace{1.75ex}\noindent
+Ein Sonderfall: \verb|\bahasdot| darf \textit{nicht}
+nach \verb|!| oder \verb|?| ans Argumenten\hy Ende\pdfko{1}\
+gesetzt werden, weil dann ggf.\ notwendige \textit{italics}\hy Korrekturen unterbleiben:
+
+\vspace{1ex}\noindent
+{\small
+{\renewcommand{\kxxemph}{\itshape}\notprinthints \showbacorr
+ \verb| \renewcommand{\kxxemph}{\itshape} \notprinthints \showbacorr| \\[.5ex]
+ \verb+ (\kli{Kingsley}{Westward Ho!\bahasdot}) =>+ (\printonlykli{Kingsley}{Westward Ho!\bahasdot}) \\
+ \verb+ (\kqu{Sienkiewicz}{Quo vadis?\bahasdot}) =>+ (\printonlykqu{Sienkiewicz}{Quo vadis?\bahasdot})
+}}
+
+\vspace{1.75ex}\noindent
+Vielmehr ist es n"otig, nur das Setzen des nachfolgenden Punktes zu unterbinden,
+die \textit{italics}\hy Korrektur aber zu belassen. \verb|\banotdot| ist zu verwenden:\pdfko{1}
+
+\vspace{1.25ex}\noindent
+{\small
+{\renewcommand{\kxxemph}{\itshape}\showbacorr\notprinthints
+\verb+ (\kli{Kingsley}{Westward Ho!\banotdot}) =>+ (\printonlykli{Kingsley}{Westward Ho!\banotdot}) \\
+\verb+ (\kqu{Sienkiewicz}{Quo vadis?\banotdot}) =>+ (\printonlykqu{Sienkiewicz}{Quo vadis?\banotdot})
+}}
+
+\vspace{1.75ex}\noindent
+Damit \verb|bibsort| stets zeichengleiche Eintr"age bekommt,
+muss ein einmal begonnenes Setzen von \verb|\banotdot| beim
+jeweiligen Titel immer erfolgen:
+
+\vspace{1ex}\noindent
+{\footnotesize
+{\renewcommand{\kxxemph}{\itshape}\notprinthints \showbacorr
+ \verb| \renewcommand{\kxxemph}{\itshape} \notprinthints \showbacorr| \\[.25ex]
+ \verb+ (\kli{Kingsley}{Westward Ho!\banotdot}.) =>+ (\printonlykli{Kingsley}{Westward Ho!\banotdot}.) \\
+ \verb+ \kli{Kingsley}{Westward Ho!\banotdot}[3]. =>+ \printonlykli{Kingsley}{Westward Ho!\banotdot}[3]. \\
+ \verb+ \kqu{Sienkiewicz}{Quo vadis?\banotdot} in =>+ \printonlykqu{Sienkiewicz}{Quo vadis?\banotdot} in \\
+ \verb+ \kqu{Sienkiewicz}{Quo vadis?\banotdot}|2| =>+ \printonlykqu{Sienkiewicz}{Quo vadis?\banotdot}|2|%
+}}\label{kxxB}
+
+\vspace{2.5ex}\noindent
+Nicht automatisch bew"altigt wird \,\verb|!\banotdot}| \,vor \textit{mehreren} Punkten.
+Zur\pdfko{1}\
+L"osung dieses sehr seltenen Problems kann \verb|\strut| nach \verb|}| gesetzt
+werden: \verb|\kli{N.}{XX!\banotdot}...| kann zur falschen \textit{italics}\hy Korrektur
+{\renewcommand{\kxxemph}{\itshape}\notprinthints \showbacorr
+ \printonlykli{N.}{XX!\banotdot}...\pdfko{.5}\
+f"uhren, w"ahrend
+\,\verb|\kli{N.}{XX!\banotdot}\strut...| \,zu\,
+\printonlykli{N.}{XX!\banotdot}\strut...} \,f"uhrt.\pdfko{.5}\
+
+\vspace{2ex}\noindent
+\fbox{\parbox{.98\textwidth}{\hfil\sffamily
+Einfacher ist es sicher, wenn Sie sich Kurztitel ohne Satzzeichen aussuchen.}}
+
+
+\vspace{4ex}\noindent
+Nach dem letzten Argument von \verb|\vli| oder \verb|\vqu| l"oscht
+\BibArts\ einen Punkt\pdfko{1}\
+\textit{im Text} \underline{nie} automatisch,
+weil es \textit{dort} das letzte Argument nicht durchsucht.
+Falls das letzte Argument eines v\fhy Befehls mit einem Punkt
+enden sollte, ist die Verwendung von \verb|\bahasdot| in jeder
+Sprache sinnvoll, denn nur dann ist ein sp"aterer Wechsel zwischen
+\verb|\announcektit| und \verb|\notannouncektit|\pdfko{1.5}\
+m"oglich (die Ank"undigung der sp"ateren Kurzzitierweise).
+
+\Doppelbox
+{
+\bs notannouncektit
+\\
+Vers.\string~1: \bs vli\{Niklas\}\{Luhmann\} \{\bs ktit\{Soziale Systeme\}. Grundri"s
+einer allgemeinen Theorie, 1984: Frankfurt/M.\}. \ \ \%\%~FALSCH
+\\[1ex]
+\% Nicht in die Listen umgesetzt:
+\\[.25ex]
+Vers.\string~2: \bs vli\{Niklas\}\{Luhmann\} \{\bs ktit\{Soziale Systeme\}. Grundri"s
+einer allgemeinen Theorie, 1984: Frankfurt/M.\bs bahasdot\}. Das ...
+}
+{\vspace{1.1ex}
+\notannouncektit
+Vers.~1: \vli{Niklas}{Luhmann} {\ktit{Soziale Systeme}. Grundri"s
+einer allgemeinen Theorie, 1984: Frankfurt/M.}.
+\\[2.375ex]
+Vers.~2: \printonlyvli{Niklas}{Luhmann} {\ktit{Soziale Systeme}. Grundri"s
+einer allgemeinen Theorie, 1984: Frankfurt/M.\bahasdot}.
+Das ist auch unter \texttt{\bs frenchspacing} besser!
+}%
+\label{v-Ausnahme}%
+
+\vspace{.25ex}\noindent
+Beim Drucken der \textit{Listen} wird im letzten Argument von v\fhy Befehlen
+aber nach 'Punkt' gesucht; Frankfurt/M.. ist so in \verb|\printvli|
+und \verb|\printvqu|\pdfko{.5}\
+ausgeschlossen (solange nicht etwas wie \verb|.{}}|
+am Ende steht). Vers.\,2 ist in die Listen nicht umgesetzt,
+um dort zwei Luhmann\hy Eintr"age zu vermeiden.
+
+\vfill\noindent
+Zusammengefasst gibt es eine Ausnahme bei v\fhy Befehlen,
+nachdem der Schalter \verb|\notannouncektit| gesetzt wurde.
+Falls Sie in deutschen Texten darauf (\texttt{ngerman.sty} setzt
+\verb|\frenchspacing|) und auf \verb|\notprinthints|
+verzichten, brauchen Sie \verb|\banotdot| und \verb|\bahasdot|
+nicht unbedingt zu kennen.
+
+
+\newpage\noindent
+F"ur die \textbf{Definition der Textelemente}, die f"ur den Ausdruck zwischen den
+Argumenten von \BibArts\hy Befehlen vorgefertigt sind (`Separatoren'),
+dient der Befehl \verb|\bapoint| zum Drucken eines Punktes am Separatoren"-\textit{kopf}.
+\hspace{.1em}\verb|\bapoint| reagiert auf die Suche nach einem Punkt \textit{am Endes des
+Arguments davor}\pdfko{.25}\
+(bzw.\ auf Ihr \verb|\bahasdot| oder \verb|\banotdot|) und druckt dann
+\textit{keinen} Punkt.
+
+Falls Sie im Text in \verb|\arq| zwischen Schriftst"uck und Signatur
+einen Punkt statt ein Komma haben wollen, m"ussen Sie\hspace{-.1em} \verb|\arqsep|
+umdefinieren. Sie sollten nicht \verb*|{. }|\kern.1em\ zuweisen:\kern.2em\
+\verb|\renewcommand{\arqsep}{\bapoint\newsentence}| reagiert automatisch
+und druckt keinen Punkt, wenn die sp"atere Eingabe des Schriftst"ucks
+bereits selbst mit einem Punkt endet.\footnote{\balabel{arqsep}%
+\texttt{\,\bs renewcommand\{\bs arqsep\}\{\bs bapoint\bs newsentence\}
+\ \% fuer beide spacings!}
+\\[.75ex]
+%\nonfrenchspacing %%Testen Sie!%%
+\renewcommand{\arqsep}{\bapoint\newsentence}
+\strut\texttt{ \ \ \ \bs arq\{Gesellschaftsvertrag der KCAG\}\{BA} ... \texttt{ =>} \\[.5ex]
+\arq{Gesellschaftsvertrag der KCAG} {BA Zwischenarchiv Dahlwitz\hy Hoppegarten R\,8729~4}.
+\\[1ex]
+\strut\texttt{ \ \ \ \bs arq\{Test!\bs banotdot\}\{BA} ... \texttt{ =>} \\[.5ex]
+\clearbamem\arq{Test!\banotdot} {BA Zwischenarchiv Dahlwitz\hy Hoppegarten R\,8729~4}.
+\\[1ex]
+\strut\texttt{ \ \ \ \bs arq\{Abk.\}\{BA} ... \texttt{ =>} \\[.5ex]
+\clearbamem\arq{Abk.} {BA Zwischenarchiv Dahlwitz\hy Hoppegarten R\,8729~4}.}
+
+\balabel{nonum} Beim \textit{Ausdruck der Listen} wird \verb|\bapoint| am Ende jedes Listenpunkts
+ausgef"uhrt von \verb|\printvli| und \verb|\printvqu|
+(durch \verb|\fromnopagevxxsep|) sowie von \verb|\printarq|
+(durch \verb|\fromnopagearqsep|) und von
+\verb|\printper| (durch \verb|\fromnopagepersep|). Um die
+einzelnen Listenpunkte in \verb|\printvkc| zu hinterpunkten, ist
+\verb|\renewcommand{\fromnopagevkcsep}{\bapoint}| zu befehlen;
+bei \verb|\printabk| ist \verb|\fromnopageabksep|
+entsprechend umzudefinieren.
+
+
+\vspace{1.75ex}\noindent
+Obwohl \BibArts\ \textit{im Text} das letzte Argument des v\fhy Befehls nicht
+nach Punkten durchsucht, druckt ein dort ans Ende gesetztes
+\verb|\ersch{|\textit{Ort}\kern.1em\verb|}{}| mit leerer\pdfko{1}\
+Jahresangabe "`\ko\ersch{\textit{Ort}}{}"' mit \textit{einem} Punkt aus. Sie k"onnen am
+Satzende also\pdfko{.4}\
+intuitiv vorgehen und den \underline{Punkt\kern-1.5pt} einfach
+hinter die Literaturangabe setzen:
+
+\vspace{.75ex}\noindent
+{\small
+ \verb| \vli{}{}{Titel, \ersch{Bonn}{}}|\underline{\texttt{.}}\verb| => |
+ \printonlyvli{}{}{Titel, \ersch{Bonn}{}}.}
+
+\vspace{.75ex}\noindent
+Nicht gedruckt wird \oJ. deshalb, weil das leere \verb|\ersch|\hy Argument
+\verb|\oJ| ausf"uhrt, das seinerseits ganz am
+Ende \verb|\bahasdot| setzt. Da \verb|\oD|, \verb|\oO| und \verb|\oJ|\pdfko{1.25}\
+zun"achst \verb|\protect|\hy gesch"utzt \verb|\poD|, \verb|\poO| und \verb|\poJ|
+ausf"uhren, sollte \textit{an diesen} eine \label{poJ}
+Umdefinition von \oD, \oO\ und \oJ\ ansetzen
+(ggf.\ mit \verb|\bahasdot|\pdfko{.75}\
+am Ende). \verb|\ersch| verwendet \verb|\oO|
+und \verb|\oJ| nur in deutschen Texten; deren\pdfko{1}\
+Umdefinition "andert \verb|\ersch| nur unter
+\verb|\bacaptionsgerman| (vgl.\ S.\,\pageref{SprachSep}, \pageref{gerschnoyearname}).
+\verb|\ersch| dient zur Verwendung ganz am Ende des letzten v\fhy Arguments.
+
+Die bereits erw"ahnten Befehle \verb|\f| und \verb|\sq| setzen
+\verb|\bahasdot| ebenfalls.\pdfko{.75}\
+\textit{Beide} f"uhren von
+der Spracheinstellung abh"angig entweder \verb|\gfolpagename|\pdfko{1.25}\
+oder \verb|\efolpagename| oder \verb|\ffolpagename| aus und
+drucken f.\ im Deutschen\pdfko{1}\
+und Englischen, aber sq.\ im Franz"osischen.
+Es gibt auch \verb|\ff| (und \verb|\sqq|).
+
+
+\newpage\noindent
+Falls Sie etwa eine\hspace{-.1em} \verb|\onlyout|\hy Konstruktion im
+Argument eines\hspace{-.1em} \verb|\kli|\hy Befehls \textit{ganz ans
+Ende} setzen, findet \BibArts\ u.\,U. irrt"umlich den `falschen'
+Punkt. Im folgenden Beispiel wird \verb|{}| in einem solchen Fall
+genutzt, um den am Ende von \verb|o.O.| stehenden Punkt `hier'
+auszublenden.\footnote{Am Argumenten\hy Ende ist `\texttt{\}}'
+erlaubt:\hspace{.2em} \texttt{\bs abk\{\bs protect\bs underline\{Abk.\}\}. =>}\hspace{.3em}
+\printonlyabk{\protect\underline{Abk.}}.} Damit der Punkt
+trotz \verb|{}| aber in der Liste `gesehen' wird, steht
+\verb|\bahasdot| am Ende von \verb|\onlyout|:
+
+
+\vspace{1.25ex}\noindent
+{\small
+\verb| \notprinthints| \notprinthints \\[.25ex]
+\verb| \kli{}{Buch\onlyout{ o.O.\bahasdot}{}}. | \verb| =>|
+\printonlykli{}{Buch\onlyout{ o.O.\bahasdot}{}}.
+\\[.25ex]
+\verb| \kli{}{A.{\onlyhere{\bahasdot}}\onlyout{ N}}.| \verb| =>|
+\printonlykli{}{A.{\onlyhere{\bahasdot}}\onlyout{ N}}.
+}
+
+\vspace{1.75ex}\noindent
+Unter {\small\verb|\notprinthints| \verb|\renewcommand{\fromnopagevkcsep}{\bapoint}|} \balabel{fromnopagevkcsep2}
+w"urde dann auch {\small\verb|\printvkc|} korrekt mit \textit{einem} Punkt je Eintrag ausgedruckt.
+
+
+\vspace{2.5ex}\noindent
+Eine Nachbesserung in Version~2.2 von \BibArts\ ist, dass nun auch die Namensargumente
+von v- und k\fhy Befehlen daraufhin gepr"uft werden, ob Punkte am Ende stehen.
+Auch die optionalen Sternargumente werden jetzt durchsucht.
+Damit ist m"oglich, \verb|\bapoint| in die Definition des Separators \verb|\ntsep|
+aufzunehmen, ohne z.\,B. nach abgek"urzten Namen \verb|\bahasdot| setzen zu m"ussen:
+
+\Doppelbox
+{
+\vspace{.5ex}
+\bs renewcommand\{\bs ntsep\}\{\bs bapoint\bs\ \} \\[1.75ex]
+\bs vli\{N\}\{N\} \\
+\ \ \ \{Das \bs ktit\{Buch\}, London\} \\[1.75ex]
+\bs vli\{N.\}\{N.\} \\
+\ \ \ \{Das \bs ktit\{Buch\}, London\} \\[1.75ex]
+\bs vli\{N\}\{N\}*\{Hg\} \\
+\ \ \ \{Das \bs ktit\{Buch\}, London\} \\[1.75ex]
+\bs xvli\{N.\}\{N.\} \\
+\ \ \ *\{\bs vauthor\{M.\}\{M.\}\} \\
+\ \ \ \{Das \bs ktit\{Buch\}, London\}
+\vspace{.5ex}
+}
+{
+\vspace{2.5ex}
+\renewcommand{\ntsep}{\bapoint\ }\notktitaddtok
+\printonlyvli{N}{N}{Das \ktit{Buch}, London} \\[.9ex]
+\printonlyvli{N.}{N.}{Das \ktit{Buch}, London} \\[.9ex]
+\printonlyvli{N}{N}*{Hg}{Das \ktit{Buch}, London} \\[.9ex]
+\xprintonlyvli{N.}{N.}*{\vauthor{M.}{M.}}{Das \ktit{Buch}, London}
+}
+
+\vspace{.5ex}\noindent
+F"ur die hier in die Listen umgesetzten Titel ergibt dann
+die Anwendung von\hspace{.2em}
+{\footnotesize\verb|{\renewcommand{\ntsep}{\bapoint\newsentence} \nonfrenchspacing \printvli}|}\hspace{.2em}:
+
+\vspace{-1ex}
+{\renewcommand{\ntsep}{\bapoint\newsentence} \nonfrenchspacing \printvli}
+
+
+%%%>>>>>
+
+\newpage
+\section{\textit{Italics}\hy Korrekturen und Separatoren}%
+\label{schraegkap}\label{Sect11}
+
+\textit{Italics}\hy Korrekturen sind bei den \BibArts\hy Hauptbefehlen
+gelegentlich n"otig an $\bullet$~ihrem Kopf, \hspace{.25em} $\bullet$~ihrem Ende,
+\hspace{.25em} $\bullet$~den Separatoren zwischen den Argumenten.
+Die Stellen dieser\hspace{.1em} \textit{automatischen Korrekturen}\hspace{.1em}
+macht \verb|\showbacorr| sichtbar.
+
+\vspace{1.5ex}\noindent
+Da v-, k-, per- und arq\hy Befehle am Kopf stets
+in aufrechte Schrift umschalten, ist \textit{in schr"aggestelltem
+Umfeld} ggf.\ eine Korrektur n"otig. Nach \verb*| |\hspace{.05em}
+oder am Absatzanfang wird diese \textbf{Kopf"|korrektur}
+nicht durchgef"uhrt.\footnote{Die Kopf"|korrektur ist \texttt{\bs/}\hspace{.2em}
+(f"ur andere \textit{italics}\hy Korrekturen setzt \BibArts\ \texttt{\bs kern 0.1em}).}
+
+
+\vspace{1.5ex}\noindent\hspace{.5em}
+{\small\itshape\showbacorr
+\begin{tabular}{ll}
+& \verb| \itshape \showbacorr| \\[.25ex]
+(\printonlyvli{}{}{Rest}) & \verb|(\vli{}{}{Rest})| \\
+(\printonlyvli{}{Nachname}{Rest}) & \verb|(\vli{}{Nachname}{Rest})| \\
+(\printonlyvli{Vorname}{Nachname}{Rest}) & \verb|(\vli{Vorname}{Nachname}{Rest})| \\
+(\printonlykli{}{Kurztitel}) & \verb|(\kli{}{Kurztitel})| \\
+(\printonlykli{Nachname}{Kurztitel}) & \verb|(\kli{Nachname}{Kurztitel})| \\
+(\printonlyper{Zeitschrift}) & \verb|(\per{Zeitschrift})| \\
+(\printonlyarq{}{Signatur}) & \verb|(\arq{}{Signatur})| \\
+(\printonlyarq{Dokument}{Signatur}) & \verb|(\arq{Dokument}{Signatur})| \\
+(\printonlyabkdef{Initialen}{Erkl"arung}) & \verb|(\abkdef{Initialen}{Erkl|{\upshape\texttt{"a}}\verb|rung})| \\
+(\printonlyabk{Initialen}) & \verb|(\abk{Initialen})| \\[.25ex]
+& \verb| \renewcommand{\abkemph}{\upshape}| \\[.125ex]
+ \renewcommand{\abkemph}{\upshape}%
+(\printonlyabkdef{Initialen}{Erkl"arung}) & \verb|(\abkdef{Initialen}{Erkl|{\upshape\texttt{"a}}\verb|rung})| \\
+ \renewcommand{\abkemph}{\upshape}%
+(\printonlyabk{Initialen}) & \verb|(\abk{Initialen})| \\
+\end{tabular}}\label{abkA}
+
+\vspace{1.75ex}\noindent
+\verb|\vauthor|, \verb|\midvauthor|, \verb|\kauthor| und
+\verb|\mitkauthor| korrigieren ebenfalls bei Bedarf `am Kopf' automatisch.
+
+Die Kopfkorrektur wird praktisch immer ben"otigt. Trotzdem existiert der
+Befehl \verb|\notbafrontcorr|, um sie auszuschalten:
+
+\vspace{-.5ex}
+\Doppelbox
+{
+\bs itshape \bs showbacorr
+\\[.1ex] \ \ (\bs arq\{Aktenst"uck\}\{Signatur\})
+\\[.5ex] \{\bs notbafrontcorr
+\\ \ \ (\bs arq\{Aktenst"uck\}\{Signatur\})\}
+}
+{\vspace{2.6ex}
+\itshape \showbacorr
+ (\printonlyarq{Aktenst"uck}{Signatur})
+\\[2.7ex] {\notbafrontcorr (\printonlyarq{Aktenst"uck}{Signatur})}
+}
+
+
+\vspace{2.25ex}\noindent
+\textbf{Endkorrekturen} nach \verb|\abk|, \verb|\kli| und \verb|\kqu|
+lassen sich nicht abschalten. Unter \verb|\renewcommand{\abkemph}{\itshape}|
+korrigiert \verb|\abk| in aufrechtem Umfeld, falls das Argument
+\textit{nicht} mit `\texttt{.}' endet, oder kein `\texttt{.}' oder
+`\texttt{,}' folgt:
+
+\vspace{1ex}\noindent
+{\small\verb| {\showbacorr \abk{GmbH}, \abk{GmbH}!} =>|}
+{\renewcommand{\abkemph}{\itshape}\showbacorr \abk{GmbH}, \abk{GmbH}!}
+\\
+{\small\verb| {\showbacorr \abk{e.\,V.}, \abk{e.\,V.}!} =>|}
+{\renewcommand{\abkemph}{\itshape}\showbacorr \abk{e.\,V.}, \abk{e.\,V.}!}
+
+
+
+\vspace{1.25ex}\noindent
+Dasselbe gilt f"ur \verb|\renewcommand{\kxxemph}{\itshape}|, \label{kxxA}
+mit dem der Kurztitel in \verb|\kli| und \verb|\kqu| \textit{kursiv}
+gesetzt wird.\footnote{\texttt{\bs kxxemph} wirkt sich au"serdem noch auf die
+Vorank"undigung der Kurzzitate in den v\fhy Befehlen aus;
+\renewcommand{\kxxemph}{\bfseries\itshape}\showbacorr
+\texttt{\bs renewcommand\{\bs kxxemph\}\{\bs bfseries\bs itshape\}} \texttt{\bs showbacorr}
+bewirkt:\pdfko{.5}\ \vli{Niklas} {Luhmann}{\ktit{Soziale Systeme}. Grundri"s
+einer allgemeinen Theorie, 1984: Frankfurt/M.}[123].} Im Fall von
+\verb|\notprinthints|, das den Ausdruck von {\small [L]} und {\small [Q]}
+unterbindet, wird automatisch korrigiert:
+
+\vspace{.75ex}\noindent
+{\small\verb| {\showbacorr \kli{N}{K}, \kli{N}{K}!} =>|}
+{\renewcommand{\kxxemph}{\itshape}\notprinthints\showbacorr\printonlykli{N}{K}, \printonlykli{N}{K}!}
+\\
+{\small\verb| {\showbacorr \kli{N}{K.}, \kli{N}{K.}!} =>|}
+{\renewcommand{\kxxemph}{\itshape}\notprinthints\showbacorr\printonlykli{N}{K.}, \printonlykli{N}{K.}!}
+
+\vspace{1.25ex}\noindent
+Auch im schr"aggestellten Umfeld verhalten sich beide Befehle weiter richtig:
+
+\vspace{.85ex}\noindent
+{\small\verb| {\itshape\showbacorr \abk{GmbH}, \abk{GmbH}!} =>|}
+{\itshape\renewcommand{\abkemph}{\itshape}\showbacorr\abk{GmbH}, \abk{GmbH}!}\\
+{\small\verb| {\itshape\showbacorr \kli{N}{K}, \kli{N}{K}!} =>|}
+{\itshape\renewcommand{\kxxemph}{\itshape}\notprinthints\showbacorr\printonlykli{N}{K}, \printonlykli{N}{K}!}
+
+
+\vspace{4ex}\noindent
+In den vorgefertigten Textelementen (\textbf{Separatoren}),
+die \BibArts\ zwischen den Argumenten ausdruckt, sind ebenfalls oft
+\textit{italics}\hy Korrekturen n"otig.\footnote{Separatoren sollen
+\textit{nur} vorgefertigten Text und \BibArts\hy\textit{italics}\hy Korrekturen enthalten;
+\textsc{Schriftumschaltbefehle} werden in die \BibArts\hy \texttt{\bs}...\texttt{emph}\hy Befehle gesetzt
+\baref{hervor}!}
+Auch diese Korrekturen arbeiten in Voreinstellung automatisch.
+
+Zur \textit{Ver"anderung von Separatoren} l"asst sich \verb|\renewcommand|
+verwenden.\pdfko{.75}\
+Danach sollten die Korrekturen weiterhin automatisch arbeiten.
+\textit{Italics}\hy Korrekturen sind n"otig,
+wenn schr"age auf aufrechte Schriften treffen k"onnten und der
+Separator (\underline{\underline{unteres Beispiel}}) nicht nur aus `niederen' Zeichen besteht:
+
+\vspace{-.5ex}
+\Doppelbox
+{
+\bs itshape\bs showbacorr
+\\[1ex]
+\bs renewcommand\{\bs nsep\}\{\underline{,\vphantom{p} }\}
+\\[1.25ex] ... ... \bs xkqu\{Ehlert\}
+\\ \ \string*\b{\{}\bs midkauthor\{Epkenhans\}
+\\ \ \ \ \bs kauthor\{Gro"s\} [Hrsg.]\b{\}}
+\\ \ \{Schlieffenplan\}[468].
+\\[1.75ex]
+\bs renewcommand\{\bs nsep\}\{\underline{\underline{/\bs baupcorr}}\}
+\\[.75ex] ... ... \bs xkqu\{Ehlert\}
+\\ \ \string*\{\bs midkauthor\{Epkenhans\}
+\\ \ \ \ \bs kauthor\{Gro"s\} [Hrsg.]\}
+\\ \ \{Schlieffenplan\}[469].
+}
+{\vspace{2.5ex}
+\itshape\showbacorr\noindent
+\renewcommand{\nsep}{\protect\underline{, }} %% nach Komma keine Korrektur %%
+... ... \xkqu{Ehlert} *{\midkauthor{Epkenhans} \kauthor{Gro"s} [Hrsg.]}
+ {Schlieffenplan}[468].
+
+\vspace{.5cm}
+\textup{\texttt{\bs nsep}} steht zwischen Namen in
+ggf.\ kursiver Umfeldschrift, w"ahrend die
+Namen aufrecht sind.
+Enth"alt \textup{\texttt{\bs nsep}} `hohe' Zeichen,
+sollte eine automatische italics\hy Korrektur also \emph{ans Ende}:
+
+\vspace{.25cm}
+\renewcommand{\nsep}{\protect\underline{\protect\underline{/\baupcorr}}} %% nach + schon %%
+... ... \xkqu{Ehlert} *{\midkauthor{Epkenhans} \kauthor{Gro"s} [Hrsg.]}
+ {Schlieffenplan}[469].
+}%
+\label{MEhlert}\label{nsep2}%
+
+
+\vspace{.25ex}\noindent
+\verb|\baupcorr| korrigiert \textit{immer} dann, wenn es in
+schr"aggestellten Umfeld steht. F"ur den \textit{Kopf} einer
+Separator\hy Definition ist es damit ungeeignet, denn es hat keine Information
+dar"uber, ob Sie in das \textit{davorstehende Argument des\pdfko{1}\
+\BibArts\hy Befehls} bei der Anwendung Text tippten, der mit einem Punkt endet.
+
+
+\newpage \BibArts\ durchsucht etliche Argumente deshalb
+und stellt f"ur den folgenden Separator eine \textit{italics}\hy Korrektur bereit.
+Dieser Korrektur\hy Befehl hei"st seit Version 2.2 einheitlich
+\hspace{-.1em}\verb|\bacorr|.\hspace{.1em} Er tut nichts, falls das vorausgehende Argument
+mit einem Punkt endet. F"ur num\hy Listenausdrucke etwa steht
+\verb|\bacorr| am Kopf des Separators \verb|\frompagesep|, \label{frompagesep}
+um ggf.\ vor den stets aufrechten Indexzahlen zu korrigieren.
+(Das alte \verb|\balistcorr| speziell f"ur diesen Separator ist weiterhin Alternative.)
+Das Argument von \verb|\frompagesep| und die Indexzahlen druckt \BibArts\ in
+\verb|\balistnumemph| aus (voreingestellt
+\verb|\sffamily|):\footnote{\label{listnum}In \texttt{\bs balistnumemph} eingesetzte Schr"agschrift\hy Befehle
+ignoriert \BibArts\ einfach, denn vor den `Fu"snoten'\hy Exponenten in
+num\hy Listen soll auf \textit{italics}\hy Korrekturen verzichtet werden.}
+
+
+\vspace{.25ex}
+{\small
+\begin{verbatim}
+ {\renewcommand{\frompagesep}{\bacorr ; } % ; HOCH mit Korrektur
+ \itshape \showbacorr \printnumvlilist }
+\end{verbatim}}
+
+\vspace{-2.5ex}
+ {\renewcommand{\frompagesep}{\bacorr ; } % ; HOCH mit Korrektur
+ \itshape \showbacorr \baonecolitemdefs\printnumvlilist }\label{frompagesep1}%
+
+
+\vspace{.5ex}\noindent
+\verb|\bacorr| steht fast immer am Anfang des Arguments eines Separators.
+Ein \textbf{Sonderfall} ist \verb|\ntsep|, den \BibArts\ in Umfeldschrift
+zwischen Name und Titel druckt: Dort muss \verb|\bacorr| (falls verwendet)
+\textit{am Ende des Arguments} stehen: Eine Korrektur ist in \verb|\ntsep|
+\textit{nach} einem hohen Zeichen wie `:' dann n"otig, falls Sie eine
+schr"aggestellte Umfeldschrift und f"ur den \textit{k\hy Titel} eine aufrechte
+Schrift einstellen. (\verb|\bacorr| "andert sich also nicht in Abh"angigkeit
+davon, ob das \textit{vorausgehende} Argument mit einem Punkt endet.) \verb|\ntsep|
+f"uhrt defaultm"a"sig\hspace{.2em} \verb*|{: \bacorr}|\hspace{.3em} \label{ntsepB}
+aus, wobei dieses \verb|\bacorr| nur in \textit{k\fhy Befehlen} etwas tut:
+
+\vspace{-.5ex}
+\Doppelbox
+{
+ \bs renewcommand\{\bs kxxemph\}\{\bs upshape\}
+\\ \bs showbacorr \bs itshape
+\\[.4ex] \bs kli\{Ferguson\}\{Falscher Krieg\}
+}
+{
+\vspace{5.5ex}
+\renewcommand{\kxxemph}{\upshape}
+\showbacorr \itshape
+\kli{Ferguson}{Falscher Krieg}
+}
+
+
+\vfill\noindent
+In \verb|\ntsep| k"onnen Sie den alten Befehl \verb|\bakntsepcorr| statt \verb|\bacorr| weiterhin verwenden.
+Seit \BibArts~2.2 tun beide in \verb|\ntsep| nichts, falls sie in einem v\fhy Befehl stehen.
+Damit ist diesbez"uglich nun "uberfl"ussig, die fr"uher n"otige Fallunterscheidung mittels \verb|\ifbashortcite| zu
+definieren.\footnote{In v\fhy Befehlen werden \texttt{\bs ntsep} \textit{und} das folgende Argument in Umfeldschrift
+gedruckt. Korrekt ist
+\texttt{\bs renewcommand\{\bs ntsep\}\{: \bs ifbashortcite\{\bs bakntsepcorr\}\{\}\}} weiterhin.}
+Doch k"onnen Sie mit
+\hspace{-.05em} \verb|\ifbashortcite|\hspace{.4em}\verb|{|\textit{Text k\fhy Befehl}\hspace{.2em}\verb|}|\hspace{.4em}%
+\verb|{|\textit{Text v\fhy Befehl}\hspace{.2em}\verb|}|\hspace{.4em}
+im Argument von \verb|\ntsep| weiterhin Textunterschiede f"ur k- und v\fhy Befehle festlegen.\footnote{\label{ntsepC}\texttt{%
+\bs renewcommand}\hskip 1pt plus 2pt\texttt{\{\bs ntsep\}}\hskip 1pt plus 2pt\texttt{\{\bs ifbashortcite\{:\bs hskip0pt plus 0pt\bs bacorr\}\{: \}\}}
+w"urde im v\hy Befehl \textit{ein Leerzeichen} nach dem `:' drucken, im k\fhy Befehl nicht.}
+
+
+\newpage
+\noindent
+Solche \textbf{if\hy Befehle} haben zwei Argumente; \BibArts\ setzt das erste
+bei Ja und das zweite bei Nein um (das jeweils unzutreffende Argument wird ignoriert):
+
+\vspace{.875ex}{\small\noindent
+\verb| \ifbashortcite | \verb|{|\textit{falls k-Befehl}\verb|}| \verb|{|\textit{sonst (falls v-, per- oder arq-Befehl)}\verb|}| \\
+\verb| \ifbaperiodical | \verb|{|\textit{falls per-Befehl}\verb|}| \verb|{|\textit{sonst (falls v-, k- oder arq-Befehl)}\verb|}| \\
+\verb| \ifbaprinthints | \verb|{|\textit{unter Voreinstellung}\verb|}| \verb|{|\textit{falls }\verb|\notprinthints|\textit{ gilt}\verb|}| \\
+\verb| \ifbaibidem | \verb|{|\textit{falls }\textsc{ebd.}\textit{ (nach Ausdruck von }\textsc{ebd.}\textit{ bereit)}\verb|}| \verb|{|\textit{sonst}\verb|}| \\
+\verb| \ifbahaspervol | \verb|{|\textit{hat }\verb+|n|+\textit{ oder }\verb+_n_+\textit{ (ab }\verb|\gisonfolioname|\textit{ bereit)}\verb|}| \verb|{|\textit{sonst}\verb|}| \\
+\verb| \ifbahasdot | \verb|{|\textit{am Separatorenkopf: falls Arg davor mit}
+ \hspace{-.15em}\verb|.| \hspace{-.1em}\textit{endet}\verb|}| \verb|{|\textit{sonst}\verb|}|}
+
+
+\vspace{1.4ex}\noindent
+Die wichtigsten Separatoren, f"ur die \BibArts\ \verb|\bacorr| bereitstellt, sind:
+
+\vspace{.75ex}\noindent
+{\small
+\strut\kern 4mm$\bullet$\verb| \frompagesep |\kern5mm(vgl.\ oben S.\,\pageref{frompagesep}; alternativ das alte \verb|\balistcorr|) \\
+\strut\kern 4mm$\bullet$\verb| \ntsep |\kern5mm(vgl.\ oben S.\,\pageref{ntsepA}, \pageref{ntsepB};
+ alternativ \verb|\bakntsepcorr|) \\
+\strut\kern 4mm$\bullet$\verb| \pagefolioshortsep| \hfill (alternativ \verb|\bakxxcorr|)\kern2mm\strut \\
+\strut\kern 4mm$\bullet$\verb| \abkdefopen|, \verb|\defabkopen|, \verb|\defabkclose| \hfill (alternativ \verb|\baabkcorr|)\kern2mm\strut}
+
+
+\vspace{1.5ex}\noindent
+Die Definition von \verb|\pagefolioshortsep| lautet nur noch
+\verb|{\bacorr : }| in Version~2.2: \verb|\bacorr| wird
+nun ohne \verb|\ifba|...\hy Befehle eigenst"andig nach
+\verb|\kli| und nach \verb|\kqu| ausgef"uhrt
+(unter \verb|\notprintlongpagefolio|;\footnote{\texttt{\scriptsize\bs notprintlongpagefolio
+\bs renewcommand\{\bs kxxemph\}\{\bs itshape\} \bs notprinthints \bs showbacorr}
+\\ \hspace*{1cm}\texttt{\scriptsize
+\bs kli\{Luhmann\}\{Soziale Systeme\}[23]. => }
+\clearbamem\notprintlongpagefolio
+\renewcommand{\kxxemph}{\itshape}\notprinthints \showbacorr
+\kli{Luhmann}{Soziale Systeme}[23].}
+vgl.\ S.\,\pageref{notprintlongpagefolio}).
+
+
+\vspace{1.5ex}\noindent
+Die \textbf{Definitionen von Abk"urzungen} werden in Klammern ausgedruckt.
+Die Separatoren \verb|\abkdefopen|, \verb|\defabkopen| und
+\verb|\defabkclose| enthalten je ein Klammer\hy Zeichen \textit{und} \verb|\bacorr|.
+In \verb|\abkdefopen| und \verb|\defabkclose| steht \verb|\bacorr| vor der Klammer, in
+\verb|\defabkopen| dahinter. Stehen \verb|\abkdef| oder \verb|\defabk|
+(oben S.\,\pageref{defabk}) in aufrechtem Umfeld, f"uhrt \verb|\bacorr| n"otige
+\textit{italics}\hy Korrekturen aus, falls
+\verb|\abkemph| eine schr"aggestellte Schrift einstellt:\footnote{Oder
+falls \texttt{\bs abkemph} eine aufrechte Schrift in schr"aggestelltem Umfeld einstellt.}
+
+\vspace{-.5ex}
+\Doppelbox
+{\vspace{.75ex}
+\bs renewcommand\{\bs abkemph\}\{\bs itshape\}
+\\[.25ex] \ \ \bs showbacorr
+\\[.5ex] \b{\{}\bs renewcommand\{\bs abkdefopen\}
+\\[.1ex] \ \ \ \ \ \ \{\bs bacorr\bs\ [\kern.1em\}
+\\[.5ex] \ \bs renewcommand\{\bs abkdefclose\}\{\kern.1em]\}
+\\[.5ex] \ \underline{\vphantom{g}\bs abkdef\{OHG\}\{Offene}
+\\ \ \ \ \ \ \underline{Handelsgesellschaft\}}\b{\}} \ u.\bs
+\\[1ex]
+ \b{\b{\{}}\bs renewcommand\{\bs defabkopen\}
+\\ \ \ \ \ \ \ \{\bs bastrut\bs\ \string"\string<\bs bacorr\}\%
+\\[.5ex] \ \bs renewcommand\{\bs defabkclose\}
+\\ \ \ \ \ \ \ \{\bs bacorr \string"\string>\}\%
+\\[.5ex] \ \underline{\vphantom{g}\bs defabk\{Offene}
+\\ \ \ \ \ \ \underline{Handelsgesellschaft\}\{OHG\}}.\b{\b{\}}}
+}
+{\vspace{1ex}
+ \fbox{\parbox{.95\textwidth}{\sffamily Der alte Befehl \texttt{\bs baabkcorr}
+ funktioniert weiter (alternativ zu \texttt{\bs bacorr}).}}
+ \\[5.5ex]
+ \small\renewcommand{\abkemph}{\itshape} \showbacorr
+ {\renewcommand{\abkdefopen} {\bacorr\ [}%
+ \renewcommand{\abkdefclose}{]}%
+ \abkdef{OHG}{Offene Handelsgesellschaft}} u.\
+ \\[.25ex]
+ {\renewcommand{\defabkopen}{\bastrut\ "<\bacorr}%
+ \renewcommand{\defabkclose}{\bacorr ">}%
+ \defabk{Offene Handelsgesellschaft}{OHG}.}
+ \\[3.5ex]
+ \fbox{\parbox{.95\textwidth}{\sffamily \texttt{\bs bastrut\bs\ }\,stellt sicher,
+ dass Zeilenumbr"uche am \texttt{\bs\ }\,stattfinden k"onnen.}}
+}\balabel{abkdefopen}\balabel{defabkopen}%
+
+
+\noindent
+Wird statt \verb|{OHG}| alternativ \verb|{e.\,V.}| eingesetzt, unterbleibt die
+Korrektur:
+
+\vspace{.5ex}
+{\small\renewcommand{\abkemph}{\itshape}\showbacorr
+{\renewcommand{\abkdefopen} {\bacorr\ [}%
+ \renewcommand{\abkdefclose}{]}%
+ \abkdef{e.\,V.}{eingetragener Verein}} und
+{\renewcommand{\defabkopen}{\bastrut\ "<\bacorr}%
+ \renewcommand{\defabkclose}{\bacorr ">}%
+ \defabk{eingetragener Verein}{e.\,V.}.}
+}
+
+
+
+\vspace{1ex}\noindent
+In Voreinstellung macht \BibArts\ nach \verb|\defabkopen| (hier nach\hspace{-.1em} "<\kern.15em)
+einen in \LaTeX2e von \verb|\itshape| an dieser Stelle ausgedruckten horizontalen
+Abstand r"uckg"angig. Diese Gegenkorrektur l"asst sich im Dokumentenvorspann mit
+\verb|\notnegcorrdefabk| ausschalten (\LaTeX\,2.09 macht die Korrektur nicht).
+
+
+\vspace{1ex}\noindent
+Das zweite Argument von \verb|\defabk| ist die
+Abk"urzung, die in einstellbarer\pdfko{.5}\
+Schrift gedruckt wird.
+\BibArts\ reagiert auf das \textit{folgende} Zeichen, z.\,B. ein~`!':
+
+
+\Doppelbox
+{\vspace{.25em}
+ \bs renewcommand\{\bs abkemph\}\{\bs em\}
+ \\[.5ex] \bs showbacorr
+ \\[.5ex] \bs renewcommand\{\bs defabkopen\}
+ \\ \ \ \ \ \ \ \underline{\{\bs}ifbahasdot\{\bs bastrut\bs\ \}
+ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{ \bs bacorr\underline{\}\}}
+ \\[.5ex] \bs renewcommand\{\bs defabkclose\}\{\}
+ \\ \ \ \ \%\%=\{\bs defabkclose\}\{\bs bacorr\}
+\\[2.5ex]
+ Ein \bs defabk\{eingetragener
+\\ \ \ Verein\} \{e.\bs,V.\}!
+\\[1.5ex]
+ \bs defabk \{Offene
+\\ \ \ Handelsgesellschaft\}\{OHG\}!
+\\[1.5ex]
+ \bs itshape
+\\[.5ex] Noch ein \bs defabk\{eingetragener
+\\ \ \ Verein\}\{e.\bs,V.\}!
+\\[1.5ex]
+ \bs defabk\{Offene Handelsges.\}
+\\ \ \ \{OHG\}!
+\vspace{.25em}
+}
+{
+ \vspace{19.4ex}
+ \renewcommand{\abkemph}{\em}
+ \showbacorr
+ \renewcommand{\defabkopen}
+ {\ifbahasdot{\bastrut\ }
+ { \bacorr}}
+ \renewcommand{\defabkclose}{} %=%{\defabkclose}{\bacorr}
+
+ Ein \defabk {eingetragener Verein} {e.\,V.}!
+ \\[3.5ex]
+ \defabk {Offene Handelsgesellschaft}{OHG}!
+ \\[6.6ex]
+ \itshape
+ Noch ein \defabk{eingetragener Verein}{e.\,V.}!
+ \\[3.6ex]
+ \printonlydefabk{Offene Handelsges.} {OHG}!
+}\label{abkB}
+
+
+\vspace{-.25ex}\noindent
+\verb|\ifbahasdot| ist dort wegen korrekter Zeilenumbr"uche n"otig (siehe S.\,\pageref{Systematik}).
+
+\vspace{3ex}\noindent
+In den Beispielen oben wurden die Klammersymbole lokal angepasst.
+Dies wirkt sich \textit{nicht} auf das \textbf{Abk"urzungsverzeichnis}
+aus, denn f"ur dessen Ausdruck gelten eigene
+Separatoren: \verb|\abklistopen| und \verb|\abklistclose|
+legen fest, was dort vor und nach der \textit{Erkl"arung}
+stehen soll. Im Abk"urzungsverzeichnis
+steht die Abk"urzung immer links und die Erkl"arung immer rechts.
+
+\verb|bibarts.sty|
+legt f"ur \verb|\abklistopen| zun"achst \verb|{\protect\pabklo}| fest;
+das f"uhrt \verb|{\bastrut\hskip 1.2em minus 0.3em\bacorr}| aus.
+"Aquivalent h"angen \verb|\abklistclose|
+und \verb|\pabklc| zusammen (das nichts tut: \verb|{}|).
+
+Im Beispiel werden die Listenseparatoren \verb|\pabklo| oder
+\verb|\pabklc| direkt vor dem Befehl zum Ausdruck des Abk"urzungsverzeichnisses
+lokal umdefiniert. Dies wirkt sich aus auf alle Eintr"age,
+an deren Stellen im Text die Voreinstellungen f"ur
+\verb|\abklistopen| und \verb|\abklistclose| nicht ver"andert wurden.
+Im Text ver"andert wurden die Listenseparatoren f"ur die Abk"urzung `S';
+dazu gleich. Zuerst der Ausdruck des gesamten Abk"urzungsverzeichnisses:
+
+\vspace{.5ex}{\small
+\begin{verbatim}
+ {\renewcommand{\pabklo}{\bastrut\ \bacorr =\ } %% \bastrut\ er-
+ \renewcommand{\pabklc}{!\banotdot} %% laubt Umbruch
+ \renewcommand{\abklistemph}{\itshape\bfseries}
+ \showbacorr \small \printnumabklist}
+\end{verbatim}}
+
+\vspace{-.5ex}
+ {\renewcommand{\pabklo}{\bastrut\ \bacorr =\ }
+ \renewcommand{\pabklc}{!\banotdot}
+ \renewcommand{\abklistemph}{\itshape\bfseries}
+ \showbacorr \small \batwocolitemdefs\printnumabklist}
+
+
+\vspace{1ex}\noindent
+\verb|\printnumabk| h"atte einen \verb|twocolumn|\hy Ausdruck in
+\verb|\footnotesize| ergeben, was ich hier wieder nur aus Platzgr"unden unterlie"s.
+
+
+\vspace{2ex}\noindent
+Falls eine Abk"urzung
+im Verzeichnis in \textit{abweichender} `Klammerung' ausgedruckt
+werden soll, sind \verb|\abklistopen| und \verb|\abklistclose| im Text
+am Ort der Abk"urzung lokal
+anzupassen (zerbrechliche Befehle mit \verb|\protect| sch"utzen!).
+Der im Abk"urzungsverzeichnis abweichende Zugang kam so zustande:
+
+\Doppelbox
+{\vspace{1ex}
+ Der
+ \\[.2ex] \b{\{}\bs renewcommand\{\bs abklistopen\}\{, \}\%
+ \\ \ \bs renewcommand\{\bs abklistclose\}
+ \\ \ \ \ \ \{ [Erkl"arung am Zugangsort]\}\%
+ \\[.4ex] \ \bs abkdef\{S\}\{Sonderfall\}\b{\}}
+ \\[.2ex] in der Liste.
+ \vspace{1.2ex}
+}
+{\vspace{8.125ex}
+ \ \ Der {\renewcommand{\abklistopen}{, }%
+ \renewcommand{\abklistclose}{ [Erkl"arung am Zugangsort]}%
+ \abkdef{S}{Sonderfall}} in der Liste.
+}\balabel{abklistopen}%
+
+
+\vspace{-.2ex}\noindent
+... wobei die Definition von \verb|\abklistopen| der "Ubersichtlichkeit
+halber mit einem `niederen' Zeichen beginnt,
+vor dem keine Korrektur n"otig ist; und \verb|\abklistclose|
+braucht keine.
+Eingetragen wird ins\hspace{-.15em} \verb|.aux|\hy File f"ur die
+Einf"uhrung der Abk"urzungen \abk{OHG} und \abk{S} mit \verb|\abkdef| oder \verb|\defabk| etwas wie:
+
+\vspace{0.325ex}
+{\scriptsize\begin{verbatim}
+ %\abkrzentry{OHG}{Offene Handelsgesellschaft}{{\pabklo }{\pabklc }{}{}}...(line 1762)
+ ...
+ %\abkrzentry{S}{Sonderfall}{{, }{ [Erkl\IeC {\"a}rung am Zugangsort]}{}{}}...(line 3756)
+\end{verbatim}}
+
+\vspace{.725ex}\noindent
+Die Definitionen von \verb|\abklistopen| und
+\verb|\abklistclose| sind dabei jeweils ("ahnlich \verb|\nsep|\hspace{.075em}
+oben S.\,\pageref{Ausreise}) zusammen mit den beiden Hauptargumenten von
+\verb|\abkdef| oder \verb|\defabk| ins
+\hspace{-.2em}\verb|.aux|\hy File gereist. Gelten f"ur Separatoren
+im Falle mehrerer Erkl"arungen \textit{einer} Abk"urzung
+unterschiedliche Definitionen,
+warnt \texttt{bibsort} mittels Bildschirmmeldung; es verwendet auch bei den
+Separatoren beim Ausdruck der Liste jeweils die erste Definition.
+
+
+
+\newpage\noindent
+Zum \textbf{Drucken von Archivquellenangaben} in Text oder Fu"snoten: Im
+Argument von \verb|\arqsep|, das zwischen Dokument und Archivsignatur gedruckt wird, ist
+kein corr\hy Befehl n"otig, da \BibArts\ f"ur beide Argumente
+eine aufrechte Schrift \verb|\arqemph| erzwingt. Z.\,B. reicht \verb|\renewcommand{\arqsep}{: }|
+aus. Hier steht ein solcher \verb|\arq|\hy Befehl
+{\showbacorr\itshape in schr"aggestelltem Umfeld:
+\renewcommand{\arqsep}{: }\arq{Gesellschaftsvertrag der
+KCAG}{BA Zwischenarchiv Dahlwitz\hy Hoppegarten R\,8729~4}(94)}.
+
+\vspace{1.25ex}\noindent
+Beim \textbf{Drucken des Archivquellenverzeichnisses} darf
+f"ur \verb|\arqlistemph| (oder \verb|\arqemph|, siehe S.\,\pageref{arqemph2})
+dagegen \textit{kursiv} eingestellt werden. Im \BibArts\hy Archivalienverzeichnis werden
+die einzelnen Dokumente nicht aufgelistet:
+
+\vspace{.25ex}
+{\footnotesize\begin{verbatim}
+ {\renewcommand{\arqlistemph}{\itshape}\showbacorr \printnumarq }
+\end{verbatim}}\label{arqemph1}
+
+\vspace{-3.25ex}
+ {\renewcommand{\arqlistemph}{\itshape}\showbacorr \printnumarq }
+
+
+\vspace{2.5ex}\noindent
+Auch bei Zeitschriften ist der $-$ im Text verbotene $-$
+Kursivdruck von Titeln im \textbf{Zeitschriftenverzeichnis} erlaubt. Falls Sie
+\verb|\frompagesep| f"ur den num\hy Listenausdruck modifizieren und
+ein `hohes' Zeichen (hier im Beispiel $\rightarrow$\kern .2em) setzen,
+dann sollten Sie \verb|\bacorr| vor das Zeichen setzen ({\small\verb|\bacorr$\rightarrow$|}):
+
+{\footnotesize\begin{verbatim}
+ {\renewcommand{\perlistemph}{\itshape}%
+ \renewcommand{\frompagesep}{\bastrut\hskip0pt\bacorr$\rightarrow$}%
+ \showbacorr \printnumper} % ^^^^^^^^^^^^^^^^^ <= Trennung erlauben
+\end{verbatim}}\label{frompagesep2}%
+
+\vspace{-3ex}
+ {\renewcommand{\perlistemph}{\itshape}%
+ \renewcommand{\frompagesep}{\bastrut\hskip0pt\bacorr$\rightarrow$}%
+ \showbacorr \printnumper} % ^^^^^^^^^^^^^^^^^ <= Trennung erlauben
+
+\vspace{1ex}\noindent
+Die "offnenden und schlie"senden Separatoren f"ur die per\hy Liste
+hei"sen (symmetrisch zu den abk\hy Befehlen) \label{perlistopen}
+\verb|\perlistopen| und \verb|\perlistclose|. Sie f"uhren
+\verb|\protect\pperlo| und \verb|\protect\pperlc| aus, um
+beim Schreiben ins \hspace{-.15em}\verb|.aux|\hy File nicht zu zerbrechen.
+Beim Ausdrucken der per\hy Liste f"uhren \verb|\pperlo| und
+\verb|\pperlc| gem"a"s Voreinstellung
+\verb|{\bastrut\ \bacorr $-$ }| und \verb|{}| aus. Daran k"onnen
+Sie wiederum im Umfeld des Listenausdruckbefehls ansetzen:
+
+\vspace{-.75ex}
+{\small\begin{verbatim}
+ {\renewcommand{\pperlo}{\bastrut\ \bacorr ((}
+ \renewcommand{\pperlc}{))}
+ \renewcommand{\perlistemph}{\itshape} \showbacorr \printper}
+\end{verbatim}}
+
+\vspace{-3.75ex}
+ {\renewcommand{\pperlo}{\bastrut\ \bacorr ((}
+ \renewcommand{\pperlc}{))}
+ \renewcommand{\perlistemph}{\itshape} \showbacorr \printper}
+
+
+\vspace{.5ex}\noindent
+Im \textbf{Archivquellenverzeichnis} dienen
+\verb|\arqlistopen| und \verb|\arqlistclose| als Separatoren.
+\label{Gedankenstriche} Sie f"uhren \verb|{\protect\parqlo}|
+und \verb|{\protect\parqlc}| aus und expandieren
+zu \verb|{\bastrut\hskip 1em minus 0.3em\bacorr}| und \verb|{}|.
+Die "Uberschriften, die im Verzeichnis ungedruckter Quellen
+existieren k"onnen, enthalten die oben gezeigten Gedankenstriche,
+die von den Befehlen \verb|\arqsectionopen|, \verb|\arqsubsectionopen|
+und \verb|\arqsubsubsectionopen|\pdfko{1}\
+initiiert werden. Alle f"uhren direkt \verb|{\bastrut\ \bacorr $-$ }| aus.
+
+\vspace{1ex}\noindent
+Weiter existieren \verb|\xrrlistopen| und \verb|\xrrlistclose|.
+Sie schreiben f"ur die drei \BibArts\hy Register \verb|\protect|\hy gesch"utzt
+\verb|\pxrrlo| und \verb|\pxrrlc| ins \verb|.aux|\hy File und expandieren
+zu \verb|{\bastrut\ \bacorr(}| bzw.\ \verb|{)}| \,(vgl.\ oben S.\,\pageref{xrrlistclose}).
+
+
+
+
+\newpage\noindent
+\textbf{Wiederholung: }\texttt{\bs bacorr}\textbf{, }\texttt{\bs bapoint}\textbf{ und }\texttt{\bs bastrut}
+
+\begin{itemize}
+\item Ganz am Anfang der Definition eines Separators kann \verb|\bapoint|
+ \textit{oder}\pdfko{.5}\
+ \verb|\bastrut| stehen. Sie schlie"sen sich gegenseitig aus; es
+ d"urfen nicht beide hintereinanderstehen. Falls Sie ganz an den
+ Anfang eines Separators ein `echtes' Zeichen setzen (kein
+ Leerzeichen), sind beide "uberfl"ussig.
+\item \verb|\bapoint| tut nichts, wenn das \textit{im \BibArts\hy Befehl
+ direkt zuvor gesetzte\pdfko{1.25}\
+ Argument} mit einem Punkt oder \verb|\banotdot|
+ oder \verb|\bahasdot| endet. Sonst druckt \verb|\bapoint| einen Punkt.
+\item \verb|\bastrut| steht vor Leerzeichen (\,\verb*|\ |\,)\hspace{.1em} oder\hspace{.1em}
+ \verb|\hskip|\hy\ oder \verb|\hspace|\hy Befehlen, um dort einen
+ Zeilenumbruch \textit{sicher} zu erlauben. \hspace{.2em}\verb|\bastrut| ist
+ freilich vor \verb|~| und anderen gesch"utzten Leerzeichen nicht n"otig.
+\item Ist das erste `echte' Zeichen eines Separators ein hohes aufrechtes
+ Zeichen, sollten Sie dann \verb|\bacorr| davorsetzen, wenn das
+ vorausgehend gesetzte Argument schr"aggestellt sein k"onnte (vgl.\
+ unten S.\,\pageref{hervor}). \hspace{.1em}\verb|\bacorr|\pdfko{1}\
+ steht \textit{nie} vor Punkt, vor Komma oder vor \verb|\bapoint|.
+\item F"ur Zeilenumbr"uche: Von zwei Ausnahmen abgesehen gilt am
+ Kopf eines Separators immer die
+ Reihenfolge \verb|\bastrut| $-$ Leerzeichen $-$ \verb|\bacorr|.\footnote{
+ Bei einem Zeilenumbruch am Leerzeichen steht \texttt{\bs bacorr} direkt
+ \textit{vor} dem linken Rand; irrt"umlich am rechten Rand stehend
+ w"urde es dagegen eine (falsche!) Einr"uckung bewirken.}
+ Die beiden Ausnahmen sind: Falls \verb|\bacorr| in den Separatoren \verb|\abkdefopen| oder
+ \verb|\defabkclose| steht, muss es \textit{vor} etwaigen Leerzeichen
+ stehen! \label{Systematik} Nach einem solchen \verb|\bacorr| ist
+ \verb|\bastrut| sinnlos.
+\item \verb|\baupcorr| existiert aus Symmetriegr"unden, um \textit{italics}\hy
+ Korrekturen in der Art anderer \BibArts\hy Korrekturen (\kern.01em\verb|0.1em|\kern.04em) zu erhalten.
+ \verb|\baupcorr| tut \textit{immer} etwas in schr"aggestelltem Umfeld.
+ \verb|\baupcorr| steht allenfalls am Ende von Separatoren. Es ist n"otig,
+ falls `hohe' Zeichen im Separator stehen \textit{und} schr"ag gedruckt werden
+ k"onnten \textit{und} das folgende Argument \textit{sicher} aufrecht ist. \verb|\baupcorr|
+ k"onnte am Ende von \verb|\nsep| zum Einsatz kommen; es wird verwendet
+ am Ende der sprachabh"angigen Separatoren (unten ab S.\,\pageref{SprachSep})
+ \verb|\gannouncektitname| (\textit{im Folgenden}), \verb|\fannouncektitname| und
+ \verb|\eannouncektitname|.
+\item \verb|\bacorr| steht in zwei F"allen am Ende des Separators. Diese Ausnahmen
+ sind \verb|\ntsep| und \verb|\defabkopen|: Die stehen beide \textit{vor}
+ Argumenten mit einstellbarer Schrift (abk und k\fhy Titel). \verb|\baupcorr|
+ ist dort ungeeignet; aber \verb|\bacorr| reagiert, falls Sie f"ur das Argument
+ dahinter eine schr"aggestellte Schrift einstellen (mit \verb|\abkemph|
+ bzw.\ mit \verb|\kxxemph|).
+\end{itemize}
+
+
+
+\newpage\noindent
+\textbf{Sprachunabh"angige Separatoren allgemein}
+
+\begin{small}
+\vspace{1.5ex}\noindent
+\verb|\arqsep => {, } | \hfill \baref{arqsep}
+\\ \hspace*{1em} Zwischen Dokument und Signatur in arq\hy Befehlen
+\\ \hspace*{1em} Alternativen: \verb|{: }| oder \verb|{\bapoint\newsentence}|
+\\[1ex]
+\verb|\nsep => {\baslash} | \hfill (siehe S.\,\pageref{nsep1} und S.\,\pageref{nsep2})
+\\ \hspace*{1em} Hinter Namen in x\fhy Befehlen sowie hinter \verb|\midvauthor| und \verb|\midkauthor|
+\\ \hspace*{1em} Alternativen: \verb|{, }| oder \verb|{ / \baupcorr}| oder ...\,.\hspace{.25em} Ggf.\hspace{-.1em} \verb|\protect| setzen:
+\\ \hspace*{1em} Die lokale Definition von \verb|\nsep| reist \textit{auch} mit dem Eintrag in die Liste!
+\\[1ex]
+\verb|\ntsep => {: \bacorr} | \hfill (siehe S.\,\pageref{ntsepA} und S.\,\pageref{ntsepB} samt Anm.\,\ref{ntsepC})
+\\ \hspace*{1em} Vor dem letzten Hauptargument (`Rest' oder Kurztitel) von v- und k\fhy Befehlen
+\\ \hspace*{1em} Alternativen: \verb|{, }| oder \verb|{\bapoint\ }|
+\\[1ex]
+\verb|\pagefolioshortsep => {\bacorr : } |
+\\ \hspace*{1em} Unter \verb|\notprintlongpagefolio| \baref{banotlong}
+ vor \verb|[|\textit{Seite}\verb|]| oder \verb|(|\textit{Blatt}\verb|)|
+\\ \hspace*{1em} "Anderung nicht empfohlen
+\\[1ex]
+\verb|\pernosep => {\bacorr\nobreak\ } | \hfill \baref{pernosep}
+\\ \hspace*{1em} Hilfsbefehl f"ur \verb|\pervolshortsep| und mehrere sprachabh"angige Separatoren
+\\ \hspace*{1em} Alternative: \verb|{\bastrut\ \bacorr}|
+\\[1ex]
+\verb|\pervolshortsep |\hfill\verb|=> {\ifbaperiodical{\ifbaibidem{, }{\pernosep}}{, }}|
+\\ \hspace*{1em} Unter \verb|\notprintlongpervol| \baref{banotlong}
+ vor \verb+|+\ko\textit{Band}\verb+|+ oder \verb|_|\textit{Nummer}\ko\verb|_|
+\\ \hspace*{1em} "Anderung nicht empfohlen
+\end{small}
+
+
+\vspace{2.95ex}\noindent
+\textbf{Sprachunabh"angige Separatoren speziell f"ur die Listen}
+
+\begin{small}
+\vspace{1.75ex}\noindent
+\verb|\listlnfnsep => {, }|
+\\ \hspace*{1em} Komma zwischen Nachname und Vorname am Kopf von v\hy Eintr"agen
+\\ \hspace*{1em} "Anderung etwa in \verb|{\bapoint\ }| prinzipiell m"oglich
+\\[2.35ex]
+\verb|\frompagesep => |\verb|{\bastrut\hskip 1.25em minus 0.25em\bacorr}|
+\\[-.55ex] \hspace*{1em} \hfill (S.\,\pageref{frompagesep1}, \pageref{frompagesep2})
+\\ \hspace*{1em} Nach dem eigentlichen Eintrag und vor \textit{Seite}$^{\mbox{\scriptsize\itshape Fu"snote}}$ auf \textbf{allen num\hy Listen}
+\\ \hspace*{1em} Alternativen: \verb|{, }| oder \verb|{\bastrut\hskip0pt\bacorr$\rightarrow$}|
+\\[2.8ex]
+Am Ende jedes Eintrags auf den verschiedenen nopage\hy Listen \baref[vgl.\ besonders]{nonum}
+kann stets sowohl `nichts' als auch ein Punkt stehen; hier die Voreinstellungen:
+\\[.9ex]
+\verb|\fromnopageabksep => {}| \hfill (\verb|\printabk|)
+\\[.25ex]
+\verb|\fromnopagearqsep => {\bapoint}| \hfill (\verb|\printarq|)
+\\[.25ex]
+\verb|\fromnopagepersep => {\bapoint}| \hfill (\verb|\printper|)
+\\[.25ex]
+\verb|\fromnopagevkcsep => {}| \hfill \baref[\texttt{\bs printvkc}; auch]{fromnopagevkcsep2}
+\\[.25ex]
+\verb|\fromnopagevxxsep => {\bapoint}| \hfill (\verb|\printvli| und \verb|\printvqu|)
+\\[.25ex]
+\verb|\fromnopagexrrsep => {}| \hfill \baref[\texttt{\bs printgrr}, \texttt{\bs printsrr}, \texttt{\bs printprr}]{fromnopagexrrsep}
+
+\end{small}
+
+
+
+\newpage\noindent
+\textbf{Sprachunabh"angige Klammerungen (open\fhy/close\hy Textelemente)}
+
+\begin{small}
+\vspace{1.7ex}\noindent
+\verb|\abkdefopen => {\bacorr\ (}| \hfill \baref{abkdefopen}
+\\
+\verb|\abkdefclose => {)}|
+\\ \hspace*{1em} Klammern, in die das zweite Argument von \verb|\abkdef| im Text gesetzt wird
+\\[1.6ex]
+\verb|\defabkopen => {\bastrut\ (\bacorr}| \hfill \baref{defabkopen}
+\\
+\verb|\defabkclose => {\bacorr)}|
+\\ \hspace*{1em} Klammern, in die das zweite Argument von \verb|\defabk| im Text gesetzt wird
+\\[1.6ex]
+\verb|\abklistopen => {\protect\pabklo}| \hfill \baref{abklistopen}
+\\[-.1ex] \hspace*{7em} \verb|\pabklo => {\bastrut\hskip 1.2em minus 0.3em\bacorr}|
+\\
+\verb|\abklistclose => {\protect\pabklc}|
+\\[-.1ex] \hspace*{7em} \verb|\pabklc => {}|
+\\ \hspace*{1em} Klammern, in die eine \textit{Erkl"arung} auf der abk\hy Liste gesetzt wird; die loka-
+\\ \hspace*{1em} len Definitionen von \verb|\abklistopen| und \verb|\abklistclose| reisen in die Liste
+\\[1.6ex]
+\verb|\arqlistopen => {\protect\parqlo}|
+\\[-.1ex] \hspace*{7em} \verb|\parqlo => {\bastrut\hskip 1em minus 0.3em\bacorr}|
+\\
+\verb|\arqlistclose => {\protect\parqlc}|
+\\[-.1ex] \hspace*{7em} \verb|\parqlc => {}|
+\\ \hspace*{1em} Klammern um das zweite Argument von \verb|\fillarq| auf der arq\hy Liste; die lo-
+\\ \hspace*{1em} kalen Definitionen von \verb|\arqlistopen| und \verb|\arqlistclose| reisen in die Liste
+\\[1.6ex]
+\verb|\arqsectionopen => {\bastrut\ \bacorr $-$ }|
+\\[-.05ex]
+\verb|\arqsectionclose => {\bahasdot} %% nie hinterpunkten|
+\\
+\verb|\arqsubsectionopen => {\bastrut\ \bacorr $-$ }|
+\\[-.05ex]
+\verb|\arqsubsectionclose => {\bahasdot}|
+\\
+\verb|\arqsubsubsectionopen => {\bastrut\ \bacorr $-$ }|
+\\[-.05ex]
+\verb|\arqsubsubsectionclose => {\bahasdot}|
+\\[.05ex] \hspace*{1em} Klammerpaare um das zweite Argument von \verb|\arqsection| (Archiv
+ S.\,\pageref{arqsection}, \pageref{Gedankenstriche}),
+\\ \hspace*{1em} \verb|\arqsubsection| bzw.\hspace{-.1em} \verb|\arqsubsubsection|; die lokalen Definitionen dazu
+\\ \hspace*{1em} reisen in die arq\hy Liste; vor zerbrechlichen Befehlen sollte \verb|\protect| stehen
+\\[1.6ex]
+\verb|\perlistopen => {\protect\pperlo}| \hfill (siehe S.\,\pageref{perlistopen})
+\\[-.1ex] \hspace*{7em} \verb|\pperlo => {\bastrut\ \bacorr $-$ }|
+\\
+\verb|\perlistclose => {\protect\pperlc}|
+\\[-.1ex] \hspace*{7em} \verb|\pperlc => {}|
+\\ \hspace*{1em} Klammern um das zweite Argument von \verb|\fillper| auf der per\hy Liste; die lo-
+\\ \hspace*{1em} kalen Definitionen von \verb|\perlistopen| und \verb|\perlistclose| reisen in die Liste
+\\[1.6ex]
+\verb|\xrrlistopen => {\protect\pxrrlo}| \hfill (siehe S.\,\pageref{xrrlistclose})
+\\[-.1ex] \hspace*{7em} \verb|\pxrrlo => {\bastrut\ \bacorr(}|
+\\
+\verb|\xrrlistclose => {\protect\pxrrlc}|
+\\[-.1ex] \hspace*{7em} \verb|\pxrrlc => {)}|
+\\ \hspace*{1em} Klammern um das zweite Argument von \verb|\fillgrr|, \verb|\fillprr| bzw.\hspace{-.1em} \verb|\fillsrr|;
+\\ \hspace*{1em} lokale Definitionen von \verb|\xrrlistopen| und \verb|\xrrlistclose| reisen in die Listen
+
+\end{small}
+
+
+\newpage
+\section{Sprachabh"angige Separatoren (\kern-.02em\textit{captions})}\label{Sect12}\label{SprachSep}
+
+Wenn Sie mit dem \BibArts-Befehl \verb|\sethyphenation{|\textit{Sprache}\verb|}|
+oder alternativ f"ur Zitatbl"ocke mit
+\verb|\begin{originalquote}[|\textit{Sprache}\verb|]| eine bestimmte\pdfko{1.125}\
+Sprache einstellen, wird nur bestimmt, wie Worte getrennt werden (Trennsatz).
+Andere Schalter stellen die Basissprache des Textes ein, bestimmen also,
+in welcher Sprache Text\hy Separatoren (\kern-.1em\textit{captions}) zu drucken
+sind $-$\pdfko{1.25}\
+ob beispielsweise die Abk"urzung f"ur Seite \textit{S.} oder \textit{p.} lautet.
+W"ahrend der\pdfko{1.25}\
+Trennsatz oft mehrfach in einem Text f"ur fremdsprachige w"ortliche Zitate
+jeweils angepasst wird, bleibt die Sprache der Text\hy Separatoren in einem
+Text meist durchgehend gleich. \BibArts\hy \textit{captions} werden also meist
+im Vorspann des\pdfko{1.25}\
+\LaTeX\hy Textes festgelegt; \verb|\bacaptionsgerman|
+ist voreingestellt. \BibArts\ stellt\pdfko{1.5}\
+gegenw"artig zudem \verb|\bacaptionsenglish|
+und \verb|\bacaptionsfrench| bereit.\pdfko{1}\
+Falls Sie \verb|ngerman.sty| nutzen,
+m"ussen Sie ggf.\ die dort bereitgestellten Befehle \verb|\captionsenglish|
+oder \verb|\captionsfrench| zus"atzlich setzen, denn die\pdfko{1.25}\
+\verb|\bacaptions|...\hy Befehle "andern die Voreinstellungen f"ur
+\LaTeX\hy \textit{captions} wie\pdfko{1.75}\
+etwa \textit{\chaptername} (\verb|\chaptername|) nicht.
+\verb|\bacaptions|...\hy Befehle "andern nur die\pdfko{1.5}\
+Voreinstellungen f"ur \BibArts\hy Befehle. Hier zwei wichtige Beispiele:
+
+\vspace{.75ex}{\small\noindent
+\verb| \bacaptionsenglish \vli{}{}{Text}[20] => |{\bacaptionsenglish \printonlyvli{}{}{Text}[20]} \\
+\verb| \bacaptionsgerman \vli{}{}{Text}[20] => |{\bacaptionsgerman \printonlyvli{}{}{Text}[20]}}
+
+\vspace{1.325ex}\noindent
+Bei der \textit{Einstellung} sprachabh"angiger Separatoren gibt es einen
+Sonderfall: \textsc{ebd.}\ wird mit\hspace{.15em} \verb|\setibidem{g}{ebenda}{}|\hspace{.25em}
+in\hspace{.15em} \textsc{ebenda}\hspace{.1em} umgestellt (nicht mit \verb|\renewcommand|\kern.05em). Das erste Argument
+\verb|{g}| weist die "Anderung in \textsc{ebenda} dabei \verb|\bacaptionsgerman| zu.
+Im Englischen lautet die Voreinstellung \textsc{ibidem} (\verb|\bacaptionsenglish|)
+und\hspace{.1em} \textsc{ibid\kern -0.07em.}\hspace{.075em} im Franz"osischen (\verb|\bacaptionsfrench|). Auch diese
+Voreinstellungen lassen sich "andern, etwa vertauschen.\footnote{
+Wie oben S.\,\pageref{setibidem} schon erw"ahnt,
+muss ein am Ende des vorgefertigten Textelements ggf.\ vorhandener Abk"urzungspunkt in das letzte Argument;
+sonst muss es leer bleiben: \\[1ex]
+\hspace*{5.5mm} \texttt{\bs setibidem\{e\}\{ibid\bs kern -0.07em\}\{.\}} \setibidem{e}{ibid\kern -0.07em}{.} \\
+\hspace*{5.5mm} \texttt{\bs setibidem\{f\}\{ibidem\}\{\}} \setibidem{f}{ibidem}{} \\[.25ex]
+\hspace*{5.5mm} \texttt{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \bs kli\{\}\{Text\}[20]. \ => } \bacaptionsgerman \printonlykli{}{Text}[20]. \\
+\hspace*{5.5mm} \texttt{\bs bacaptionsenglish \ \ \ \ \ \bs kli\{\}\{Text\}[20]. \ => } \bacaptionsenglish \printonlykli{}{Text}[20]. \\
+\hspace*{5.5mm} \texttt{\bs bacaptionsfrench \ \ \ \ \ \ \bs kli\{\}\{Text\}[20]. \ => } \bacaptionsfrench \printonlykli{}{Text}[20].}
+
+\vspace{1ex}\noindent
+Alle anderen \textit{captions} d"urfen Sie mit \verb|\renewcommand| "andern,
+wenn Ihnen\pdfko{1}\
+die Voreinstellungen von \BibArts\ nicht gefallen. Etwa
+\verb|\vli{}{}{Text}| w"urde nach \verb|\renewcommand{\ganonymousname}{[?]}|
+ausdrucken: {\renewcommand{\ganonymousname}{[?]} \printonlyvli{}{}{Text}}.\pdfko{.5}\
+Die deutschen \textit{captions} beginnen mit\hspace{-.1em} \verb|\g|...\,, die englischen mit\hspace{-.1em}
+\verb|\e|...\ und die\pdfko{1}\
+franz"osischen mit\hspace{-.1em} \verb|\f|...\,. Ich liste nun die
+in \verb|bibarts.sty| definierten Voreinstellungen auf. In Worten mit
+Sonderzeichen (wie "s oder \'e) ist jeweils die Trennhilfe\hspace{-.1em} \verb|\-|
+eingesetzt, damit auch in \texttt{OT1}\hy Kodierung richtig getrennt wird.
+
+\vspace{1ex}\noindent{\small
+\verb|\ganonymousname => {[Anonym]}| \\[-.8ex]
+\verb|\eanonymousname => {[Anonymous]}| \\[-.8ex]
+\verb|\fanonymousname => {[Anonyme]}| \\[-.2ex]
+Kein Autor in v- oder k-Befehlen eingetippt: \verb|\kli{}{T} =>| \printonlykli{}{T}.
+\\[.8ex]%
+\verb|\geditorname => {[\kern 0.04em Hrsg.]\kern 0.02em}| \\[-.8ex]
+\verb|\eeditorname => {(\kern -0.03em ed.\kern -0.06em)\kern 0.02em}| \\[-.8ex]
+\verb|\feditorname => {(\kern -0.03em \'ed.\kern -0.06em)\kern 0.02em}| \\[-.2ex]
+Text f"ur Befehl \verb|\editor =>| \editor\ \ (ohne Sortiergewicht).
+\\[.8ex]%
+\verb|\geditorpname => {[\kern 0.04em Hrsg.]\kern 0.02em}| \\[-.8ex]
+\verb|\eeditorpname => {(\kern -0.03em eds.\kern -0.08em)\kern 0.02em}| \\[-.8ex]
+\verb|\feditorpname => {(\kern -0.03em \'ed.\kern -0.06em)\kern 0.02em}| \\[-.2ex]
+Text f"ur Befehl \verb|\editors| (mehrere Herausgeber); mit \verb|\bacaptionsenglish|: {\bacaptionsenglish\editors}.
+\\[.8ex]%
+\verb|\gidemname => {ders\kern -0.04em.\bahasdot} % 2.2: \bahasdot neu| \\[-.8ex]
+\verb|\eidemname => {idem}| \\[-.8ex]
+\verb|\fidemname => {le m\^e\-me}| \\[-.2ex]
+Derselbe Autor wird direkt hintereinander mit verschiedenen Werken zitiert: \\[-.2ex]
+\verb|[m]| direkt nach v- und k-Befehlen: \verb|\kli[m]{N}{T} =>| \printonlykli[m]{N}{T}.
+\\[.8ex]%
+\verb|\geademname => {dies\kern -0.04em.\bahasdot} % 2.2: \bahasdot neu| \\[-.8ex]
+\verb|\eeademname => {eadem}| \\[-.8ex]
+\verb|\feademname => {la m\^e\-me}| \\[-.2ex]
+\verb|[f]| direkt nach v- und k-Befehlen: \verb|\kli[f]{N}{T} =>| \printonlykli[f]{N}{T}.
+\\[.8ex]%
+\verb|\giidemname => {diesn\kern -0.07em.\bahasdot} % 2.2: \bahasdot neu| \\[-.8ex]
+\verb|\eiidemname => {iidem}| \\[-.8ex]
+\verb|\fiidemname => {les m\^e\-mes}| \\[-.2ex]
+\verb|[p{}]| direkt nach v- und k-Befehlen: \verb|\kli[p{}]{N1}*{N2}{T} =>| \printonlykli[p{}]{N1}*{N2}{T}.
+\\[.8ex]%
+\verb|\gvolname => {, Bd.\,}| \\[-.8ex]
+\verb|\evolname => {, vol.\,}| \\[-.8ex]
+\verb|\fvolname => {, vol.\,}| \\[-.2ex]
+Bandangabe nach v-, k-, arq- und per-Befehlen: \verb+\per{ZfG.}|2| =>+ \per{ZfG.}|2|.
+\\[.8ex]%
+\verb|\gvolpname => {, Bde.\,}| \\[-.8ex]
+\verb|\evolpname => {, vols.\,}| \\[-.8ex]
+\verb|\fvolpname => {, vol.\,}| \\[-.2ex]
+Nach v-, k-, arq- und per-Befehlen:
+\verb+\per{ZfG.}|2-3| =>+ \per{ZfG.}|2-3|.\footnote{\BibArts\ ermittelt
+ einen vorliegenden Plural selbst"andig, indem es das Argument nach
+ \texttt{-}, [Komma], \texttt{\bs hy}, \texttt{\bs fhy}, \texttt{\bs f},
+ \texttt{\bs ff}, \texttt{\bs sq}, und \texttt{\bs sqq} durchsucht,
+ oder setzt die Plural\hy \textit{caption}\pdfko{.75}\
+ ein, wenn Sie \texttt{\bs baplural} setzen; vgl.\ oben S.\,\pageref{baplural}.}
+\\[.8ex]%
+\verb|\gpername => {\ifbaibidem{, Nr.\,}{\pernosep}}| \\[-.8ex]
+\verb|\epername => {\ifbaibidem{, no.\,}{\pernosep}}| \\[-.8ex]
+\verb|\fpername => {\ifbaibidem{, n\fup{o}\,}{\pernosep}}| \\[-.2ex]
+Heftangaben im Singular (mit/ohne \textsc{ebd.}) in v-, k-, arq- und per-Befehlen.\footnote{
+ \texttt{\bs per\{ZfG.\}\_5\_ und \bs per\{ZfG.\}\_6\_ \ \ \ \ => }
+ \per{ZfG.}_5_ und \per{ZfG.}_6_.}
+\\[.8ex]%
+\verb|\gperpname => {\ifbaibidem{, Nr.\,}{\pernosep}}| \\[-.8ex]
+\verb|\eperpname => {\ifbaibidem{, no.\,}{\pernosep}}| \\[-.8ex]
+\verb|\fperpname => {\ifbaibidem{, n\fup{os}\,}{\pernosep}}| \\[-.2ex]
+Heftangaben im Plural (mit/ohne \textsc{ebd.}) in v-, k-, arq- und per-Befehlen. \\[-.2ex]
+Beispiel unter \verb|\bacaptionsfrench| in der Fu"snote.\footnote{\bacaptionsfrench
+ \texttt{\bs per\{Jour\}\_4-5\_ et \bs per\{Jour\}\_6-7\_ \ => }
+ \printonlyper{Jour}_4-5_ et \printonlyper{Jour}_6-7_.}
+\newpage\noindent%\\[.8ex]%
+\verb|\gisonfolioname => {, Bl.\,}| \\[-.8ex]
+\verb|\eisonfolioname => {, folio\nobreak \ }| \\[-.8ex]
+\verb|\fisonfolioname => {, folio\nobreak \ }| \\[-.2ex]
+Blattangabe nach v-, k-, arq- und per-Befehlen: \verb|\arq{}{PRO}(2) =>| \printonlyarq{}{PRO}(2).
+\\[.8ex]%
+\verb|\gisonfoliopname => {, Bl.\,}| \\[-.8ex]
+\verb|\eisonfoliopname => {, folii\nobreak \ }| \\[-.8ex]
+\verb|\fisonfoliopname => {, folii\nobreak \ }| \\[-.2ex]
+Sichtbar in {\bacaptionsenglish\verb|\bacaptionsenglish| \verb|\arq{}{PRO}(2-3) =>| \printonlyarq{}{PRO}(2-3).}
+\\[.8ex]%
+\verb|\gisonxfolioname => {, dort: Bl.\,}| \\[-.8ex]
+\verb|\eisonxfolioname => {, there: Folio\nobreak \ }| \\[-.8ex]
+\verb|\fisonxfolioname => {, l\`a: Folio\nobreak \ }| \\[-.2ex]
+\verb|*|-Blatt nach v-, k-, arq- und per-Befehlen: \verb|\arq{}{PRO}*(2) =>| \printonlyarq{}{PRO}*(2).
+\\[.8ex]%
+\verb|\gisonxfoliopname => {, dort: Bl.\,}| \\[-.8ex]
+\verb|\eisonxfoliopname => {, there: Folii\nobreak \ }| \\[-.8ex]
+\verb|\fisonxfoliopname => {, l\`a: Folii\nobreak \ }| \\[-.2ex]
+Sichtbar in {\bacaptionsenglish\verb|\bacaptionsenglish| \verb|\arq{}{PRO}*(2-3) =>| \printonlyarq{}{PRO}*(2-3).}
+\\[.8ex]%
+\verb|\gisonpagename => {, S.\,}| \\[-.8ex]
+\verb|\eisonpagename => {, p.\,}| \\[-.8ex]
+\verb|\fisonpagename => {, p.\,}| \\[-.2ex]
+Seitenangabe nach v-, k-, arq- und per-Befehlen: \verb|\kli{N}{T}[2] =>| \printonlykli{N}{T}[2].
+\\[.8ex]%
+\verb|\gisonpagepname => {, S.\,}| \\[-.8ex]
+\verb|\eisonpagepname => {, pp.\,}| \\[-.8ex]
+\verb|\fisonpagepname => {, p.\,}| \\[-.2ex]
+Sichtbar in {\bacaptionsenglish\verb|\bacaptionsenglish| \verb|\kli{N}{T}[2-3] =>| \printonlykli{N}{T}[2-3].}
+\\[.8ex]%
+\verb|\gisonxpagename => {, dort: S.\,}| \\[-.8ex]
+\verb|\eisonxpagename => {, there: p.\,}| \\[-.8ex]
+\verb|\fisonxpagename => {, l\`a: p.\,}| \\[-.2ex]
+\verb|*|-Seite nach v-, k-, arq- und per-Befehlen: \verb|\kli{N}{T}*[2] =>| \printonlykli{N}{T}*[2].
+\\[.8ex]%
+\verb|\gisonxpagepname => {, dort: S.\,}| \\[-.8ex]
+\verb|\eisonxpagepname => {, there: pp.\,}| \\[-.8ex]
+\verb|\fisonxpagepname => {, l\`a: p.\,}| \\[-.2ex]
+Sichtbar in {\bacaptionsenglish\verb|\bacaptionsenglish| \verb|\kli{N}{T}*[2-3] =>| \printonlykli{N}{T}*[2-3].}
+\\[.8ex]%
+\verb|\gbibtitlename => {Quellen und Literatur}| \\[-.8ex]
+\verb|\ebibtitlename => {Bibliography}| \\[-.8ex]
+\verb|\fbibtitlename => {Bibliographie}| \\[-.2ex]
+Titel gesamter Belegapparat ("Uberschrift \BibArts-Anhang) \verb|\printbibtitle|.
+\\[.8ex]%
+\verb|\gabktitlename => {Ab\-k\"ur\-zungen}| \\[-.8ex]
+\verb|\eabktitlename => {Abbreviations}| \\[-.8ex]
+\verb|\fabktitlename => {Ab\-r\'e\-viations}| \\[-.2ex]
+Titel Abk"urzungsverzeichnis \verb|\printabk| und \verb|\printnumabk| bzw.\ \verb|\printabktitle|.
+\\[.8ex]%
+\verb|\gvlititlename => {Literatur}| \\[-.8ex]
+\verb|\evlititlename => {Literature}| \\[-.8ex]
+\verb|\fvlititlename => {Travaux}| \\[-.2ex]
+Titel Literaturliste \verb|\printvli| und \verb|\printnumvli| bzw.\ \verb|\printvlititle|.
+\\[.8ex]%
+\verb|\ghinttovliname => {[L]} %\| \\[-.8ex]
+\verb|\ehinttovliname => {[L]} % ) Alle ohne italics-Korrektur!| \\[-.8ex]
+\verb|\fhinttovliname => {[T]} %/| \\[-.2ex]
+Hinweis auf Liste mit vollen Literaturangaben: \verb|\kli{N}{T} =>| \printonlykli{N}{T}.
+\\[.8ex]%
+\verb|\gvqutitlename => {Gedruckte Quellen}| \\[-.8ex]
+\verb|\evqutitlename => {Published Documents}| \\[-.8ex]
+\verb|\fvqutitlename => {Sources im\-pri\-m\'ees}| \\[-.2ex]
+Titel Verzeichnis gedruckter Quellen \verb|\printvqu| (plus -\verb|num|-) bzw.\ \verb|\printvqutitle|.
+\\[.8ex]%
+\verb|\ghinttovquname => {[Q]} %\| \\[-.8ex]
+\verb|\ehinttovquname => {[D]} % ) Alle ohne italics-Korrektur!| \\[-.8ex]
+\verb|\fhinttovquname => {[S]} %/| \\[-.2ex]
+Hinweis auf Verzeichnis mit vollen Quellenangaben: \verb|\kqu{N}{T} =>| \printonlykqu{N}{T}.
+\\[.8ex]%
+\verb|\gpertitlename => {Zeitschriften}| \\[-.8ex]
+\verb|\epertitlename => {Periodicals}| \\[-.8ex]
+\verb|\fpertitlename => {P\'e\-riodiques}| \\[-.2ex]
+Titel Zeitschriftenverzeichnis \verb|\printper| und \verb|\printnumper| bzw.\ \verb|\printpertitle|.
+\\[.8ex]%
+\verb|\garqtitlename => {Ungedruckte Quellen}| \\[-.8ex]
+\verb|\earqtitlename => {Unpublished Documents}| \\[-.8ex]
+\verb|\farqtitlename => {Sources in\-\'edi\-tes}| \\[-.2ex]
+Titel Archivquellenverzeichnis \verb|\printarq|, \verb|\printnumarq| bzw.\ \verb|\printarqtitle|.
+\\[.8ex]%
+\verb|\gvkctitlename => {Verwendete Kurztitel}| \\[-.8ex]
+\verb|\evkctitlename => {Shortened References}| \\[-.8ex]
+\verb|\fvkctitlename => {Titres ab\-r\'e\-g\'ees}| \\[-.2ex]
+Titel Kurzzitateverzeichnis \verb|\printnumvkc| und \verb|\printvkc| bzw.\ \verb|\printvkctitle|.
+\\[.8ex]%
+\verb|\ggrrtitlename => {Ortsregister}| \\[-.8ex]
+\verb|\egrrtitlename => {Geographical index}| \\[-.8ex]
+\verb|\fgrrtitlename => {Registre g\'eo\-graphique}| \\[-.2ex]
+Titel Ortsregister f"ur Liste \verb|\printnumgrr| und \verb|\printgrr| bzw.\ \verb|\printgrrtitle|.
+\\[.8ex]%
+\verb|\gprrtitlename => {Personenregister}| \\[-.8ex]
+\verb|\eprrtitlename => {Person index}| \\[-.8ex]
+\verb|\fprrtitlename => {Registre des personnes}| \\[-.2ex]
+Titel Personenreg.\ f"ur Liste \verb|\printnumprr| und \verb|\printprr| bzw.\ \verb|\printprrtitle|.
+\\[.8ex]%
+\verb|\gsrrtitlename => {Sachregister}| \\[-.8ex]
+\verb|\esrrtitlename => {Subject index}| \\[-.8ex]
+\verb|\fsrrtitlename => {Registre des sujets}| \\[-.2ex]
+Titel Sachregister f"ur Liste \verb|\printnumsrr| und \verb|\printsrr| bzw.\ \verb|\printsrrtitle|.
+\\[.8ex]%
+\verb|\gfolpagename => {\badelspacebefore\,f\kern -0.1pt.\bahasdot}| \\[-.8ex]
+\verb|\efolpagename => {\badelspacebefore\,f\kern -0.1pt.\bahasdot}| \\[-.8ex]
+\verb|\ffolpagename => {\badelspacebefore\ sq.\bahasdot}| \\[-.2ex]
+Abk"urzung 'folgende' (\verb|\f|\,=\,\verb|\sq|): \verb|\per{ZfG.}_2\sq_[3 \f] =>| \per{ZfG.}_2\sq_[3 \f].
+\\[.8ex]%
+\verb|\gxfolpagename => {\badelspacebefore\,ff\kern -0.1pt.\bahasdot}| \\[-.8ex]
+\verb|\exfolpagename => {\badelspacebefore\,ff\kern -0.1pt.\bahasdot}| \\[-.8ex]
+\verb|\fxfolpagename => {\badelspacebefore\ sqq.\bahasdot}| \\[-.2ex]
+Abk"urzung 'mehrere folgende': \verb|\per{ZfG.}_2\ff_[3\sqq] =>| \per{ZfG.}_2\ff_[3\sqq].
+\\[2.5ex]%
+\verb|\gannouncektitname => |{\footnotesize\verb|{\bastrut\ (\kern 0.015em im Folgenden \baupcorr}|} \\[-.4ex]
+\hspace*{5cm} \verb|\gannouncekendname => {)}| \\[-.4ex]
+\verb|\eannouncektitname => |{\footnotesize\verb|{\bastrut\ (\kern -0.02em cited as \baupcorr}|} \\[-.4ex]
+\hspace*{5cm} \verb|\eannouncekendname => {)}| \\[-.4ex]
+\verb|\fannouncektitname => |{\footnotesize\verb|{\bastrut\ (\kern 0.02em par la suite \baupcorr}|} \\[-.4ex]
+\hspace*{5cm} \verb|\fannouncekendname => {)}| \\[.2ex]
+\verb|\ktit|""-Ank"undigung: \verb|\vli{V}{N}{\ktit{T}} =>| {\notktitaddtok\printonlyvli{V}{N}{\ktit{T}}}.
+\newpage\noindent%\\[.8ex]%
+\verb|\grefvbegname => {(}| \\[-.8ex]
+\hspace*{1cm} \verb|\grefvendname => {\barefcorr)}| \\[-.8ex]
+\verb|\erefvbegname => {[\nobreak \hskip 1pt plus 0pt}| \\[-.8ex]
+\hspace*{1cm} \verb|\erefvendname => {\nobreak \hskip 1pt plus 0pt\barefcorr]}| \\[-.8ex]
+\verb|\frefvbegname => {(}| \\[-.8ex]
+\hspace*{1cm} \verb|\frefvendname => {\barefcorr)}| \\[-.2ex]
+Klammern in \verb|\conferize| f"ur k-Befehle: \verb|\kli{Luhmann}{Soziale Systeme} =>| \\[-.5ex]
+{\conferize \kli{Luhmann}{Soziale Systeme}}. \\[-.5ex]
+Die \textit{italics}\hy Korrektur \verb|\barefcorr| ist f"ur Verweise bes.\ auf \verb|{minipage}|-Fu"snoten.
+\\[.8ex]%
+\verb|\gconfername => {\kern -0.03em wie}| \\[-.8ex]
+\verb|\econfername => {\kern -0.05em cf.\bahasdot}| \\[-.8ex]
+\verb|\fconfername => {\kern -0.03em op.\ cit.\bahasdot}| \\[-.2ex]
+Bezugsworte im Querverweis des eben genannten \verb|\conferize|-Stils.
+\\[.8ex]%
+\verb|\grefvpagname => {S.\,}| \\[-.8ex]
+\verb|\erefvpagname => {p.\,}| \\[-.8ex]
+\verb|\frefvpagname => {p.\,}| \\[-.2ex]
+Seitenabk"urzung im Querverweis des eben genannten \verb|\conferize|-Stils; und \\[-.5ex]
+ebenso f"ur \BibArts-Querverweise: \verb|\baref{Mueller} =>| \baref{Mueller}, wozu auch \\[-.5ex]
+die oben unter \verb|\grefvbegname| ... genannten Klammersymbole benutzt werden.
+\\[.8ex]%
+\verb|\grefverbname => {siehe}| \label{grefverbname} \\[-.8ex]
+\verb|\erefverbname => {see}| \\[-.8ex]
+\verb|\frefverbname => {voir}| \\[-.2ex]
+Bezugswort im eben genannten \verb|\baref|-Querverweis.
+\\[.8ex]%
+\verb|\grefvfntname => {, Anm.\,}| \\[-.8ex]
+\verb|\erefvfntname => {, n.\,}| \\[-.8ex]
+\verb|\frefvfntname => {, n.\,}| \\[-.2ex]
+Abk"urzung f"ur '\kern-.05em Anmerkung' oder 'Fu"snote' in den \verb|\conferize|-k-Befehle oben \\[-.5ex]
+und f"ur \BibArts\hy Querverweise: \verb|\baref{XX} =>| \baref{XX}.\footnote{
+\balabel{XX}\texttt{\bs balabel\{XX\}}.
+\BibArts\ bemerkt automatisch, ob dies in einer Fu"snote steht.}
+\\[.8ex]%
+\label{erscheditionname}%
+\verb|\gerscheditionname => {\teskip Auf{\kern.03em}l.,}| \\[-.8ex]
+\verb|\eerscheditionname => {\fupskip edition,}| \\[-.8ex]
+\verb|\ferscheditionname => {\fupskip \'edi\-tion,} %%|
+ \texttt{Vgl. oben S. \pageref{fordinalf}.} \\[-.2ex]
+Auf"|lage-Abk"urzung in \verb|\ersch[4]{Stuttgart}{1899} =>| \ersch[4]{Stuttgart}{1899}.
+\\[.8ex]%
+\verb|\gerschvolumename => {Bd.,} \gerschvolumepname => {Bde.,}| \\[-.8ex]
+\verb|\eerschvolumename => {vol.,} \eerschvolumepname => {vols.,}| \\[-.8ex]
+\verb|\ferschvolumename => {vol.,} \ferschvolumepname => {vol.,}| \\[-.2ex]
+Band-Abk"urzung in \verb+\ersch|3|{Stuttgart}{1899} =>+ \ersch|3|{Stuttgart}{1899}.
+\\[.8ex]%
+\verb|\gerschnohousename => {\oO,}| {\footnotesize\verb|=> {o.\kern 0.1em O\kern -0.08em.\bahasdot}|}\\[-.8ex]
+\verb|\eerschnohousename => {n.\kern 0.15em p.,} | ('no place') \\[-.8ex]
+\verb|\ferschnohousename => {s.\kern 0.15em l\kern 0.02em.,}| \ ('sans lieu') \\[-.2ex]
+Kein Erscheinungsort getippt in \verb|\ersch{}{1899} =>| \ersch{}{1899} \ ('ohne Ort').
+\\[.8ex]%
+\verb|\gerschnoyearname => {\oJ} | {\footnotesize\verb|=> {o.\kern 0.1em J\kern -0.09em.\bahasdot}|} \\[-.8ex] \label{gerschnoyearname}
+\verb|\eerschnoyearname => {n.\kern 0.13em d.\bahasdot}| \ ('no date') \\[-.8ex]
+\verb|\ferschnoyearname => {s.\kern 0.13em d.\bahasdot}| \ ('sans date') \\[-.2ex]
+Kein Jahr in \verb|\vli{}{Sam}{Titel, \ersch{Paris}{}} =>| \ersch{Paris}{} \hfill (weiter!\,$\rightarrow$)
+}
+
+\noindent
+\textbf{Separater Ausdruck von vorgefertigten Textelementen}\\[1ex]
+Wenn Befehle, die \verb|\bahasdot| oder \verb|\banotdot| nutzen, nicht am
+Ende des Arguments eines \BibArts\fhy Hauptbefehls stehen, kann dies
+einen Zeilenumbruch verhindern. An \verb*|\oJ, | wird umgebrochen, aber ein
+\verb|\oJ| \textit{direkt} folgendes Leerzeichen ist oft gesch"utzt. Dann k"onnen
+Sie \verb|\strut| einf"ugen: Im freien Text ist also \verb*|\oJ\strut\ |
+statt \verb*|\oJ\ | zu tippen. Das gilt auch, wenn ein Befehl \verb|\oJ| ausf"uhrt:
+\verb|\ersch{Stuttgart}{}\strut\ next =>| \ersch{Stuttgart}{}\strut\ next.
+Am Ende von Hauptbefehlen macht \BibArts\ dies f"ur Sie eigenst"andig:
+\verb|\vli{}{N.}{...., \ersch{Stuttgart}{}} next =>|
+\printonlyvli{}{N.}{...., \ersch{Stuttgart}{}} next. Auch ist es der
+Hauptbefehl, der Ihren Satzende\hy Punkt nach einer
+automatisch eingef"ugten Abk"urzung `verschluckt'; Beispiel
+ist der Hauptbefehl \verb|\vli{}{N.}{...., \ersch{Stuttgart}{}}. =>|
+\printonlyvli{}{N.}{...., \ersch{Stuttgart}{}}.
+Oder \verb|\vli{}{N.}{...., \oJ}. =>| \printonlyvli{}{N.}{...., \oJ}.
+Dagegen ergibt im freien Text \verb|\oJ. =>| \oJ. Und
+\verb|\ersch{Stuttgart}{}. =>| \ersch{Stuttgart}{}. Auch stellen
+nur \BibArts\hy Hauptbefehle das \textit{spacing} wie
+oben S.\,\pageref{nonfrenchspacing} geschildert ein.
+Sonst ist \verb|\ersch{Stuttgart}{}\bapoint\newsentence Next| stets m"oglich
+(\verb|\bapoint| tut, was \verb|\strut| tut,
+druckt jedoch nur \textit{einen} Punkt: etwa nach \verb|\renewcommand{\poJ}{ohne Jahr}|; siehe S.\,\pageref{poJ}).
+Bei `englischem' \textit{spacing} ist \verb|\newsentence| sogar n"otig:
+
+\vspace{1ex}
+{\small
+ %\renewcommand{\poJ}{ohne Jahr}%
+{\frenchspacing \verb|\frenchspacing | \ersch{Stuttgart}{}\bapoint\newsentence Next
+}
+
+{\nonfrenchspacing \verb|\nonfrenchspacing | \ersch{Stuttgart}{}\bapoint\newsentence Next
+}
+}
+
+\vspace{1.5ex}\noindent
+Vorgefertigte Textelemente, die speziell \verb|\bacorr| enthalten,
+sollten Sie nicht separat ausdrucken. Denn \verb|\bacorr|
+ist nur innerhalb der \BibArts\hy Hauptbefehle mit einem sinnvollen
+Inhalt belegt. Zum separaten Ausdruck speziell von \verb|\ntsep| gibt
+es deshalb den Befehl \verb|\printntsep|, der `\printntsep' mit lokal
+ausgeschalteter \textit{italics}\hy Korrektur druckt.
+Sie sollten aber besser \verb|\ntvauthor| und \verb|\ntkauthor| verwenden
+(oben S.\,\pageref{ntvauthor}):\hspace{.5em} \verb|\ntkauthor{Meier} XX. => |\ntkauthor{Meier} XX.
+
+
+\vspace{4ex}\noindent
+\fbox{\parbox{.98\textwidth}{\sffamily
+Einfacher ist es sicher, vorgefertigte Textelemente nie separat auszudrucken
+und \texttt{\bs ersch} nur ganz ans Ende des letzten Arguments von v\fhy Befehlen zu setzen.}}
+
+\vfill\noindent
+{\sffamily Nun folgen Kap.\,\ref{Sect13}, \ref{Sect14} und \ref{Sect15} mit Zusammenstellungen von \BibArts\hy Befehlen.}
+
+
+
+\newpage
+\section{Die \BibArts\kern .1em\hy Hauptbefehle}\label{Sect13}\label{Hauptbefehle}
+
+\vspace{1ex}
+ \begin{tabular}{rrrc}%
+ \bf Basis & \verb|= |\bf addto-Teil & \verb|+ |\bf printonly-Teil & \ \ \ \bf Zusatzf"ullung \\ \hline
+ & & & \\
+ \verb|\vli| & \verb|= \addtovli| & \verb|+ \printonlyvli| & \\
+ \verb|\vqu| & \verb|= \addtovqu| & \verb|+ \printonlyvqu| & \\
+ \verb|\kli| & \verb|= \addtokli| & \verb|+ \printonlykli| & \\
+ \verb|\kqu| & \verb|= \addtokqu| & \verb|+ \printonlykqu| & \\
+ & & & \\
+ \verb|\xvli| & \verb|= \xaddtovli| & \verb|+ \xprintonlyvli| & \\
+ \verb|\xvqu| & \verb|= \xaddtovqu| & \verb|+ \xprintonlyvqu| & \\
+ \verb|\xkli| & \verb|= \xaddtokli| & \verb|+ \xprintonlykli| & \\
+ \verb|\xkqu| & \verb|= \xaddtokqu| & \verb|+ \xprintonlykqu| & \\
+ & & & \\
+ \verb|\per| & \verb|= \addtoper| & \verb|+ \printonlyper| & \verb|\fillper| \\
+ \verb|\arq| & \verb|= \addtoarq| & \verb|+ \printonlyarq| & \verb|\fillarq| \\
+ & & & \\
+ \verb|\abkdef| & \verb|= \addtoabkdef| & \verb|+ \printonlyabkdef| & \\
+ \verb|\defabk| & \verb|= \addtodefabk| & \verb|+ \printonlydefabk| & \\
+ \verb|\abk| & \verb|= \addtoabk| & \verb|+ \printonlyabk| & \\
+ & & & \\
+ & \verb|\addtogrr| & & \verb|\fillgrr| \\
+ & \verb|\addtoprr| & & \verb|\fillprr| \\
+ & \verb|\addtosrr| & & \verb|\fillsrr| \\
+ \end{tabular}
+
+\vspace{4.5ex}\noindent
+\textbf{Spielregeln:}
+
+\begin{itemize}\itemsep .1ex
+\item k\hy Befehle wie \verb|\kli| und \verb|\kqu| haben zwei Pflichtargumente
+ (Nachname, Kurztitel) und v\fhy Befehle drei (Vorname, Nachname, Rest).
+ k\hy Belege d"urfen nach Einf"uhrung eines Werks mittels v\hy Beleg verwendet werden;
+ in diesem Fall muss der Kurztitel in `Rest' mittels \verb|\ktit| markiert sein.
+\item abk wird erst nach Einf"uhrung mittels abkdef oder defabk verwendet
+\item per hat ein Argument und arq zwei (Schriftst"uck und Signatur)
+\item fill-Befehle \textit{k"onnen} im zweiten Argument einmal an zentraler Stelle
+ Zusatztext f"ur die Liste aufnehmen, um das Stichwort im ersten Argument
+ zu erkl"aren. Das erste Argument von \verb|\fillarq| muss die Zeichenfolge\pdfko{.25}\
+ des zweiten Arguments eines arq\hy Befehls enthalten (eine Signatur),
+ bei per\fhy, grr\fhy, prr- und srr\hy Befehlen den Text \textit{des} Arguments.
+\end{itemize}
+
+\vspace{1ex}\noindent
+Bei abgek"urzten Zeitschriften f"ullt \verb|\abkper| die \verb|\abk|- \textit{und} die \verb|\per|\hy Liste.
+
+
+
+\newpage
+\section{Schrifteinstellung in \BibArts\kern .1em\hy Argumenten}\label{Sect14}\label{hervor}
+
+\vspace{1ex}\noindent
+\begin{tabular}{lll}
+\textbf{Befehl} & \textbf{Voreinstellung} & \textbf{Alternative} \\ \hline
+ & & \\
+\verb|\authoremph| & \verb|{\normalfont\scshape}| & \verb|{\upshape\|\abra{...}\verb|}| \\[.25ex]
+\verb|\kxxemph| & \verb|{}| \ (\verb|\kli|- und \verb|\kqu|\hy Titel)& alles (S.\,\pageref{kxxB}, \pageref{kxxA}, \pageref{ntsepB}) \\[.25ex]
+\verb|\edibidemph| & \verb|{\scshape}| \ (\textsc{ebd.}, \textsc{ders.}\ko)& \textbf{KEINE!} \\[.25ex]
+\verb|\abkemph| & \verb|{\sffamily}| & alles (S.\,\pageref{abkA}, \pageref{abkB}) \\[.25ex]
+\verb|\abklistemph| & \verb|{\bfseries}| & alles; \verb|{\abkemph}| \\[.25ex]
+\verb|\arqemph| & \verb|{\normalfont\sffamily}| & \verb|{\upshape\|\abra{...}\verb|}| \\[.25ex]
+\verb|\arqlistemph| & \verb|{\arqemph\relax\normalsize}| & alles (vgl.\ unten) \\[.25ex]
+\verb|\peremph| & \verb|{\normalfont\scshape}| & \verb|{\upshape\|\abra{...}\verb|}| \\[.25ex]
+\verb|\perlistemph| & \verb|{\peremph}| & alles (siehe\ unten) \\[.25ex]
+\verb|\xrrlistemph| & \verb|{}| \ (Register-Stichworte) & alles (S.\,\pageref{xrr})\\[.25ex]
+\verb|\balistnumemph| & \verb|{\sffamily}| \ (Index-Zahlen) & \verb|{}| (auto-up: S.\,\pageref{listnum}) \\
+\end{tabular}\label{arqemph2}%
+
+\vspace{3ex}\noindent
+"Anderungen an diesen Befehlen lassen sich mit \verb|\renewcommand|
+durchf"uhren.\pdfko{1}\
+\verb|\authoremph|, \verb|\edibidemph|, \verb|\arqemph|
+und \verb|\peremph| l"asst sich auch etwa\pdfko{1.5}\
+\verb|\bfseries| zuweisen,
+aber nur \textit{nach} \verb|\upshape| oder besser \verb|\normalfont|
+(in\pdfko{1.5}\
+schr"aggestelltem "au"seren Umfeld w"urde \BibArts\ sonst jedes Mal
+warnen).
+
+\vspace{.25ex}
+Zudem sollten f"ur \verb|\edibidemph| nur \textsc{kleine kapitelle}
+als Basis verwendet
+werden, denn nur das umgeht das Problem der
+Klein-/""Gro"sschreibung (\textsc{ebd.} und \textsc{ders.} m"ussen ja
+nicht immer am Anfang eines Satzes stehen)!
+
+\vspace{1.5ex}\noindent
+\verb|\arqlistemph| und \verb|\perlistemph| sind so voreingestellt, dass
+sie (im Wesentlichen) die Einstellungen von \verb|\arqemph| und
+\verb|\peremph| f"ur den Listenausdruck "ubernehmen.
+F"ur listemph\hy Befehle gilt "ubertragbar:
+
+\vspace{.5ex}
+{\footnotesize
+\begin{verbatim}
+ {\renewcommand{\perlistemph}{\slshape}%
+ Auf den Ausdruck von \per{ShortMagazine} wirkt sich dies nicht aus!
+ \renewcommand{\balistnumemph}{} %% Zahlen nicht in sans serif %%
+ \printnumper}
+\end{verbatim}}
+
+\vspace{.5ex}
+{\renewcommand{\perlistemph}{\slshape}%
+ \hspace{.em}Auf den Ausdruck von \per{ShortMagazine} wirkt sich dies nicht aus!
+ \renewcommand{\balistnumemph}{} %% Zahlen nicht in sans serif %%
+\vspace{-1.25ex}
+ \printnumper}
+
+
+\newcommand{\mynwarrow}{\hspace{1cm}\raisebox{1.1ex}{{\footnotesize$\nwarrow$}}\hspace{.3em}}%
+\newpage
+\section{\BibArts\kern .1em\hy Ein\fhy\ko/\ko\ko Ausschalter}\label{Sect15}
+
+\vspace{1ex}\
+
+\hspace*{7.5mm}
+\begin{tabular}{ll}
+ \bf Voreinstellung "andern\hspace{1cm} & \bf $\sim$ wiederherstellen\hspace{1.1em}(1/2) \\ \hline
+ \multicolumn{2}{l}{} \\[1ex]
+ %%
+ \verb| \affixhints| & \verb|\notaffixhints| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Vor [L] und [Q] keinen Zeilenumbruch erlauben (\ko neu in 2.2)}} \\[3ex]
+ %%
+ \verb|\notannouncektit| & \verb| \announcektit| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily v\hy Befehl druckt den sp"ater verwendeten Kurztitel nicht aus}} \\[3ex]
+ %%
+ \verb|\notbafrontcorr| & \verb| \bafrontcorr| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily {\normalfont\footnotesize\textit{Italics}\hy}Korrektur am Kopf von \BibArts\hy Befehlen unterlassen}} \\[3ex]
+ %%
+ \verb| \baonecolitemdefs| & \verb|\notbaitemdefs| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily \texttt{\bs print...list}\hy Befehle bekommen item\hy Abst"ande wie \texttt{\bs printvli}}} \\[3ex]
+ %%
+ \verb| \batwocolitemdefs| & \verb|\notbaitemdefs| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily \texttt{\bs print...list}\hy Befehle bekommen item\hy Abst"ande wie \texttt{\bs printvkc}}} \\[3ex]
+ %%
+ \verb| \conferize| & \verb|\notconferize| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Verweis vom k\hy Befehl auf Stelle des zugeh"origen v\hy Befehls}} \\[3ex]
+ %%
+ \verb| \exponenteditionnumber| & \verb|\notexponenteditionnumber| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily{\normalfont\footnotesize\texttt{\bs ersch}}\hy Befehl druckt Nummer der {\normalfont\footnotesize\texttt{[}}{\normalfont\footnotesize\textit{Auf"|lage}}{\normalfont\footnotesize\texttt{]}} als Exponent}} \\[3ex]
+ %%
+ \verb|\nothyko| & \verb| \hyko| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Automatisches
+ {\normalfont\footnotesize\textit{kerning}} nach {\normalfont\footnotesize\texttt{\bs hy}}
+ und {\normalfont\footnotesize\texttt{\bs fhy}} ausschalten: \hyko\fhy Y\ \nothyko\fhy Y}} \\[3ex]
+ %%
+ \verb|\notibidemize| & \verb| \ibidemize| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Automatisches {\normalfont\footnotesize\textsc{ebd.}}\hy Setzen ausschalten}} \\[3ex]
+ %%
+ \verb|\notktitaddtok| & \verb| \ktitaddtok| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily{\normalfont\footnotesize\texttt{\bs ktit}} im v\fhy Befehl erzeugt keinen \kern-.2em{\normalfont\footnotesize\texttt{.vkc}}\hy Eintrag wie ein k\fhy Befehl}} \\[3ex]
+ %%
+ \verb|\notkurzaddtoarq| & \verb| \kurzaddtoarq| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily{\normalfont\footnotesize\texttt{\bs kurz}}
+ (\kern-.075em {\normalfont\footnotesize\textit{Vorl"aufer}} von
+ {\normalfont\footnotesize\texttt{\bs ktit}}) erzeugt keinen
+ \hspace{-.2em}{\normalfont\footnotesize\texttt{.arq}}\hy Eintrag}} \\%[3ex]
+\end{tabular}
+
+
+\newpage
+\section*{\hspace{2em}\BibArts\kern .1em\hy Ein\fhy\ko/\ko\ko Ausschalter}
+
+\vspace{1ex}\
+
+\hspace*{7.5mm}
+\begin{tabular}{ll}
+ \bf Voreinstellung "andern\hspace{1cm} & \bf $\sim$ wiederherstellen\hspace{1.1em}\hfill (2/2) \\ \hline
+ \multicolumn{2}{l}{} \\[1ex]
+ %%
+ \verb|\notnegcorrdefabk| & \verb| \negcorrdefabk| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Kein negativer Abstand nach Klammer-Auf in Abk"urzungen}} \\[3ex]
+ %%
+ \verb|\notprinthints| & \verb| \printhints| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily k\hy Befehle sollen [L]- bzw\ko.\ [Q]\hy Hinweise nicht drucken}} \\[3ex]
+ %%
+ \verb|\notprintlongpagefolio| & \verb| \printlongpagefolio| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Statt `S.' bei {\normalfont\footnotesize\texttt{[num]}} bzw\ko.\ `Bl.' bei {\normalfont\footnotesize\texttt{(num)}} einen Doppelpunkt drucken}} \\[3ex]
+ %%
+ \verb|\notprintlongpervol| & \verb| \printlongpervol| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily `Bd.' bei {\normalfont\footnotesize\texttt{\string|n\string|}} bzw\ko.\ `Nr.' bei {\normalfont\footnotesize\texttt{\string_n\string_}} nicht drucken}} \\[3ex]
+ %%
+ \verb| \bibsortheads| & \verb|\notbibsortheads| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Listen: Initialen vor Eintr"agen mit neuem Anfangsbuchstaben}} \\[3ex]
+ %%
+ \verb| \bibsortspaces| & \verb|\notbibsortspaces| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Listen: Abstand zw\ko.\ Eintr"agen mit versch.\ Anfangsbuchstaben}} \\[3ex]
+ %%
+ \verb| \showbacorr| & \verb|\notshowbacorr| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Stelle mit \BibArts{\normalfont\footnotesize\hy\ko\textit{italics}\hy}Korrektur im Ausdruck markieren}} \\[3ex]
+ %%
+ \verb| \showbamem| & \verb|\notshowbamem| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily \BibArts\hy Zwischenspeicher auf Bildschirm drucken (\ko{\normalfont\footnotesize\textsc{ebd.}}\hy Setzung)}} \\[3ex]
+ %%
+ \verb|\notwarnsamename| & \verb| \warnsamename| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily Bildschirmwarnung bei Wiederholung von Autornachnamen aus}} \\[3ex]
+ %%
+ \verb| \writeidemwarnings| & \verb|\notwriteidemwarnings| \\
+ \multicolumn{2}{l}{\mynwarrow {\footnotesize\sffamily{\normalfont\footnotesize\textsc{ders.}}\hy Setzung im Ausdruck testhalber mit {\small$\bullet\heartsuit\nabla\spadesuit\clubsuit$} markieren}} \\
+ %%
+\end{tabular}
+
+
+\newpage
+\section{\BibArts\kern .1em\hy\hspace{-.025em}1.3\hspace{.075em}\hy Texte unter \BibArts~2.x}\label{Sect16}\label{compabil}
+
+\BibArts~2.x hat so viele Neuerungen, dass ein Text in Version~1.3
+vor der \LaTeX\hy Bearbeitung "uberarbeitet werden m"usste. An
+den Befehlen \verb|\schrift| (f"ur ganze v\fhy Befehle),
+\verb|\barschrift| und \verb|\indschrift| mit
+\verb|\renewcommand| ansetzende "Anderungen sind heute
+\textit{wirkungslos}.\footnote{\texttt{\bs frompagesep}
+(oben S.\,\pageref{frompagesep}) ersetzt zudem \texttt{\bs verw}; \kern 1pt und
+\texttt{\bs ntsep} (S.\,\pageref{ntsepA}) \texttt{\bs punctuation}\hspace{.05em}.\kern1pt}
+Lesen Sie \verb|README.txt|.
+
+\vspace{.05ex}%
+\textbf{Behalten Sie zur "Ubersetzung alter \BibArts\hy Texte
+die Programmdateien Ihrer \BibArts\kern .1em\hy 1.x\hy Version zur"uck!}
+... Falls Sie dies vers"aumten:
+
+\vspace{.075ex}%
+\BibArts~1.3 hatte keine automatische \textsc{ebd.}\hy Setzung.
+Dort konnte \verb|\kurz|\pdfko{1}\
+ganz am Ende des letzten Arguments
+eines v\fhy Befehls stehen; es druckte sein Argument nach
+\textsf{im folgenden} (und in v\fhy Listen in eckigen Klammern)
+einfach\pdfko{.25}\
+aus. \BibArts~2.2 erkennt alte
+\hspace*{-.15em}\texttt{.tex}\hy Dateien und startet eine
+Emulation.\footnote{Wird vom alten Vorspannbefehl
+\texttt{\bs makebar} eingeschaltet (stehen lassen!) und redefiniert auch
+\hspace{-.1em}\texttt{\bs printvli}, das in 1.3 keine "Uberschrift
+druckte. Sonst wird \texttt{\bs makebar} nicht\pdfko{1}\
+mehr ben"otigt. Es gibt kein \hspace*{-.15em}\texttt{.bar}\hy File mehr:
+\BibArts\ nutzt nun \hspace{-.25em}\texttt{.aux}\hy Files
+(\textbf{dazu Kap.\,\ref{bibsort}}).}
+Kopien der Argumente von \verb|\kurz| sowie der alten
+\verb|\bib|\hy Befehle gehen heute\pdfko{1.125}\
+ins \hspace*{-.15em}\texttt{.arq}\hy
+Verzeichnis, das es in \BibArts~1.3 nicht gab; eine
+\verb|\printind|\hy Emulation druckt alles aus $-$ nach Bearbeitung
+mit \texttt{bibsort}. F"ur \textsc{MakeIndex}\pdfko{1.25}\
+gedachte Steuerzeichen werden jetzt also ausgedruckt
+(\kern -.05em vgl.\ unten S.\,\pageref{subitem})!
+
+\vspace{-.625ex}
+\Doppelbox
+{ \bs notkurzaddtoarq \% (jetzt nicht)
+ \\ Fast wie 1.3: \bs vli\{Norbert\}
+ \\ \ \{Schwarz\} \b{\{}Einf"uhrung in
+ \\ \ \ \ \bs protect\bs TeX, Bonn
+ \\ \ \ \ 1988 \bs kurz\{Schwarz\}\b{\}}
+}
+{\notkurzaddtoarq
+ \texttt{ \footnotesize \%\% \bs kurz druckt in \bs arqemph \%\%} \\[.2ex]
+ Fast wie 1.3: \printonlyvli{Norbert}
+ {Schwarz} {Einf"uhrung in
+ \protect\TeX, Bonn
+ 1988 \kurz{Schwarz}}
+}
+
+\vspace{-.125ex}\noindent
+Einige Befehle sind auch in 2.2\hy Texten
+brauchbar. \verb|\stressing{underline}| stellt wie in 1.3 die
+Autorenhervorhebung ein und ist heute Alternative f"ur
+\verb|\renewcommand{\authoremph}{\upshape\underline}|. Auch
+das Paar\pdfko{1.125}\
+\verb|\bibmark| und \verb|\bibref| existiert weiter
+(die x\fhy Befehle sind nun unn"otig):
+
+\vspace{-.875ex}
+\Doppelbox
+{
+ Text.\bs footnote\b{\{}Albert Lecl\bs\string`erc:
+ \\[.25ex] \ \ Der Sommerregen, Paris 1985
+ \\[.29ex] \ \ (\bs bibmark\{Lecl\bs\string`erc\}).\b{\}}
+ \\[.47ex] Schon Lecl\bs\string`erc wollte
+ \\[.25ex] freie Eingaben.\bs footnote\b{\b{\{}}
+ \\[.25ex] \ \ \bs bibref\{\bs scshape Lecl\bs\string`erc\}.\b{\b{\}}}
+}
+{
+ Text.\footnote{Albert Lecl\`erc: Der Sommerregen, Paris 1985 (\bibmark{Lecl\`erc}).}
+ Schon Lecl\`erc wollte freie Eingaben.\footnote{
+ \bibref{\scshape Lecl\`erc}.}
+}
+
+\vspace{-.325ex}\noindent
+\verb|\bibref| passt sich an, wenn \verb|\bibmark| in
+keiner Fu"snote war. Neu sind dazu \textit{captions}
+\verb|\gbibmarkname| (`{im Folgenden: }'),
+\verb|\fbibmarkname| (`{par la suite: }')
+und \verb|\ebibmarkname| (`{cited as: }'),
+deren Definitionen mit Leerzeichen enden.
+
+
+
+\newpage
+\section{Listenausdruck (\BibArts\kern .1em\hy Belegapparat)}\label{Sect17}
+
+Wie die von \verb|bibsort| erzeugten Dateien (\kern -.05em vgl.\ unten
+ab S.\,\pageref{bibsort}) auszudrucken
+sind, wurde in den jeweiligen Kapiteln bereits fallweise abgehandelt:
+\verb|bibarts.sty| stellt dazu print- und printnum\hy Befehle bereit $-$ wobei
+die\pdfko{1.875}\
+print\hy Befehle die Zug"ange als Liste und die printnum\hy Befehle
+zus"atzlich hinter jeden Listenpunkt die Zugangsstellen indexartig drucken.
+Bei beiden Befehlsklassen enth"alt das Befehlswort zum Ausdruck der
+jeweiligen Liste dieselben drei Buchstaben, die auch der Befehl zum
+F"ullen der Liste aufweist. Auch das Dateinamen\hy Suffix der von
+\verb|bibsort| erzeugten Liste hat diese Zeichen: Eintr"age des
+\BibArts\hy Befehls \verb|\vli| kommen in eine Datei \verb|.vli|,
+die Sie\pdfko{1}\
+mit \verb|\printvli| oder \verb|\printnumvli| im Anhang
+Ihres Textes ausdrucken k"onnen. Entsprechendes gilt f"ur \verb|\vqu|,
+\verb|\arq| und \verb|\per|. Ausnahme ist das Kurzzitateverzeichnis
+\verb|.vkc|, das die Zug"ange der \verb|\kli|- \textit{und}
+\verb|\kqu|\hy Eintr"age erh"alt (sowie der Zug"ange, die \BibArts\
+aus den Argumenten von \verb|\ktit| und den Nachnamensargumenten
+der v\fhy Befehle \textit{automatisch} erzeugt); das Kurzzitateverzeichnis
+wird mit \verb|\printvkc| oder \verb|\printnumvkc| ausgedruckt. Und
+f"ur das\pdfko{.75}\
+Abk"urzungsverzeichnis, das mit \verb|\printabk| oder
+\verb|\printnumabk| ausgedruckt\pdfko{.5}\
+wird, bef"ullen die \BibArts\hy Befehle
+\verb|\abkdef| oder \verb|\defabk| eine von \verb|bibsort| erzeugte
+Datei \verb|.abk|; f"ur so eingef"uhrte Abk"urzungen liefern
+\verb|\abk|\hy Befehle weitere Seitenzahlen und ggf.\ Fu"snotennummern,
+die \verb|\printnumabk| ausdruckt.
+
+F"ur alle diese Listen liest \verb|bibsort| das\slash die \verb|.aux|\hy
+File{\small(}s{\small)} Ihres \LaTeX\hy Textes ein und erzeugt daraus
+die genannten Dateien. Das Namens\hy Pr"afix ist dasjenige des \LaTeX\hy
+Haupttextes (die Literaturliste \textit{hier} ist \verb|bibarts.vli|).
+
+Das Orts\fhy, Personen und Sachregister wird jeweils nur mit addto\hy
+Befehlen bef"ullt, etwa \verb|\addtogrr|. Das sind Befehle, die nichts
+an Ort und Stelle\pdfko{.75}\
+drucken. Verwechseln Sie die print- und printnum\hy
+Befehle nicht mit Befehlen wie \verb|\printonlyvli|, die \textit{nur}
+an Ort und Stelle drucken (vgl.\ oben S.\,\pageref{printonly}).
+
+Listen werden defaultm"a"sig unter den in Kapitel~\ref{SprachSep}
+genannten "Uberschriften ausgedruckt: \verb|\printvli|
+druckt unter \verb|\bacaptionsgerman| den Text \verb|\gvlititlename|.
+$-$ \verb|\print|...\verb|list|\hy Befehle drucken Listen ohne "Uberschrift.
+
+Die drei Register sowie das Abk"urzungs\hy\ und das Kurzzitateverzeichnis
+werden defaultm"a"sig in fixer Schriftgr"o"se \textit{und} zweispaltig
+gedruckt. Beides ist nicht der Fall bei
+\verb|\printvli|, \verb|\printvqu|, \verb|\printper| und
+\verb|\printarq| samt ihren \verb|num|\hy Varianten sowie den
+\verb|\print|...\verb|list|\hy Befehlen (wie \verb|\printabklist|).
+
+Der Ausdruck von "Uberschrift und Liste
+l"asst sich immer trennen. Die vli\hy "Uberschrift etwa k"onnen Sie mit
+\verb|\printvlititle| drucken. Wie auch bei\pdfko{.75}\
+\verb|\printvli| oder \verb|\printnumvli| kommt der
+Titel ohne Kapitelnummer ins Inhaltsverzeichnis. Alternativ
+k"onnen Sie etwa \verb|\subsection{|\kern -.1em\textit{"Uberschrift}\verb|}|
+tippen, falls Sie dort Kapitelnummern haben wollen.
+Die Liste l"asst sich darunter in beiden F"allen mit \verb|\printvlilist|
+oder \verb|\printnumvlilist| ausdrucken.
+
+
+\noindent
+\verb|\printbibtitle| ist "Uberschrift f"ur den gesamten Belegapparat,
+defaultm"a"sig in section\hy Gr"o"se. Die anderen title\hy Befehle
+verwenden eine Gr"o"se kleiner:
+
+\vspace{1.25ex}{\small\noindent
+\verb| |\hbox to 14em{\textit{Beide drucken "Uberschrift}\hfill}%
+\verb| |\hbox to 8.6em{\textit{mit Text im dt.}\hfill}%
+\verb| |\hbox to 6em{\textit{Default}\hfill} \\[-.25ex]
+\verb| \printbibtitle => \gbibtitlename => section| \\[-.5ex]
+\verb| \printvli \printvlititle => \gvlititlename => subsection| \\[-.5ex]
+\verb| \printvqu \printvqutitle => \gvqutitlename => subsection| \\[-.5ex]
+\verb| \printabk \printabktitle => \gabktitlename => subsection| \\[-.5ex]
+\verb| \printper \printpertitle => \gpertitlename => subsection| \\[-.5ex]
+\verb| \printarq \printarqtitle => \garqtitlename => subsection| \\[-.5ex]
+\verb| \printvkc \printvkctitle => \gvkctitlename => subsection| \\[-.5ex]
+\verb| \printgrr \printgrrtitle => \ggrrtitlename => subsection| \\[-.5ex]
+\verb| \printprr \printprrtitle => \gprrtitlename => subsection| \\[-.5ex]
+\verb| \printsrr \printsrrtitle => \gsrrtitlename => subsection|}
+
+\vspace{1.25ex}\noindent
+Hinter print\fhy, printnum\hy\ und title\hy Befehlen kann ein
+optionales Argument die "Uberschriftengr"o"se "andern,
+\verb|\printvli[section]| etwa (einzusetzen ist ein
+"Uberschriftenbefehl ohne \textit{backslash}). Bei Befehlen, die
+Listen zweispaltig drucken, ist \verb|[chapter]|
+verboten. Die "Uberschrift kommt stets ins Inhaltsverzeichnis
+(\verb|\tableofcontents|) und unter \verb|\pagestyle{headings}|
+zudem in die Kopfzeile; Befehle, die zwei Spalten anordnen, setzen
+die Anfangsseite \texttt{plain}. \hspace{.1em}Die list\hy
+Befehle setzen nichts in Inhaltsverzeichnis oder Kopfzeile.
+
+\vspace{1ex}\noindent
+Die normalen print\hy Befehle drucken Listen unter einer passenden "Uberschrift; die
+printnum\hy Befehle arbeiten "aquivalent (vgl.\ die Auf"|listung unten S.\,\pageref{Auflistung}):
+
+\vspace{.75ex}{\small\noindent
+\verb| \printvli = \printvlititle + \printvlilist |in \textit{Umfeldschrift} \\[-.5ex]
+\verb| \printvqu = \printvqutitle + \printvqulist |in \textit{Umfeldschrift} \\[-.5ex]
+\verb| \printabk = \printabktitle + \printabklist |in \verb|\twocolumn| und \\[-.7ex]
+\verb| \footnotesize| \\[-.2ex]
+\verb| \printper = \printpertitle + \printperlist |in \textit{Umfeldschrift} \\[-.5ex]
+\verb| \printarq = \printarqtitle + \printarqlist |in \textit{Umfeldschrift} \\[-.5ex]
+\verb| \printvkc = \printvkctitle + \printvkclist |in \verb|\twocolumn\small| \\[-.5ex]
+\verb| \printgrr = \printgrrtitle + \printgrrlist |in \verb|\twocolumn\small| \\[-.5ex]
+\verb| \printprr = \printprrtitle + \printprrlist |in \verb|\twocolumn\small| \\[-.5ex]
+\verb| \printsrr = \printsrrtitle + \printsrrlist |in \verb|\twocolumn\small|}
+
+
+\vspace{2ex}\noindent
+Auf diese Weise w"urde der \BibArts\hy Anhang unter der nummerierten
+"Uberschrift \textbf{A~~Belegapparat und Register} gedruckt:\footnote{
+...\,\texttt{\bs pagestyle\{headings\}}\,\textit{"Uberschrift}
+\texttt{\bs pagestyle\{myheadings\}}\,...\,\texttt{\bs end\{appendix\}} \\
+druckt die Kopfzeile von \textit{"Uberschrift} im \textit{ganzen} Appendix
+(dann kein \texttt{\bs markboth} setzen!).\hspace*{.2em}}
+
+\vspace{-1.25ex}
+{\footnotesize
+\begin{verbatim}
+ \clearpage \begin{appendix} \pagestyle{headings}
+ \section{Belegapparat und Register}\thispagestyle{plain}\vspace{7mm}
+ {\small \printarq \newpage \printvqu \printvli \newpage}\printnumgrr
+ \end{appendix} %%Einspaltige Bereiche enden mit \newpage (Kopfzeile!)
+\end{verbatim}}
+
+\vspace{-1ex}\vfill\noindent
+Im folgenden Beispiel wird das Kurzzitateverzeichnis einspaltig ausgedruckt:
+
+\newpage
+\noindent{\small
+\verb| \clearpage {\pagestyle{headings}\small \printbibtitle \printvqu| \\
+\verb| \printvli \printvkctitle\baonecolitemdefs\printnumvkclist \newpage}|}
+
+\vspace*{1.5ex}
+ {\pagestyle{headings}\small \printbibtitle \printvqu
+ \printvli \printvkctitle\baonecolitemdefs\printnumvkclist \newpage}
+
+
+
+\twocolumn[\subsubsection*{Auf"|listung der print-, printnum-, title-, list- und num...list-Befehle}
+Hier \texttt{[}\kern-.05em\textit{OptArg}\texttt{]}'s f"ur "Uberschriften, die eine Stufe gr"o"ser als der Default sind. Die jeweils ersten zwei Befehle sind in den title- und einen list-Befehl teilbar. \\
+\strut \\
+\texttt{\bs printbibtitle\lbrack chapter\rbrack} \hfill
+{\footnotesize Dokumentenklasse \texttt{\{report\}}\ }\vspace{1.75ex}]\label{Auflistung}%
+\noindent
+%%
+\textbf{\gvlititlename} \\[0.25ex]
+\verb|\printvli[section]| \\
+\verb|\printnumvli[section]| \\[0.5ex]
+\verb|\printvlititle[section]| \\
+\verb|\printvlilist| \\
+\verb|\printnumvlilist| \\[1.75ex]
+%%
+\textbf{\gvqutitlename} \\[0.25ex]
+\verb|\printvqu[section]| \\
+\verb|\printnumvqu[section]| \\[0.5ex]
+\verb|\printvqutitle[section]| \\
+\verb|\printvqulist| \\
+\verb|\printnumvqulist| \\[1.75ex]
+%%
+\textbf{\gvkctitlename} \\[0.25ex]
+\verb|\printvkc[section]|~$^{(t, s)}$ \\
+\verb|\printnumvkc[section]|~$^{(t, s)}$ \\[0.5ex]
+\verb|\printvkctitle[section]| \\
+\verb|\printvkclist| \\
+\verb|\printnumvkclist| \\[1.75ex]
+%%
+\textbf{\gpertitlename} \\[0.25ex]
+\verb|\printper[section]| \\
+\verb|\printnumper[section]| \\[0.5ex]
+\verb|\printpertitle[section]| \\
+\verb|\printperlist| \\
+\verb|\printnumperlist| \\[1.75ex]
+%%
+\textbf{\garqtitlename} \\[0.25ex]
+\verb|\printarq[section]| \\
+\verb|\printnumarq[section]| \\[0.5ex]
+\verb|\printarqtitle[section]| \\
+\verb|\printarqlist| \\
+\verb|\printnumarqlist| \\[1.75ex]
+%%
+\textbf{\gabktitlename} \\[0.25ex]
+\verb|\printabk[section]|~$^{(t, f)}$ \\
+\verb|\printnumabk[section]|~$^{(t, f)}$ \\[0.5ex]
+\verb|\printabktitle[section]| \\
+\verb|\printabklist| \\
+\verb|\printnumabklist| \\[1.75ex]
+%%
+\textbf{\ggrrtitlename} \\[0.25ex]
+\verb|\printgrr[section]|~$^{(t, s)}$ \\
+\verb|\printnumgrr[section]|~$^{(t, s)}$ \\[0.5ex]
+\verb|\printgrrtitle[section]| \\
+\verb|\printgrrlist| \\
+\verb|\printnumgrrlist| \\[1.75ex]
+%%
+\textbf{\gprrtitlename} \\[0.25ex]
+\verb|\printprr[section]|~$^{(t, s)}$ \\
+\verb|\printnumprr[section]|~$^{(t, s)}$ \\[0.5ex]
+\verb|\printprrtitle[section]| \\
+\verb|\printprrlist| \\
+\verb|\printnumprrlist| \\[1.75ex]
+%%
+\textbf{\gsrrtitlename} \\[0.25ex]
+\verb|\printsrr[section]|~$^{(t, s)}$ \\
+\verb|\printnumsrr[section]|~$^{(t, s)}$ \\[0.5ex]
+\verb|\printsrrtitle[section]| \\
+\verb|\printsrrlist| \\
+\verb|\printnumsrrlist|\\[1.75ex]
+%%
+\textbf{Legende} \\[0.25ex]
+{\footnotesize
+\hbox to 2em{$^{(t, f)}$\hfill} \verb|\twocolumn \footnotesize| \\[-.5ex]
+\hbox to 2em{$^{(t, s)}$\hfill} \verb|\twocolumn \small| \\[-.25ex]
+Befehle, die \verb|[|\textit{Arg}\verb|]| annehmen, erzeugen \\[-.5ex]
+$-$ "Uberschrift in \textit{Default}\fhy/\kern-.1em\textit{Arg}\fhy Gr"o"se \\[-.65ex]
+$-$ Inhaltsverzeichnis-Eintrag (\kern-.05em\textit{dito}) \\[-.65ex]
+$-$ Kopfzeilen-Eintrag unter \texttt{headings}}
+\onecolumn
+
+
+\newpage\noindent
+\verb|bibsort| bereitet f"ur den Ausdruck der Listen vor,
+den Wechsel von Eintr"agen mit unterschiedlichen Anfangsbuchstaben zu betonen.
+Es gibt vergr"o"serte Abst"ande und Buchstaben:
+\verb|{\bibsortspaces\printnumvkc}| und\pdfko{1.5}\
+\verb|{\bibsortheads\printnumvkc}| erg"aben tats"achlich jeweils eigenen Seiten:
+
+\vspace{-1ex}\noindent\hspace{1em}%
+\parbox[t]{.45\textwidth}
+{\subsection*{\gvkctitlename}\vspace{\batwocoltopskip}\bibsortspaces\batwocolitemdefs\small\printnumvkclist}
+\hspace{.5em}%
+{\makeatletter\def\@baitemdefs{\parsep 0pt \itemsep 0pt \parskip 0pt \lineskip 0pt \rightskip 1cm minus 1cm}\makeatother
+\parbox[t]{.45\textwidth}
+{\subsection*{\gvkctitlename}\vspace{\batwocoltopskip}\bibsortheads\small\printnumvkclist}}%
+\label{head}%
+
+\vfill\noindent
+print\hy Befehle, die \textit{selbst} zweispaltig drucken,
+setzen strikte Vorgaben f"ur Abst"ande um, etwa
+\verb|\itemsep| \verb|0pt|. F"ur andere list\hy Befehle
+gelten nur die Vorgaben der \verb|{description}|\hy Liste.
+Um dann Abst"ande, die f"ur zweispaltigen Ausdruck gelten, einzustellen,
+kann \verb|\batwocolitemdefs| gesetzt werden.
+
+\vspace{1ex}\noindent
+F"ur list\hy Befehle in einspaltigem Umfeld dient
+\verb|\baonecolitemdefs|, das viel weniger Vorgaben
+macht und Spielr"aume l"asst. Eigene Definitionen
+legt etwa
+\verb|{\bamyitemdefs{\rightskip| \verb|1cm minus| \verb|1cm}\printvkclist}|
+fest. Alle f"ur \verb|\print|...\verb|list| oder
+\verb|\printnum|...\verb|list| eventuell gemachten itemdef\hy Vorgaben
+schaltet \verb|\notbaitemdefs| aus (es stellt die
+Voreinstellung wieder her).
+
+\vspace{1.5ex}\noindent
+\verb|\printvkclist| l"asst sich \textit{mit Zus"atzen}
+genauso wie \verb|\printvkc| ausdrucken
+(weil die {\small\texttt{[}...\texttt{]}} abschirmen, w"are
+eine Kopfzeile danach nochmal zu definieren):
+
+\vspace{1.ex}{\small\noindent
+\verb| \twocolumn[\printvkctitle\vspace{\batwocoltopskip}] %\markboth|...\\
+\verb| {\small\bibsortheads \batwocolitemdefs\printvkclist}\onecolumn|}
+
+\vspace{1.25ex}\noindent
+Unter \verb|\bibsortspaces| bzw.\ \verb|\bibsortheads| wird
+\verb|\batwocoltopskip| eigenst"andig von print\hy Befehlen, die
+zweispaltigen Druck anordnen, ausgef"uhrt.
+Falls \verb|\twocolumn| und \verb|\bibsortheads| gleichzeitig gelten,
+setzen list\hy Befehle \verb|\batwocolitemdefs| selbst"andig (dann kann
+lassen sich die Zeilenabst"ande nur noch z.\,B. durch \verb|\renewcommand{\baselinestretch}{1.1}|
+"andern).
+
+\vspace{1.5ex}\noindent
+\verb|\bibsortspaces| und \verb|\bibsortheads| schalten sich
+gegenseitig ab: Automatisch gilt also immer nur eines von beiden.
+Zudem l"ost \verb|\notbibsortheads| auch \verb|\notbibsortspaces|
+aus $-$ und umgekehrt.
+
+\vspace{1.5ex}\noindent
+Beim Archivquellenverzeichnis kann ein Konflikt auftreten:
+Sie sollten sich entscheiden, ob Sie \verb|\bibsortspaces|
+bzw.\ \hspace{-.05em}\verb|\bibsortheads| aktivieren
+m"ochten, \textit{oder} \verb|\arqsection|,
+\verb|\arqsubsection| und \verb|\arqsubsubsection| nutzen.
+Und nur im Archivquellenverzeichnis k"onnen Sie \textit{innerhalb
+einer Liste} in den Seitenumbruch eingreifen. Umbruchbefehle
+wie \verb|\newpage| k"onnen direkt nach \verb|\arqsection|,
+\verb|\arqsubsection| oder \verb|\arqsubsubsection| optional
+"ubergeben werden:\label{newpage}
+\verb|\arqsection[\newpage]{BA}{Bundesarchiv}| \hspace{.1em}ist ein Beispiel.
+Zerbrechliche Befehle sollten mit \verb|\protect| gesch"utzt werden.
+Befehle mit Argumenten in eckigen Klammern wie \verb|\rule[2ex]{1cm}{1cm}| lassen
+sich so einsetzen:
+...\verb|[\protect\rule\lbrack 2ex\rbrack{1cm}{1cm}]|...\footnote{Ist
+eine arq\hy "Uberschrift der allererste Listeneintrag, dann sind \textit{nur}
+Abstandsbefehle wie etwa \texttt{\bs vspace} im optionalen Argument
+erlaubt, denn \texttt{bibsort} setzt die optionalen Argumente innerhalb
+des \texttt{.arq}\hy Files in eine Zeile \textit{vor} die arq\hy section;
+in einer \LaTeX\hy Liste darf jedoch zu druckender Text oder
+\texttt{\bs rule} erst \textit{nach} dem ersten \texttt{\bs item}\hy Befehl stehen.}
+Einfach l"asst sich \textit{zus"atzlicher Abstand zum vorausgehenden
+Listenpunkt} etwa mit \verb|\arqsection| \verb|[\vspace{2ex}]| \verb|{BA}{Bundesarchiv}|
+einstellen.\footnote{\texttt{\bs arqsectionbegin},
+\texttt{\bs arqsubsectionbegin} und \texttt{\bs arqsubsubsectionbegin}
+legen den Basisabstand fest; sie werden von \texttt{[}...\texttt{]}
+nicht "uberschrieben, sondern \textit{danach} ausgef"uhrt. Diese Befehle sind
+untereinander austariert; Anf"anger sollten sie unver"andert lassen.}
+
+
+
+\newpage
+\section{\texttt{bibsort} samt Neuerungen seit Version~2.0}\label{Sect18}\label{bibsort}
+
+\verb|bibsort| ist das Sortierprogramm von \BibArts\kern.1em. Eine
+Datei \verb|bibsort.exe| liegt dem Paket neben \verb|bibarts.sty| bei.
+Beide zusammen sollen den Anhang Ihres \LaTeX\hy Textes erzeugen.
+Anwender, bei denen \verb|bibsort.exe| nicht startet, sollten
+\verb|bibsort.c| mit einem f"ur ihr Betriebssystem
+geeigneten C\fhy Compiler selbst in eine Bin"ardatei "ubersetzen und
+dann diese einsetzen. Der Quellcode von \verb|bibsort.c| setzt kein
+bestimmtes Betriebssystem voraus (ANSI~C).\footnote{F"ur GNU\hy Software habe ich
+das getestet: Auch\hspace{.3em} \texttt{gcc -c bibsort.c -o bibsort.o}\hspace{.3em}
+und\hspace{.3em} \texttt{gcc bibsort.o -o bibsort.exe}\hspace{.3em} ergaben bei mir eine
+brauchbare Bin"ardatei. Bei mir machte der \texttt{Dev-Cpp\_5.4.0}\kern .1em\hy Editor
+Schwierigkeiten, der \texttt{gcc} pers"onlich jedoch nie.}
+
+\BibArts\ kommt heute (Version 2.x) ohne \textsc{MakeIndex} aus.
+\verb|bibsort| verarbeitet keine Steuerzeichen, hat kein
+Maskierungszeichen f"ur Steuerzeichen und kein
+Steuerfile.\footnote{\BibArts\,1.3 brauchte \textsc{MakeIndex}, um einen
+Belegstellenindex zu erzeugen (siehe S.\,\pageref{compabil}).}
+Anders als \textsc{MakeIndex} erzeugt es keine
+\verb|\subitem|\kern.05em s.\label{subitem}%
+
+Ganz oben wurde bereits erkl"art, wie \verb|bibsort.exe| zusammen mit
+speziellen \LaTeX\hy Editoren benutzt wird. Ansonsten kann es durch Antippen
+von \verb|bibsort| plus Dateinamens\hy Pr"afix und Optionen in der
+Eingabeauf"|forderung des Betriebssystems gestartet werden. Bei
+\LaTeX\hy Texten, die aus mehreren Dateien bestehen, ist das Namenspr"afix der Hauptdatei
+anzutippen. \verb|bibsort| liest die zugeh"orige \hspace{-.15em}\texttt{.aux}\hy Datei ein;
+die ggf.\ enthaltene \verb|\@include|\hy Liste wird abgearbeitet, sodass auch
+bei sequenzieller "Ubersetzung eines \LaTeX\hy Textes (wenn \verb|\includeonly|
+nicht alle Dateien nennt) f"ur den \BibArts\hy Anhang immer vollst"andige Listen
+erzeugt werden. F"ur \verb|bibarts.tex| hier ist
+\verb|bibarts| das Namenspr"afix. Die aus
+\verb|bibarts.aux| erzeugte Datei \verb|bibarts.vli| enth"alt die
+Literaturliste, \verb|bibarts.abk| das Abk"urzungsverzeichnis, etc.
+
+\verb|bibsort| liest aus einer \hspace{-.15em}\texttt{.aux}\hy Datei nur die Zeilen ein, die
+mit \BibArts\ erzeugt wurden. In einem ersten Schritt sortiert es
+diese Zeilen klein\fhy\slash gro"s\hy schreibungs\hy invariant. Das Programm sortiert
+\textit{in Grundeinstellung} "a, "o und~"u als a, o und u; weiter sind \verb|\ss| und
+\verb|\3| (sowie \verb|"s|, falls \verb|"| \textit{aktiv} ist\footnote{\BibArts\
+"ubergibt jedem Eintrag ins \hspace{-.15em}\texttt{.aux}\hy File den an der
+entsprechenden Stelle g"ultigen \textit{catcode} von \string" und die
+zur Worttrennung eingestellte Sprache. Beides wird beim Ausdruck
+des entsprechenden Listenpunkts reproduziert (vgl.\ oben S.\,\pageref{hyphenation}\,f. und
+unten S.\,\pageref{dqakt}, Anm.\,\ref{dqakt}).
+Dies bestimmt f"ur die Listen Ausdruck und
+Sortierreihenfolge z.\,B. von~\texttt{\string"a}\kern.1em.}) gleich~\verb|s|.
+Wird \texttt{bibsort} die Option \ko\verb|-g2|~(Wortliste) "ubergeben,
+sortiert es "s als \verb|ss|; mit \ko\verb|-g1|~(Namensliste)
+gelten \textit{zudem} die Umlaute als \verb|ae|, \verb|oe| und \verb|ue|
+(letzteres\pdfko{.25}\ entspricht DIN\,5007\fhy 2). Zahlen werden \textit{in Grundeinstellung}
+vor Buchstaben sortiert; mit \ko\verb|-g1| oder \ko\verb|-g2|
+ist es umgekehrt. Nur, wenn Zeilen anhand der enthaltenen Zahlen sowie
+gro"s\fhy\slash klein\hy invarianten Buchstaben keinen Unterschied gegen"uber
+anderen Zeilen aufweisen, wird die Gro"s\fhy\slash Klein\hy Schreibung beachtet,
+danach etwaige Akzente auf den Buchstaben, dann weitere Zeichen.
+
+Etliche Einstellungen sind nicht ver"anderbar. Etwa wird \verb|\o|~(\o) im
+ersten Schritt immer als \verb|o| einsortiert, dann vor allen \verb|o|'s mit
+`aufgesetzten' Akzenten. Ebenso nicht\hy einstellbar ist, dass
+\verb|$\alpha$| als \verb|a| einsortiert wird. Um im Einzelfall abweichende
+Sortierreihenfolgen zu erzwingen, k"onnen Sie den \BibArts\hy Befehl
+\verb|\sort{|\textit{Zeichenfolge}\verb|}| \balabel{sort} verwenden (dessen Argument
+sortiert, aber nicht ausgedruckt wird). Die meisten weiteren \LaTeX\hy Befehle
+ignoriert\pdfko{1}\
+\verb|bibsort| einfach. Bei anderen wie etwa \verb|\parbox| werden
+$-$\,in der Routine\pdfko{1}\
+\verb|transformtable| in \verb|bibsort.c| definiert\,$-$
+die L"angen\hy\ und Positionierungs\hy Angaben ignoriert.
+\verb|\diskretionary{A}{B}{C}| wird wie \verb|C| sortiert und $-$ neu in Version 2.2 $-$ \verb|"ff|
+mit \verb|-g1| oder \verb|-g2| wie \verb|ff| statt wie \texttt{\"ff} (vgl.\ S.\,\pageref{ff}).
+In \verb|\protect\pageref{|\textit{xx}\verb|}| wird
+\textit{xx} nicht gewichtet (suche \verb|\pageref{X1}|).
+
+\vspace{.75ex}\noindent
+Nur \verb|bibsort| in der Eingabeauf"|forderung getippt druckt auf den Bildschirm:
+
+{\scriptsize
+\catcode`\|=\active
+\def|{\hspace{-.25em}\hbox to 1em{$\sim$\hfill}\hspace{-.25em}}%
+\begin{verbatim}
+ %%> This is bibsort 2.2 (for help: bibsort -?)
+ %% bibsort 2.2 is part of BibArts 2.2 (C) Timo Baumann 2019.
+ %% I read a LaTeX .aux file (follow \@input), and I write my output in files
+ %% .vli Literature .vqu Published sources .grr Geographic index
+ %% .vkc Short titles .arq Unpublished sources .prr Person index
+ %% .per Periodicals .abk Abbreviations .srr Subject index
+ %%
+ %% bibsort <LaTeXFile> [-o <OutFile>] [-g1 [OR] -g2] [<OtherOptions>]
+ %%
+ %% DefaultSort: 0, .., 9, (A a), (B b), .., (s \ss S), .., (Z z) and
+ %% (a [\.\'\`\^\"\=\~]a \aa=\r{a} [\b\c\k\d\H\t\u\v]{a} \ae), b, ..
+ %% -g<n> GermanSort: (a A), .., (z Z), 0, .., 9; and (\" or active "):
+ %% -g1 GermanTelefonebookStyle: "a = \"a = ae, ..., "s = \ss = ss;
+ %% -g2 ModernGermanDictionary: "a = \"a = a, ..., "s = \ss = ss.
+ %% -x DoNotExpect german.sty: Active "-characters do NOT produce umlauts.
+ %% -k Idemize | multiple used authors in the .vli and .vqu lists (kill).
+ %% -d \include{ / is \ } (dos). -h Sort a hyphen as a space.
+ %% -i=j Sort 'i' as 'j'. -p Sort "P.S." before "Peter" (point).
+ %% -l Ignore spaces (leer). -c Don't set bad page/fnt nums in {}.
+ %% -r Typeout license (read). -?? Further options.
+ %%
+ %%> I give up my job, because I get no <FileNamePrefix> of an auxiliary file.
+\end{verbatim}}
+
+
+\noindent
+Dabei ist die ganze Serie der neun Hilfsdateien aufgelistet, die \verb|bibsort|
+erzeugen kann $-$ \textit{und l"oschen darf}, falls keine Eintr"age da
+sind!\footnote{Wenn Sie z.\,B.
+\ko\texttt{\bs vli} in Ihrem Text verwenden, erzeugt \texttt{bibsort} eine Datei
+\ko\texttt{.vli}; falls
+Sie \texttt{\bs vli} sp"ater wieder l"oschen und Ihr mit
+\LaTeX\ "ubersetzter Text derartige Literatur\-\hbox{anga}\-ben nicht mehr enth"alt,
+l"oscht ein weiterer Start von \texttt{bibsort} die \ko\texttt{.vli}\hy Datei.
+$-$ Unter \texttt{\bs nofiles} bleiben die \ko\texttt{.aux}\hy Files unver"andert
+stehen und \texttt{bibsort} erzeugt die Datei
+\texttt{.vli} immer wieder gleich, d.\,h.: ohne neue/""ver"anderte
+\texttt{\bs vli}\hy Befehle im Text aufzunehmen.}
+
+\vspace{.75ex}
+\verb|-d|\hspace{.1em} dient dazu, dass \verb|bibsort| Dateien findet, wenn im Text in
+\verb|\include|\hy Argumenten Pfadangaben stehen. Dort m"ussen Sie \verb|/|
+antippen. Dies akzeptieren einige Betriebssysteme nicht.
+\hspace{.1em} \verb|bibsort -d| \hspace{.1em} ruft Dateien mit \verb|\| auf.
+
+
+\vspace{.75ex}
+Die Option \ko\verb|-k| zum Drucken von $\sim$ f"ur mehrfach genannte Autoren
+in den vli- und vqu\hy Listen wurde schon erkl"art. Vgl.\
+\verb|\female| und \verb|\male| oben S.\,\pageref{female}.
+
+\vspace{.75ex}
+\verb|-x| ist f"ur Anwender, bei denen ein aktives Anf"uhrungszeichen etwas Anderes bedeutet
+als in \verb|german|, \verb|ngerman|, \verb|germanb| oder \verb|ngermanb|
+(\verb|"a|\,$\Rightarrow$\,"a). Insbesondere wird \verb|"a| zusammen mit \verb|-g1| nicht mehr als \verb|ae|
+einsortiert.\footnote{\label{original}Mit der Option \texttt{-x} setzt \texttt{bibsort} zudem
+nicht (wie sonst) \texttt{\bs bagermanTeX} oder \texttt{\bs baoriginalTeX} in einer \textit{if}\hy Konstruktion
+in die erzeugten Dateien, um eine "Anderung des \textit{catcodes} ggf.\
+zu reproduzieren. $-$ \label{dqakt} Im babel\hy Paket "andert sich der \textit{catcode} von Zeichen offenbar nie.
+\texttt{bibsort} kann Ihre Nutzung von \texttt{\bs originalTeX} auf den Listen nur reproduzieren,
+falls \texttt{german.sty} oder \texttt{ngerman.sty} verwendet wird (dort "andert \texttt{\bs originalTeX}
+den \textit{catcode} des Anf"uhrungszeichens). Vgl.\ oben S.\,\pageref{bagermanTeX} samt Anm.\,\ref{bagermanTeX}.
+$-$ Trotzdem muss heute unter babel \textbf{weder} \texttt{bibsort} mit der Option \texttt{-x} gestartet
+\textbf{noch} \texttt{\bs baoriginalTeX} mit
+\texttt{\bs renewcommand} ausgeschaltet werden: Falls babel geladen ist, f"uhrt das \texttt{\bs baoriginalTeX}
+aus \BibArts~2.2 den Befehl \texttt{\bs originalTeX} nicht aus
+(babel\hy french meldete unter \BibArts~2.1 ohne den \texttt{\bs renewcommand}\hy Befehl
+irref"uhrend, es sei ein\hspace{.2em} \texttt{Incomplete} \texttt{\bs ifx}~...\hspace{.2em} vorhanden).}
+
+\vspace{.75ex}
+Weitere Optionen wie \verb|-l|\,, \verb|-i=j| und \verb|-p| werden unten ab Seite~\pageref{plit} erkl"art.
+
+\vspace{1.25ex}\noindent
+In Version 2.2 gibt es \textbf{drei neue Optionen} f"ur \verb|bibsort|:
+
+\vspace{.75ex}
+\verb|-h| sortiert Minuszeichen wie Leerzeichen. Das bezieht sich neben `\verb|-|' auf
+\verb|\hy| und \verb|\fhy| sowie\footnote{Falls das Doppelanf"uhrungszeichen \textit{aktiv} ist und \texttt{-x} nicht gesetzt wurde.} auf \verb|"=| und \verb|"~|. Dabei sind \verb|\hy| und \verb|\fhy| in \BibArts\ definiert
+(siehe oben S.\,\pageref{hy}), w"ahrend \verb|"=| und \verb|"~| von \verb|german|, \verb|ngerman|
+oder den entsprechenden Versionen von babel bereitgestellt werden m"ussen.
+
+\vspace{.75ex}
+\verb|-b| beeinflusst die Sortierreihenfolge, falls \verb|\bago| im Text verwendet wird.
+\verb|\vli{J.}{Smith}{The| \verb|\bago| \verb|\ktit{Book},| \verb|London| \verb|2005}| wird sortiert als
+\verb|Smith J Book London 2005|\hspace{.2em} (das \verb*|The | wurde ausgeklammert, weil im entsprechenden
+Argument nur Zeichen hinter \verb|\bago| ein Sortiergewicht erhalten). Vergleichbare Regeln
+sind bis heute in mehreren Sprachen "ublich. Fr"uher schrieben die Preu\hyss ischen
+Instruktionen vor, dass das erste Substantiv, das im Nominativ steht,
+sortierrelevant ist. Ohne \verb|-b|\hspace{.1em} hat \verb|\bago| keinen Einfluss.
+
+\vspace{.75ex}
+\verb|-n1| dient dazu, dass in den num\hy Listen keine Zusammenfassungen von Fu"snoten
+"uber mehrere Seiten hinweg erfolgen. Dies dient der Vermeidung seltener Fehler in Texten,
+in denen in jedem Kapitel die Fu"snotenz"ahlung neu mit 1 beginnt. Dann k"onnte ein Kapitel
+auf seiner letzten Seite beispielsweise in den Fu"snoten 2 bis 4 dieselbe
+Belegstelle nennen $-$ und zudem k"onnte auf der n"achsten Seite in Fu"snote 5
+nochmals dieselbe Belegstelle folgen. Ohne \verb|-n1| w"urde dies zu $6^2$$-$$7^5$
+zusammengefasst\hspace{.1em} (obwohl der Beleg auf Seite\hspace{-.1em} 7 in den Fu"snoten 1 bis 4 nicht vorkommt).
+Mit \verb|-n1| wird dagegen richtig $6^{2-4}$$,\ $$7^5$ ausgedruckt. Gerechtfertigte
+Zusammenfassungen unterbleiben aber ebenso.
+
+\vspace{1.25ex}\vfill\noindent
+Nun ein \textbf{Beispiel f"ur die Sortierreihenfolge}. Achten Sie etwa darauf, dass bei Buchstaben mit
+mehreren Akzenten (\c{\"a}) die Akzente von hinten nach vorne gewichtet werden, d.\,h. der zuletzt
+getippte Akzent die Einsortierung am st"arksten bestimmt (im Falle von
+Eintr"agen mit gleichen Buchstabenkernen):
+
+
+
+ \newcommand{\demotext}[1]{\nosort{\protect\printdemotext{#1}}}%
+{\newcommand{\printdemotext}[1]{{\hskip 0.1cm plus 0.5cm\footnotesize\texttt{#1}}}%
+ \renewcommand{\gprrtitlename}{Das Personenregister als Beispiel f"ur das Sortieren}%
+ \printprr}
+
+
+
+%% \oldhy...-Befehle (und - falls undefiniert - auch \ck) sind in bibarts.sty festgelegt,
+%% (1) um eine Paralle zu "' und \grqq zu haben;
+%% (2) um Zitate in alter deutscher Rechtschreibung auch ohne german.sty machen zu koennen.
+%% In alter deutscher Rechtschreibung werden manche ck als k-k getrennt. german.sty und
+%% ngerman.sty bieten Loesungen, die in ngerman.sty aber zudem eine Warnmeldung ausloesen:
+ % \addtoprr{zz\ck a\demotext{ zz\bs ck a}}
+ % \addtoprr{zz"cka\demotext{ zz\protect\string"cka \ \ \ \ \ \ \ \% neu in 2.2}}
+ % \addtoprr{zz\oldhyc ka\demotext{ zz\bs oldhyc ka \ \%\bs old...:~2.2}}
+ % \addtoprr{zz"CKa\demotext{ zz\protect\string"CKa}}
+ % \addtoprr{zz\OLDHYC Ka\demotext{ zz\bs OLDHYC Ka}}
+%% "FF dient in alter deutscher Rechtschreibung fuer ein FF, das FF-F getrennt wird (etc.).
+%% "FF druckt (Fall: ohne Zeilenumbruch) unter ngerman.sty FFF statt FF aus, wird aber von
+%% bibsort stets unter FF einsortiert: "FF nur mit german.sty verwenden, das FF ausdruckt.
+ % \addtoprr{zz"lla\demotext{ zz\protect\string"lla}}
+ % \addtoprr{zz\oldhyl la\demotext{ zz\bs oldhyl la}}
+ % \addtoprr{zz"LLa\demotext{ zz\protect\string"LLa}}
+ % \addtoprr{zz\OLDHYL La\demotext{ zz\bs OLDHYL La}}
+ % \addtoprr{zz"mma\demotext{ zz\protect\string"mma}}
+ % \addtoprr{zz\oldhym ma\demotext{ zz\bs oldhym ma}}
+ % \addtoprr{zz"MMa\demotext{ zz\protect\string"MMa}}
+ % \addtoprr{zz\OLDHYM Ma\demotext{ zz\bs OLDHYM Ma}}
+ % \addtoprr{zz"nna\demotext{ zz\protect\string"nna}}
+ % \addtoprr{zz\oldhyn na\demotext{ zz\bs oldhyn na}}
+ % \addtoprr{zz"NNa\demotext{ zz\protect\string"NNa}}
+ % \addtoprr{zz\OLDHYN Na\demotext{ zz\bs OLDHYN Na}}
+ % \addtoprr{zz"ppa\demotext{ zz\protect\string"ppa}}
+ % \addtoprr{zz\oldhyp pa\demotext{ zz\bs oldhyp pa}}
+ % \addtoprr{zz"PPa\demotext{ zz\protect\string"PPa}}
+ % \addtoprr{zz\OLDHYP Pa\demotext{ zz\bs OLDHYP Pa}}
+ % \addtoprr{zz"rra\demotext{ zz\protect\string"rra}}
+ % \addtoprr{zz\oldhyr ra\demotext{ zz\bs oldhyr ra}}
+ % \addtoprr{zz"RRa\demotext{ zz\protect\string"RRa}}
+ % \addtoprr{zz\OLDHYR Ra\demotext{ zz\bs OLDHYR Ra}}
+ % \addtoprr{zz"tta\demotext{ zz\protect\string"tta}}
+ % \addtoprr{zz\oldhyt ta\demotext{ zz\bs oldhyt ta}}
+ % \addtoprr{zz"TTa\demotext{ zz\protect\string"TTa}}
+ % \addtoprr{zz\OLDHYT Ta\demotext{ zz\bs OLDHYT Ta}}
+ % \addtoprr{zz"ffa\demotext{ zz\protect\string"ffa}}
+ % \addtoprr{zz\oldhyf fa\demotext{ zz\bs oldhyf fa}}
+ % \addtoprr{zz"FFa\demotext{ zz\protect\string"FFa}}
+ % \addtoprr{zz\OLDHYF Fa\demotext{ zz\bs OLDHYF Fa}}
+%%
+ % \addtoprr{\ck\demotext{ \bs ck \ \%neu in 2.2}}
+%%
+\addtoprr{\"y\demotext{ \bs\protect\string"y}}
+\addtoprr{ya}
+\addtoprr{DiFabio}
+\addtoprr{Di Niro}
+\addtoprr{ba}
+\addtoprr{ a}
+\addtoprr{5.000}
+\addtoprr{0,5}
+\addtoprr{0.5}
+\addtoprr{0.a6}
+\addtoprr{0.26}
+\addtoprr{0.25}
+\addtoprr{0,251}
+\addtoprr{0.251}
+\addtoprr{1.500}
+\addtoprr{1,500}
+\addtoprr{1501}
+\addtoprr{1,5}
+\addtoprr{1,1}
+\addtoprr{1,125}
+\addtoprr{1,45}
+\addtoprr{1.750}
+\addtoprr{1,75}
+\addtoprr{$\frac{8}{2}$\demotext{ \$\bs frac\{8\}\{2\}\$}}
+\addtoprr{$\frac{8} {2}$\demotext{ \$\bs frac\{8\} \{2\}\$}}
+\addtoprr{$\frac{10}{1}$}
+\addtoprr{$\frac{13}{2}$}
+\addtoprr{$\frac{1000}{100}$}
+\addtoprr{$\frac{7}{2}$}
+\addtoprr{$\frac{9}{2}$}
+\addtoprr{\sort{9,5}$\frac{19}{2}$\demotext{ \bs sort\{9,5\}\$\bs frac\{19\}\{2\}\$}}
+\addtoprr{$\frac{b}{a}$\demotext{ \$\bs frac\{b\}\{a\}\$}}
+\addtoprr{1}
+\addtoprr{14\te Auf"|l.\demotext{ 14\bs te Auf\protect\string"\protect\string|l.}}
+\addtoprr{15}
+\addtoprr{22}
+\addtoprr{2}
+%\addtoprr{\protect\underline{2}\demotext{ \bs protect\bs underline\{2\}}}
+\addtoprr{b \sort{b}c\demotext{ \ \ \ b \bs sort\{b\}c}}
+\addtoprr{b\sort{b} c\demotext{ b\bs sort\{b\} c}}
+\addtoprr{b\sort{b}b\demotext{ b\bs sort\{b\}b}}
+\addtoprr{b\sort{b}a\demotext{ b\bs sort\{b\}a}}
+\addtoprr{b\sort{b}\demotext{ \ b\bs sort\{b\}}}
+%\addtoprr{*b\demotext{ \protect\string*b}}
+\addtoprr{bb}
+\addtoprr{bc}
+\addtoprr{$b$\demotext{ \ \$b\$}}
+\addtoprr{b$^{2}$\demotext{ b\$\protect\string^\{2\}\$}}
+\addtoprr{b$_{2}$\demotext{ b\$\protect\string_\{2\}\$}}
+\addtoprr{b\fup{2}\demotext{ \ b\bs fup\{2\}}}
+\addtoprr{b\fup{b}\demotext{ \ \ b\bs fup\{b\}}}
+\addtoprr{b1}
+\addtoprr{b2}
+\addtoprr{b 2}
+\addtoprr{b3}
+\addtoprr{b20}
+\addtoprr{b98}
+\addtoprr{b100}
+\addtoprr{b\fup{\baRomannum{99}}\demotext{ b\bs fup\{\bs baRomannum\{99\}\}}}
+\addtoprr{{c}\demotext{ \{c\}}}
+\addtoprr{{}c\demotext{ \{\}c}}
+\addtoprr{c{}\demotext{ c\{\}}}
+\addtoprr{"a\demotext{ \protect\string"a}}
+\addtoprr{\"a\demotext{ \bs\protect\string"a}}
+\addtoprr{"A\demotext{ \protect\string"A}}
+\addtoprr{\"A\demotext{ \bs\protect\string"A}}
+\addtoprr{ae}
+\addtoprr{\c{\"a}\demotext{ \bs c\{\bs\protect\string"a\}}}
+\addtoprr{\c{"a}\demotext{ \bs c\{\protect\string"a\}}}
+\addtoprr{af}
+\addtoprr{sr}
+\addtoprr{ss}
+\addtoprr{\3\demotext{ \ \bs 3}}
+\addtoprr{\hyss\demotext{ \ \bs hyss \ \%siehe~S.~\pageref{hyss}}}
+\addtoprr{"s\demotext{ \ \protect\string"s}}
+\addtoprr{\sz\demotext{ \bs sz \ \%neu in 2.1}}
+\addtoprr{{\scshape \ss}\demotext{ \{\bs scshape \bs ss\}}}
+\addtoprr{"z\demotext{ \ \protect\string"z}}
+\addtoprr{Stra"se\demotext{ \ \ Stra\protect\string"se}}
+\addtoprr{Stra{\ss}e\demotext{ \ \ Stra\{\bs ss\}e}}
+\addtoprr{Stra"sburg\demotext{ Stra\protect\string"sburg}}
+\addtoprr{Stra{\ss}burg\demotext{ Stra\{\bs ss\}burg}}
+\addtoprr{Sto"ffigur\demotext{ Sto\protect\string"ffigur \ \%!~S.~\pageref{ff}}}
+
+ \addtoprr{Zum Schluss die Worttrennung american im \label{Trennbeispiel} deutschen Trennsatz}
+{\sethyphenation{UKenglish}
+ \addtoprr{Zum Schluss die Worttrennung american im englischen Trennsatz}}
+
+\addtoprr{A}
+\addtoprr{B}
+\addtoprr{C}
+\addtoprr{D}
+\addtoprr{E}
+\addtoprr{F}
+\addtoprr{G}
+\addtoprr{H}
+\addtoprr{I}
+\addtoprr{J}
+\addtoprr{K}
+\addtoprr{L}
+\addtoprr{M}
+\addtoprr{N}
+\addtoprr{O}
+\addtoprr{P}
+\addtoprr{Q}
+\addtoprr{R}
+\addtoprr{S}
+\addtoprr{T}
+
+\addtoprr{W}
+\addtoprr{X}
+\addtoprr{Y}
+\addtoprr{Z}
+\addtoprr{Ba}
+\addtoprr{Ca}
+\addtoprr{Ci}
+\addtoprr{Da}
+%\addtoprr{Ea}
+%\addtoprr{Fa}
+\addtoprr{Ga}
+%\addtoprr{Ha}
+\addtoprr{Ia}
+%\addtoprr{Ja}
+%\addtoprr{Ka}
+{\sethyphenation{ngerman}\addtoprr{Sto\hyf figur\demotext{ Sto\bs hyf figur~\%ngerman}}}
+{\sethyphenation{german}\addtoprr{Sto\hyf figur\demotext{ Sto\bs hyf figur~~\%german}}}
+\addtoprr{stoffig\demotext{ \ \ stoffig}}
+%\addtoprr{La}
+\addtoprr{Ma}
+\addtoprr{Na}
+\addtoprr{Oa}
+\addtoprr{"o\demotext{ \protect\string"o}}
+\addtoprr{Ra}
+\addtoprr{Sa}
+\addtoprr{Ta}
+\addtoprr{Ti}
+\addtoprr{th}
+\addtoprr{Th}
+\addtoprr{Xa}
+\addtoprr{Ya}
+\addtoprr{Za}
+
+\addtoprr{a}
+\addtoprr{b}
+\addtoprr{c}
+\addtoprr{d}
+\addtoprr{e}
+\addtoprr{f}
+\addtoprr{g}
+\addtoprr{h}
+\addtoprr{i}
+\addtoprr{j}
+\addtoprr{k}
+\addtoprr{l}
+\addtoprr{m}
+\addtoprr{n}
+\addtoprr{o}
+\addtoprr{p}
+\addtoprr{q}
+\addtoprr{r}
+\addtoprr{s}
+\addtoprr{t}
+\addtoprr{u}
+\addtoprr{v}
+\addtoprr{w}
+\addtoprr{x}
+\addtoprr{y}
+\addtoprr{z}
+\addtoprr{aa}
+\addtoprr{ba}
+\addtoprr{ca}
+\addtoprr{ci}
+\addtoprr{da}
+%\addtoprr{ea}
+%\addtoprr{fa}
+\addtoprr{ga}
+%\addtoprr{ha}
+\addtoprr{ia}
+\addtoprr{ja}
+\addtoprr{ka}
+\addtoprr{la}
+\addtoprr{na}
+\addtoprr{oa}
+\addtoprr{pa}
+\addtoprr{ra}
+\addtoprr{sa}
+\addtoprr{ta}
+\addtoprr{ti}
+
+\addtoprr{xa}
+\addtoprr{ya}
+\addtoprr{za}
+
+\addtoprr{ph}
+\addtoprr{pi}
+\addtoprr{ps}
+\addtoprr{pt}
+\addtoprr{Ph}
+\addtoprr{Pi}
+\addtoprr{Ps}
+\addtoprr{Pt}
+
+\addtoprr{b a}
+\addtoprr{B a}
+
+\addtoprr{0000000000}
+\addtoprr{100000000}
+\addtoprr{2~100~000,7\demotext{ 2\protect\string~100\protect\string~000,7}}
+\addtoprr{2\,100\,000,65\demotext{ 2\bs,100\bs,000,65}}
+\addtoprr{2.099.999}
+\addtoprr{2.100.001}
+\addtoprr{\sort{2.100.000}2,1\,Mio.\demotext{ \ \bs sort\{2.100.000\}2,1\bs,Mio.}}
+\addtoprr{\baromannum{14}\te Bd.\demotext{ \bs baromannum\{14\}\bs te Bd.}}
+\addtoprr{\baRomannum{15}\te Bd.\demotext{ \bs baRomannum\{15\}\bs te Bd.}}
+\addtoprr{400000}
+\addtoprr{6000}
+\addtoprr{700}
+\addtoprr{9}
+%\addtoprr{.}
+%\addtoprr{,}
+%\addtoprr{;}
+%\addtoprr{:}
+%\addtoprr{?}
+%\addtoprr{!}
+%\addtoprr{?`\demotext{ \protect\string?{}\protect\string`}}
+%\addtoprr{!`\demotext{ \protect\string!{}\protect\string`}}
+\addtoprr{*\demotext{ \protect\string*}}
+\addtoprr{\$\demotext{ \bs\protect\$}}
+%\addtoprr{\#\demotext{ \bs\protect\#}}
+\addtoprr{"`a"'\demotext{ \protect\string"\protect\string`a\protect\string"\protect\string' \ \ \% ge"andert in 2.2}}
+\addtoprr{"<a">\demotext{ \protect\string"\protect\string<a\protect\string"\protect\string> \ \% ge"andert in 2.2}}
+\addtoprr{\nosort{'}a'\demotext{ \bs nosort\{{\protect\string'}\}a'}}
+\addtoprr{'a'\demotext{ {\protect\string'}a{\protect\string'}}}
+\addtoprr{a'a\demotext{ a\protect\string'a \ \ \%\% vgl. \bs nosort\{\protect\string'\}a}}
+{\originalTeX \addtoprr{"a\demotext{ \{\bs originalTeX \bs addtoprr\{\protect\string"a\}\}\protect\label{originaltex}}}}
+\addtoprr{\glqq a\grqq\demotext{ \bs glqq a\bs grqq}}
+\addtoprr{\flqq a\frqq\demotext{ \bs flqq a\bs frqq}}
+\addtoprr{b\$2\demotext{ b\bs\$2}}
+\addtoprr{b\&2\demotext{ b\bs\&2}}
+\addtoprr{b/2}
+\addtoprr{$b\;2$\demotext{ \$b\bs;2\$}}
+\addtoprr{$b\:2$\demotext{ \$b\bs:2\$}}
+\addtoprr{(b)}
+\addtoprr{[b]}
+\addtoprr{\{b\demotext{ \bs\{b}}
+\addtoprr{\%\demotext{ \bs\%}}
+\addtoprr{b\_2\demotext{ b\bs\protect\string_2}}
+\addtoprr{b=2}
+\addtoprr{b<2}
+\addtoprr{b>2}
+\addtoprr{b@2}
+\addtoprr{b|2\demotext{ b\protect\string|2}}
+\addtoprr{b+2}
+\addtoprr{b-2}
+\addtoprr{b--2\demotext{ \ b{\protect\string-}{\protect\string-}2}}
+\addtoprr{b---2\demotext{ b{\protect\string-}{\protect\string-}{\protect\string-}2}}
+\addtoprr{Ae}
+\addtoprr{Ac}
+\addtoprr{Af}
+\addtoprr{\.{b}\demotext{ \bs.\{b\}}}
+\addtoprr{$\dot{b}$\demotext{ \$\bs dot\{b\}\$}}
+\addtoprr{\'{b}\demotext{ \bs\protect\string'\{b\}}}
+\addtoprr{$\acute{b}$\demotext{ \$\bs acute\{b\}\$}}
+\addtoprr{\`{b}\demotext{ \bs\protect\string`\{b\}}}
+\addtoprr{$\grave{b}$\demotext{ \$\bs grave\{b\}\$}}
+\addtoprr{\^{b}\demotext{ \bs\protect\string^\{b\}}}
+\addtoprr{$\hat{b}$\demotext{ \$\bs hat\{b\}\$}}
+\addtoprr{$\ddot{b}$\demotext{ \$\bs ddot\{b\}\$}}
+\addtoprr{\={b}\demotext{ \bs=\{b\}}}
+\addtoprr{$\bar{b}$\demotext{ \$\bs bar\{b\}\$}}
+\addtoprr{$\vec{b}$\demotext{ \$\bs vec\{b\}\$}}
+\addtoprr{\~{b}\demotext{ \bs\protect\string~\{b\}}}
+\addtoprr{$\tilde{b}$\demotext{ \$\bs tilde\{b\}\$}}
+\addtoprr{\r{a}\demotext{ \bs r\{a\}}}
+\addtoprr{\r{A}\demotext{ \bs r\{A\}}}
+\addtoprr{\aa\demotext{ \bs aa}}
+\addtoprr{\AA\demotext{ \bs AA}}
+\addtoprr{\r{b}\demotext{ \bs r\{b\}}}
+\addtoprr{$\mathring{b}$\demotext{ \$\bs mathring\{b\}\$ \ \%neu in 2.1}}
+\addtoprr{\b{b}\demotext{ \bs b\{b\}}}
+\addtoprr{\c{b}\demotext{ \bs c\{b\}}}
+\addtoprr{\k{b}\demotext{ \bs k\{b\}}}
+\addtoprr{\d{b}\demotext{ \bs d\{b\}}}
+\addtoprr{\H{b}\demotext{ \bs H\{b\}}}
+\addtoprr{\t{b}\demotext{ \bs t\{b\}}}
+\addtoprr{\u{b}\demotext{ \bs u\{b\}}}
+\addtoprr{$\breve{b}$\demotext{ \$\bs breve\{b\}\$}}
+\addtoprr{\v{b}\demotext{ \bs v\{b\}}}
+\addtoprr{$\check{b}$\demotext{ \$\bs check\{b\}\$}}
+\addtoprr{\protect\underbar{\"b}\demotext{ \bs protect\bs underbar\{\bs\protect\string"b\}}}
+\addtoprr{\protect\underline{\c{b}}\demotext{ \bs protect\bs underline\{\bs c\{b\}\}}}
+\addtoprr{\protect\underline{\"b}\demotext{ \bs protect\bs underline\{\bs\protect\string"b\}}}
+\addtoprr{ab}
+\addtoprr{a b}
+\addtoprr{a\,b\demotext{ a\bs,b}}
+\addtoprr{a\protect\space b\demotext{ a\bs protect\bs space b}}
+%\addtoprr{a\relax b\demotext{ a\bs relax b}}
+\addtoprr{a!b\demotext{ a\protect\string!b}}
+\addtoprr{a\nosort{!}b\demotext{ a\bs nosort\{\protect\string!\}b}}
+\addtoprr{a~b\demotext{ a\protect\string~b}}
+\addtoprr{aa}
+\addtoprr{ab}
+\addtoprr{aba}
+\addtoprr{a-b\demotext{ a-b}}
+\addtoprr{a"|b\demotext{ a\protect\string"{\protect\string|}b \ \ \% ge"andert in 2.2}}
+\addtoprr{a"~b\demotext{ a\protect\string"{\protect\string~}b \ \ \% ge"andert in 2.2}}
+\addtoprr{a"=b\demotext{ a\protect\string"{\protect\string=}b \ \ \% ge"andert in 2.2}}
+\addtoprr{a"-b\demotext{ a\protect\string"{\protect\string-}b \ \ \% ge"andert in 2.2}}
+\addtoprr{a\-b\demotext{ a\bs{\protect\string-}b}}
+\addtoprr{a\hy b\demotext{ a\bs hy b}}
+\addtoprr{a\fhy b\demotext{ a\bs fhy b}}
+%\addtoprr{ac}
+\addtoprr{\i\demotext{ \bs i}}
+\addtoprr{\'\i\demotext{ \bs\protect\string'\bs i}}
+\addtoprr{\^\i\demotext{ \bs\protect\string^\bs i}}
+\addtoprr{\`\i\demotext{ \bs\protect\string`\bs i}}
+\addtoprr{$\imath$\demotext{ \$\bs imath\$}}
+\addtoprr{\j\demotext{ \bs j}}
+\addtoprr{$\jmath$\demotext{ \$\bs jmath\$}}
+\addtoprr{\ae\demotext{ \bs ae}}
+\addtoprr{\AE\demotext{ \bs AE}}
+\addtoprr{\copyright\demotext{ \bs copyright}}
+\addtoprr{\dh\demotext{ \bs dh}}
+\addtoprr{\dj\demotext{ \bs dj}}
+\addtoprr{\DH\demotext{ \bs DH}}
+\addtoprr{\DJ\demotext{ \bs DJ}}
+\addtoprr{\l\demotext{ \bs l}}
+\addtoprr{$\ell$\demotext{ \$\bs ell\$}}
+\addtoprr{\ij\demotext{ \bs ij niederl"and.\ als i sortiert}}
+\addtoprr{\IJ\demotext{ \bs IJ "aquivalent zu \bs ij}}
+\addtoprr{$\Im$\demotext{ \$\bs Im\$}}
+\addtoprr{\L\demotext{ \bs L}}
+\addtoprr{\LaTeX\demotext{ \bs LaTeX}}
+\addtoprr{LATEX}
+\addtoprr{LaTeX}
+\addtoprr{\ng\demotext{ \bs ng}}
+\addtoprr{\NG\demotext{ \bs NG}}
+\addtoprr{\o\demotext{ \bs o}}
+\addtoprr{\O\demotext{ \bs O}}
+\addtoprr{\oe\demotext{ \bs oe}}
+\addtoprr{\OE\demotext{ \bs OE}}
+\addtoprr{\textsterling\demotext{ \bs textsterling}}
+\addtoprr{\pounds\demotext{ \bs pounds}}
+\addtoprr{\textregistered\demotext{ \bs textregistered}}
+\addtoprr{$\Re$\demotext{ \$\bs Re\$}}
+\addtoprr{\th\demotext{ \bs th}}
+\addtoprr{\TH\demotext{ \bs TH}}
+\addtoprr{\protect\TeX\demotext{ \bs protect\bs TeX}}
+\addtoprr{TEX\demotext{ TEX}}
+\addtoprr{TeX\demotext{ TeX}}
+\addtoprr{$\alpha$\demotext{ \$\bs alpha\$}}
+\addtoprr{$\beta$\demotext{ \$\bs beta\$}}
+\addtoprr{$\chi$\demotext{ \$\bs chi\$}}
+\addtoprr{$\Chi$\demotext{ \$\bs Chi\$ \ \%neu in 2.1}}
+\addtoprr{$\delta$\demotext{ \$\bs delta\$}}
+\addtoprr{$\Delta$\demotext{ \$\bs Delta\$}}
+\addtoprr{$\epsilon$\demotext{ \$\bs epsilon\$}}
+\addtoprr{$\varepsilon$\demotext{ \$\bs varepsilon\$}}
+\addtoprr{$\eta$\demotext{ \$\bs eta\$}}
+\addtoprr{$\gamma$\demotext{ \$\bs gamma\$}}
+\addtoprr{$\Gamma$\demotext{ \$\bs Gamma\$}}
+\addtoprr{$\iota$\demotext{ \$\bs iota\$}}
+\addtoprr{$\kappa$\demotext{ \$\bs kappa\$}}
+\addtoprr{$\lambda$\demotext{ \$\bs lambda\$}}
+\addtoprr{$\Lambda$\demotext{ \$\bs Lambda\$}}
+\addtoprr{$\mu$\demotext{ \$\bs mu\$}}
+\addtoprr{$\nu$\demotext{ \$\bs nu\$}}
+\addtoprr{\d{$\tilde\nu$}\demotext{ \bs d\{\$\bs tilde\bs nu\$\}}}
+\addtoprr{$\tilde\nu$\demotext{ \$\bs tilde\bs nu\$}}
+\addtoprr{$\breve\nu$\demotext{ \$\bs breve\bs nu\$}}
+\addtoprr{$\omicron$\demotext{ \$\bs omicron\$ (bibarts.sty)}} %% existiert in LaTeX nicht
+\addtoprr{$\omega$\demotext{ \$\bs omega\$}}
+\addtoprr{$\Omega$\demotext{ \$\bs Omega\$}}
+\addtoprr{$\pi$\demotext{ \$\bs pi\$}}
+\addtoprr{$\Pi$\demotext{ \$\bs Pi\$}}
+\addtoprr{$\varpi$\demotext{ \$\bs varpi\$}}
+\addtoprr{$\phi$\demotext{ \$\bs phi\$}}
+\addtoprr{$\Phi$\demotext{ \$\bs Phi\$}}
+\addtoprr{$\varphi$\demotext{ \$\bs varphi\$}}
+\addtoprr{$\psi$\demotext{ \$\bs psi\$}}
+\addtoprr{$\Psi$\demotext{ \$\bs Psi\$}}
+\addtoprr{$\rho$\demotext{ \$\bs rho\$}}
+\addtoprr{$\varrho$\demotext{ \$\bs varrho\$}}
+\addtoprr{$\sigma$\demotext{ \$\bs sigma\$}}
+\addtoprr{$\Sigma$\demotext{ \$\bs Sigma\$}}
+\addtoprr{$\varsigma$\demotext{ \$\bs varsigma\$}}
+\addtoprr{$\tau$\demotext{ \$\bs tau\$}}
+\addtoprr{$\theta$\demotext{ \ \$\bs theta\$}}
+\addtoprr{$\Theta$\demotext{ \$\bs Theta\$}}
+\addtoprr{$\vartheta$\demotext{ \$\bs vartheta\$}}
+\addtoprr{$\xi$\demotext{ \$\bs xi\$}}
+\addtoprr{$\Xi$\demotext{ \$\bs Xi\$}}
+\addtoprr{$\upsilon$\demotext{ \$\bs upsilon\$}}
+\addtoprr{$\Upsilon$\demotext{ \$\bs Upsilon\$}}
+\addtoprr{$\zeta$\demotext{ \$\bs zeta\$}}
+%\addtoprr{$\Zeta$\demotext{ \$\bs Zeta\$}}
+\addtoprr{$\Rho \acute\omicron \delta \omicron \varsigma$
+ \demotext{ \$\bs Rho \bs acute\bs omicron \bs delta \bs omicron \bs varsigma\$}}
+\addtoprr{$\Eta \rho \alpha$ (Hera)
+ \demotext{ \$\bs Eta \bs rho \bs alpha\$}}
+
+\addtoprr{b\\[-2mm]b\demotext{ b\bs\bs[-2mm]b}}
+\addtoprr{b\vspace{2mm}b\demotext{ b\bs vspace\{2mm\}b}}
+\addtoprr{b\hspace{2mm}b\demotext{ \ b\bs hspace\{2mm\}b}}
+\addtoprr{b\index{X}b\demotext{ \ \ b\bs index\{X\}b}}
+\addtoprr{b \index{X}b\demotext{ \ \ b \bs index\{X\}b}}
+\addtoprr{b \index{X} b\demotext{ \ \ b \bs index\{X\} b}}
+\addtoprr{b\glossary{X}b\demotext{ \ b\bs glossary\{X\}b}}
+\addtoprr{b \label{X1} b\demotext{ \ b \bs label\{X1\} b}}
+\addtoprr{b \pageref{X1} b\demotext{ b \bs pageref\{X1\} b}}
+\addtoprr{b \baref{X2} b\demotext{ b \bs baref\{X2\} b}}
+\addtoprr{b \balabel{X2} b\demotext{ \ b \bs balabel\{X2\} b}}
+\addtoprr{b \protect\pageref{X1} b\demotext{ b \bs protect\bs pageref\{X1\} b}}
+\addtoprr{b\protect\linebreak[1]b\demotext{ \ \ \ b\bs protect\bs linebreak[1]b}}
+\addtoprr{b\protect\nolinebreak[1]b\demotext{ b\bs protect\bs nolinebreak[1]b}}
+\addtoprr{b\protect\pagebreak[2]b\demotext{ b\bs protect\bs pagebreak[2]b}}
+\addtoprr{b\protect\nopagebreak[2]b\demotext{ b\bs protect\bs nopagebreak[2]b}}
+\addtoprr{b\protect\footnote[144]{X} b\demotext{ b\bs protect\bs footnote[144]\{X\} \protect\strut\hspace{2em} b}}
+\addtoprr{b\protect\footnotetext[145]{Y} b\demotext{ b\bs protect\bs footnotetext[145]\{Y\} \protect\strut\hspace{2em} b}}
+\addtoprr{b\protect\footnotemark[146] b\demotext{ b\bs protect\bs footnotemark[146] \protect\strut\hspace{2em} b}}
+\addtoprr{b\protect\framebox [1cm][l]{b}\demotext{ b\bs protect\bs framebox [1cm][l]\{b\}}}
+\addtoprr{b\protect\makebox [1cm][r]{b}\demotext{ b\bs protect\bs makebox [1cm][r]\{b\}}}
+\addtoprr{b\protect\parbox[t]{5mm}{b}\demotext{ b\bs protect\bs parbox[t]\{5mm\}\{b\}}}
+\addtoprr{b\protect\raisebox{0.5ex} [3mm] [3mm] {b}\demotext{ b\bs protect\bs raisebox\{0.5ex\} [3mm] [3mm] \{b\}}}
+\addtoprr{b\protect\rule[1mm] {1mm} {2mm}b\demotext{ b\bs protect\bs rule[1mm] \{1mm\} \{2mm\}b}}
+%
+\addtoprr{b Nach Titel\demotext{ \ \ b Nach Titel}}
+\addtoprr{b \vli {Vor} {Nach} {Titel}\demotext{ \ \ b \bs vli \{Vor\} \protect\strut\hspace{6em} \{{\bf Nach}\} \{Titel\}}}
+\addtoprr{b \vli {Vor} {Nach}{Titel}\demotext{ \ b \bs vli \{Vor\} \protect\strut\hspace{6em} \{{\bf Nach}\}\{Titel\}}}
+\addtoprr{b \kli {Nach} {Titel}\demotext{ \ b \bs kli \{{\bf Nach}\} \protect\strut\hspace{8em} \{Titel\}}}
+\addtoprr{b \kli [f]{Nach} {Titel}\demotext{ \ b \bs kli [f]\{{\bf Nach}\} \protect\strut\hspace{8em} \{Titel\}}}
+\addtoprr{b \vli[m] {Vor} {Nach} {Titel}\demotext{ \ \ \ b \bs vli[m] \{Vor\} \protect\strut\hspace{6em} \{{\bf Nach}\} \{Titel\}}}
+\addtoprr{b Nach\demotext{ \ b Nach}}
+\addtoprr{b Nach Vor\demotext{ \ \ \ \ b Nach Vor}}
+\addtoprr{b Nach Vor U\demotext{ \ \ \ \ b Nach Vor U}}
+\addtoprr{b Nach Titel-a\demotext{ \ \ \ b Nach Titel-a}}
+\addtoprr{b \vauthor{Vor}{Nach}\demotext{ b \bs vauthor\{Vor\}\{{\bf Nach}\}}}
+\addtoprr{b \kauthor{Nach}\demotext{ \ \ b \bs kauthor\{{\bf Nach}\}}}
+%
+\addtoprr{\protect\begin{large}b\protect \end{large}b\demotext{ \bs protect\bs begin\{large\}b\bs protect \bs end\{large\}b}}
+\addtoprr{b\protect\typeout{9}b\demotext{ b\bs protect\bs typeout\{9\}b}}
+\addtoprr{b\message{9}b\demotext{ b\bs message\{9\}b}}
+\addtoprr{b\mathhexbox{1}{2}{3}b\demotext{ b\bs mathhexbox\{1\}\{2\}\{3\}b}}
+\addtoprr{b\protect\phantom{X}b\demotext{ \ b\bs protect\bs phantom\{X\}b}}
+\addtoprr{b\protect\vphantom{X}b\demotext{ \ b\bs protect\bs vphantom\{X\}b}}
+\addtoprr{b\protect\hphantom{X}b\demotext{ \ b\bs protect\bs hphantom\{X\}b}}
+\addtoprr{b\sethyphenation{french}b\demotext{ b\bs sethyphenation\{french\}b}}
+\addtoprr{b\selectlanguage{french}b\demotext{ b\bs selectlanguage\{french\}b}}
+\addtoprr{b\discretionary{a-}{c} {b}\demotext{ b\bs discretionary\{a-\}\{c\} \{b\}}}
+
+\noindent
+Zur Erzeugung der vorausgehenden Liste bekam \verb|bibsort| als
+\textit{Sortier}\hy Optio"-n(\ko en\ko) \texttt{\bibsortargs} "ubergeben.
+\verb|\bibsortargs| steht hier vor "`"ubergeben"', um die
+Optionen auszudrucken; sie werden in diesem Befehl
+beim Ausdruck einer \verb|bibsort|\hy Datei $-$ hier \verb|\printprr| $-$
+hinterlegt. Die Optionen
+\texttt{-d} und \texttt{-m} werden nie hinterlegt;
+sie beeinflussen die Reihenfolge nicht.
+
+Die vorausgehenden Seiten zeigten auch viele \LaTeX\hy Befehle,
+die \verb|bibsort| verarbeitet. In \verb|bibsort.c| k"onnen Sie sehen,
+welche Befehle einen Sortierwert erhalten.\footnote{
+\LaTeX\hy Befehlsnamen \textit{aus Buchstaben} m"ussen in der
+\texttt{weighttable}\hy Liste in \texttt{bibsort.c} mit \texttt{\bs t}
+enden, \textit{aus einzelnen Zeichen} bestehende Befehle wie \texttt{\bs\dq} d"urfen das nicht.}
+Befehle, die \verb|bibsort| nicht kennt, sortiert es "ahnlich wie Satzzeichen,
+gewichtet sie also nur, wenn Zeilen \textit{sonst} nur
+\textit{gleiche Buchstaben und Zahlen} enthalten. Zum Verst"andnis des
+schichtweisen Sortierens beachten Sie bitte \verb|Stra"sburg| und \verb|Stra{\ss}burg|.
+In Ihrem Text d"urften Sie Scharf\fhy S auch als \verb|utf8|\hy Zeichen tippen;
+es w"urde ebenfalls vor \verb|Stra"se| und \verb|Stra{\ss}e| sortiert
+(ggf.\ \verb|\usepackage[utf8]{inputenc}| im Vorspann).
+
+Fu"snotenexponenten (\verb|\footnotemark[146]|) werden absichtlich nicht gewichtet,
+mathematische Exponenten(\verb|$^{2}$|) schon.
+\verb|bibsort| macht auch Unterschiede zwischen Ausdruckreihenfolge
+und Sortierreihenfolge:
+Die Argumente von \verb|\vauthor| und \verb|\midvauthor| sowie \verb|\ntvauthor|
+sortiert \verb|bibsort| zuerst nach Nachnamen, und nur bei gleichen Nachnamen
+\textit{anschlie"send} nach Vornamen.
+Und Argumente nach vielen Befehlen\footnote{In \texttt{transformtable} in \texttt{bibsort.c} aufgelistet.
+Von "Anderungen wird abgeraten.}
+werden `ausgerichtet': Z.\,B. werden `innere'\hspace{.1em} \verb|\kli{A}{B}|\hspace{.1em} und\hspace{.1em}
+\verb*|\kli{A} {B}|\hspace{.1em} stets als\hspace{.15em} \verb*|A B|\hspace{.15em} sortiert.
+
+\vspace{2ex}\noindent
+Die Spracheinstellung bestimmt, worin \verb|bibsort| eine
+\textbf{Dezimalzahl} sieht: Mit \verb|-g1| oder \verb|-g2| kommt
+\verb|0,251| \textit{vor} \verb|0,5| (deutsche `Nachkommastellen'),
+\textit{sonst}\pdfko{0}\ zwischen 22 und 700 (englisch gelesen
+nulltausendzweihunderteinundf"unfzig).
+
+\textit{Strukturierungszeichen zum besseren
+Lesen gro"ser Zahlen} weichen im Deutschen vom \textit{default} ab:
+\verb|1.000| wird mit \ko\verb|-g1| oder \ko\verb|-g2| als tausend verstanden,
+sonst (\ko\textit{default}$\,=\,$englisch) stellt \verb|1,000| die Zahl Tausend dar.
+Mit \ko\verb|-g1| oder \ko\verb|-g2| wird \verb|0.251| als 251 verstanden;
+nur bei \textit{drei} `Nachpunktstellen' ist `\verb|.|' Strukturierungszeichen:
+\verb|Bd.\,3.1| gilt als `drei-Punkt-eins' und wird vor \verb|Bd.\,10.2|
+einsortiert (anders als \verb|Bd.\,3.100|).
+
+Bei Punkt und Komma l"asst sich die f"ur einen Text einmal gew"ahlte
+Sprachkonvention sp"ater also nur noch schwer "andern. Setzen der Punkte oder
+Kommata in geschweifte Klammern schaltet jedoch die Dezimalzahlenerkennung aus;
+\texttt{100\{.\}200} gelten als zwei Zahlen \verb|100| und \verb|200| hintereinander.
+
+Sprachunabh"angig gelten einzelne Leerzeichen, \verb|\,| oder
+\verb|~| \textit{vor Dreierkolonnen von Zahlzeichen} nicht als
+Unterbrechung einer Zahl. Dementsprechend steht \verb|1\,000\,000|
+immer f"ur eine Million. Und \verb|1000| ist
+immer tausend.\footnote{Die Zahlenerkennung funktioniert bis\hspace{.1em}
+\texttt{999.999.999.999.999} vor dem `Komma' (deutsch) und bis zu zus"atzlich
+16 Stellen nach dem `Komma' (wobei in den Nachkommastellen keine Strukturierungszeichen enthalten
+sein d"urfen: \texttt{0,0000000000000001} ist die kleinste korrekt sortierbare Zahl).
+Ziffern nach der 15ten bzw.\ 16ten Stelle werden ignoriert von den `h"oheren'
+Sortierschichten (die zuerst die Reihenfolge bestimmen)
+und als neue Zahlen begriffen.}
+
+Negative Zahlen werden f"alschlicherweise nach ihrem Betrag sortiert.
+F"ur ein Buch, das 700 v.\,Chr.\ erschien, k"onnen Sie 1/700 im
+Taschenrechner bestimmen und unter \verb|-g1| oder \verb|-g2| dann
+\verb|\sort{0,001429}700 v.\,Chr.| im\pdfko{1}\
+Text setzen;
+entsprechend lassen sich alle `negativen' Jahre vor das
+Jahr \verb|+1|\pdfko{1}\
+einsortieren (das Jahr \verb|0| kommt aber
+weiterhin vor \textit{allen} anderen Zahlen).
+
+\vspace{2ex}\noindent
+Es gibt weitere Optionen f"ur \verb|bibsort| zum
+\textbf{Sortieren der Argumente}:
+
+\vspace{1ex}
+Etwas Anderes als Punkte zwischen Zahlen sind Punkte nach
+Buchstaben, n"amlich Abk"urzungen. Die Option\hspace{-.2em} \verb|-p| stellt ein,\label{plit}
+dass ein `\verb|.|' im Unterschied zu anderen
+Satzzeichen wie ein Buchstabe z"ahlt
+und dementsprechend in der obersten Sortierschicht Gewicht bekommt:
+\verb|P.S.| kommt dann vor \verb|Peter|.
+
+\vspace{1ex}
+\verb|-l| bringt \verb|bibsort| dazu, Leerzeichen nicht zu gewichten.
+Dann wird \verb|DiFabio| vor \verb|Di Niro| einsortiert (entgegen der
+Grundeinstellung). \verb|-l|~wirkt sich allerdings nur auf Leerzeichen
+\textit{in} Argumenten der \BibArts\hy Befehle aus; falls Sie
+\verb|\vli{Di}{Niro}{|...\verb|}| tippen, hat es keine Auswirkung.
+Bitte beachten Sie, dass \verb*|P. S.| und \verb|P.\,S.|
+anders als \verb|P.S.| von \verb|-l| beeinflusst werden.
+
+\vspace{1ex}
+\verb|-i=j| sortiert \verb|i| unter \verb|j|; Zug"ange mit
+\textit{beiden} Anfangsbuchstaben bilden in den Listen also
+\textit{einen} Block (Zettelkataloge nach Preu"sischen Instruktionen).
+
+\vspace{1ex}
+\verb|-t1| stellt einen Versuch dar, Zeichen aus der zweiten
+H"alfte der ASCII\hy Codetabelle zu sortieren.\footnote{In
+\texttt{bibsort.c} in \texttt{teinzerw} fix definiert.}
+Solche Zeichen erschienen in fr"uheren \LaTeX\hy Versionen im\hspace{-.15em}
+\verb|.aux|\hy File, falls kein \verb|\usepackage[cp850]{inputenc}| o.\,"A.
+im Dokumenten\hy Vorspann gesetzt und im Text trotzdem Zeichen des erweiterten Teils getippt wurden.
+Mit neuesten \LaTeX\hy Versionen ist \verb|-t1| offenbar "uberfl"ussig, weil
+solche Zeichen im\hspace{-.15em} \verb|.aux|\hy File nicht mehr ankommen.
+
+\vspace{2.5ex}\noindent
+Neben \verb|\sort| \baref{sort} l"asst sich die Reihenfolge
+mit dem Befehl \verb|\nosort| steuern. Sein Argument wird gedruckt,
+aber beim Sortieren weitgehend ausgeblendet.
+\verb|'a'| wird vor \verb|a| einsortiert, \verb|\nosort{'}a'| dahinter
+(falls beide Eintr"age sonst nur \textit{gleiche} Buchstaben enthalten).
+Dies liegt daran, dass in dieser `unteren' Sortierschicht
+ein Vergleich zwischen dem \textit{backslash} von \verb|\nosort|
+und dem Apostroph am Anfang von \verb|'a'| stattfindet; \texttt{bibsort}
+sortiert (bei ihm unbekannten Befehlen) den \textit{backslash}
+hinter alle anderen Zeichen. Und beim Konflikt von
+\verb|\nosort{'}a'| und \verb|\glqq|~\verb|a| kommen \verb|n| und \verb|g| zum Zuge.
+
+\newpage
+\noindent
+\verb|bibsort| schreibt keine Protokolldatei, sondern setzt seine
+Fehlermeldungen als Kommentarzeilen in die erzeugten Dateien.
+Wenn anders sortiert wird als erwartet, k"onnen Sie \ko\verb|-m|
+setzen; dann f"ugt \verb|bibsort| zu jedem Eintrag als\pdfko{.5}\
+\LaTeX\hy
+Kommentar seine zum Sortieren genutzten Meta\hy Zeilen hinzu.
+(Die\pdfko{.25}\
+Sonderzeichen zur Nachbewertung bilden manche Editoren
+nur teilweise ab!)
+
+\vspace{1ex}\noindent
+Wie oben S.\,\pageref{head} vorgef"uhrt, bewirkt \verb|\bibsortheads|,
+dass Bl"ocke mit gleichen Anfangsbuchstaben in den Listen mit
+"Uberschriftenbuchstaben versehen werden; \verb|\bibsortspaces|
+setzt an diesen Stellen alternativ vergr"o"serte vertikale Abst"ande.
+Die Buchstaben stellt \verb|bibsort| in allen neun
+Dateien immer bereit;
+\verb|\bibsortheads| ordnet nur an, dies nicht mehr auszublenden.
+Ein Umstellen der Schrift zum Drucken der "Uberschriftenbuchstaben
+ist nicht vorgesehen.
+
+%%%%%%%%%%
+
+\vspace{1.5ex}\noindent
+Nun zu \textbf{Seiten- und Fu"snotennummern in num\hy Ausdruckbefehlen} (wie \verb|\printnumvkc|):
+Die drucken hinter den Text des Listeneintrags die Seitenzahlen und eventuell Fu"snotennummern aus,
+von denen mehrere textgleiche Zug"ange herstammen. Die Reihenfolge,
+in der Zahlentypen ausgedruckt werden, hat \textbf{defaultm"a"sig} (ohne Setzen von Optionen) diese
+\textbf{Reihenfolge}:
+
+\vspace{1.75ex}{\small\sffamily
+\hspace{.25cm}\begin{tabular}{rl}
+ T4 & \verb|\fnsymbol|,\footnotemark\ also \hspace{.5em} {\small
+ $* \hspace{1em} \dagger \hspace{1em} \ddagger \hspace{1em} \mathchar "278 \hspace{1em} \mathchar "27B \hspace{1em} \delimiter "026B30D \hspace{1em} ** \hspace{1em} \dagger \dagger \hspace{1em} \ddagger \ddagger$} \\[.2ex]
+ T5,6 & r"omische Zahlen aus \,\verb|i v x l c d m|\,, dann aus \,\verb|I V X L C D M| \\[.2ex]
+ T7 & arabische Zahlen aus \,\verb|0| \,bis \,\verb|9| \\[.2ex]
+ T8,9 & Buchstaben\hy Z"ahler aus \,\verb|a| \,bis \,\verb|z|\,, dann aus \,\verb|A| \,bis \,\verb|Z| \\[.2ex]
+ T10 & Zeichenfolgen, die nicht als Zahl (\ko an\ko)erkannt werden \\
+\end{tabular}}\footnotetext{\texttt{\bs mathchar \string"278}
+\,sowie \texttt{\bs ensuremath \{\bs mathsection \}}
+werden als $\mathchar "278$~(Symbolz"ahlerstand~4) akzeptiert,
+\texttt{\bs mathchar \string"27B}
+\,sowie \texttt{\bs ensuremath \{\bs mathparagraph \}}
+als $\mathchar "27B$~(5). $-$ \texttt{bibsort} akzeptiert seit 2.1 zudem
+\texttt{\bs TextOrMath\{}\textit{Textmodus}\texttt{\}\{}\textit{Mathematikmodus}\texttt{\}}
+und zieht zur Bewertung das zweite Argument heran.}
+
+\vspace{2ex}\noindent
+Ein Unterschied zwischen der Seiten- und Fu"snoten\hy Nummerierung ergibt sich
+trotz der fixen Reihenfolge, in der \verb|bibsort| die Zahlentypen
+defaultm"a"sig ausdruckt, "uber die Reihenfolge, in der es seine Instrumente
+anwendet: Bei den \textbf{Seitenzahlen} \textit{pr"uft} es erst auf kleine r"omische Zahlen;
+und nur dann, falls es andere Zeichen als\hspace{.2em} \verb|i v x l c d m|\hspace{.2em} findet, auf kleine
+Buchstaben. Damit \textit{gilt} ein \verb|c| defaultm"a"sig als 100, auch wenn es Drei bedeuten \textit{soll}.
+Um dies zu "andern, bietet \verb|bibsort| zwei Typen von Schaltern an. Der erste
+Typ tauscht einfach die Bewertungs\hy Instrumente:
+Falls Sie in Ihrem Appendix \verb|\pagenumbering{alph}| wollen, k"onnen Sie \verb|bibsort|
+mit \verb|-s1| starten. Dann \textit{d"urfen} Sie in Ihrer Einleitung zudem
+\verb|\pagenumbering{Roman}| nutzen (statt der dort defaultm"a"sig \textit{erlaubten}
+kleinen r"omischen Seitenzahlen).
+
+\vspace{1.5ex}\noindent
+Beim Auslesen der \textbf{Fu"snotennummern} pr"uft \verb|bibsort| eine
+eingelesene Zahl dagegen defaultm"a"sig darauf ab, ob es sich um eine
+r"omische Zahl in Gro"sbuchstaben handelt; weitert erwartet
+\verb|bibsort| die auch von \LaTeX\ defaultm"a"sig in \texttt{minipages}
+verwendeten Kleinbuchstaben\hy Fu"snotenexponenten. Bei den Fu"snoten dreht
+\ko\verb|-f1| die Basis\hy Bewertungsreihenfolge um: Dann sind kleine r"omische Zahlen
+und Gro"sbuchstaben als Fu"snotennummern m"oglich (freilich neben dem
+stets m"oglichen {\small\verb|\fnsymbol|} und den arabischen Zahlen).\footnote
+{Falls Sie \texttt{\bs renewcommand\{\bs thefootnote\}\{\bs Alph\{footnote\}\}}
+ohne \texttt{-f1} verwenden, wird \texttt{bibsort}
+textgleiche Zug"ange aus den Fu"snoten
+{\renewcommand{\thefootnote}{\Alph{footnote}}\footnotemark[1] \footnotemark[2] \footnotemark[3]}
+nicht zu $^{A-C}$ zusammenfassen, sondern
+$^{C}$$^{,}$ $^{A}$$^{,}$ $^{B}$ ausdrucken,
+denn \texttt{C} w"urde als r"omische Zahl (\textsf{T6}) gesehen und vor
+den als Gro"sbuchstaben (\textsf{T9}) bewerteten \texttt{A} und \texttt{B}
+einsortiert.
+(Falls Sie alternativ \texttt{-f2} \textit{xxxx}\pdfko{.1}\ nutzen, aber \texttt{A} in
+\textit{xxxx} nicht vorkommt, gelten die Fu"snoten \texttt{A} und \texttt{B} als \textsf{T10}).}
+
+\vspace{1.75ex}\noindent
+Mit einem zweiten Typ von Schalter k"onnen Sie die \textbf{Reihenfolge}
+einstellen, in der \verb|bibsort| \textsf{T4} bis \textsf{T9}
+bewertet \textit{und ausdruckt}: mit \verb|bibsort|~\verb|-s2|~\textit{xxxx}\pdfko{.5}\
+die Seitenzahlen und separat mit \verb|-f2|~\textit{xxxx}
+die Fu"snotennummern. \textit{xxxx} muss\pdfko{.75}\
+vier der sechs Buchstaben \verb|a|, \verb|A|, \verb|r|,
+\verb|R|, \verb|n| und \verb|s| enthalten, wobei
+\verb|a|~alph, \verb|A|~Alph, \verb|n|~arabic,
+\verb|r|~roman, \verb|R|~Roman und \verb|s|~{\small\verb|\fnsymbol|} bedeutet;
+in dieser Reihenfolge wird dann der Zahlenindex in den
+num\hy Listen gedruckt. Es stehen vier statt alle sechs
+Attribute zur Auswahl, weil etwa die Seitennummern \verb|c| oder \verb|C|
+weiterhin sowohl einer Buchstabenz"ahlung wie auch einer r"omischen
+Z"ahlung entstammen k"onnten: Was gemeint ist, sagen Sie
+\texttt{bibsort} nun explizit. \verb|bibsort| stoppt mit einer
+Fehlermeldung, falls Sie in \textit{xxxx} \verb|A| \textbf{und} \verb|R| setzen,
+oder falls Sie \verb|a| \textbf{und} \verb|r| setzen.
+\verb|A| und \verb|a| k"onnen Sie aber in beliebiger Reihenfolge setzen,
+alternativ auch \verb|A| und \verb|r|, \verb|R| und \verb|r|, oder
+\verb|R| und \verb|a|. Das bedeutet gleichzeitig, dass Sie
+z.\,B. {\small\verb|Roman|} in Ihrem Text dann als Seitenz"ahler nicht verwenden
+d"urfen, falls Sie dazu bereits {\small\verb|Alph|} nutzen. Auf in \textit{xxxx} ungenannte Z"ahler wird
+in diesem Modus nicht mehr gepr"uft; sie gelten (wie korrupte Nummern)
+als \textsf{T10}\,!\hspace{.2em} Stets m"ussen \verb|n| und \verb|s| in \textit{xxxx}
+getippt werden (auch wenn Sie beispielsweise {\small\verb|\fnsymbol|} im Text gar nicht
+nutzen), um auf die stets geforderten vier Buchstaben zu kommen.
+Durch mehrere Starts von \texttt{bibsort} erzeugte ich
+aus einer dazwischen unver"anderten \LaTeX\hy Textdatei "uber unterschiedlich
+gesetzte Optionen diese verschiedenen Zahlenkolonnen:
+
+
+\vspace{1.25ex}\noindent
+\verb| bibsort -s2 sArn -f2 snRa |\abra{...}\verb| |\textsf{A$^{I}$--C$^{III}$$^{,}$\ $^{d-f}$, i$^{*}$--v$^{\mathparagraph }$, 1$^{1}$--5$^{5}$}
+
+\vspace{.5ex}\noindent
+\verb| bibsort -s2 sArn -f2 asnR |\abra{...}\verb| |\textsf{A$^{I}$,\ B$^{II}$, C$^{d-f}$$^{,}$\ $^{III}$, i$^{*}$--v$^{\mathparagraph }$, 1$^{1}$--5$^{5}$}
+
+\vspace{.5ex}\noindent
+\verb| bibsort -s2 nsrR |\abra{...}\verb| |\textsf{1$^{1}$--5$^{5}$, i$^{*}$--v$^{\mathparagraph }$, C$^{III}$$^{,}$\ $^{d-f}$, \{{A\/}\}$^{I}$, \{{B\/}\}$^{II}$}
+
+\vspace{1.75ex}\noindent
+Als unbewertbar bewertete `Zahlen' (\textsf{T10}) druckt \verb|bibsort|
+alphabetisch sortiert in geschweiften Klammern
+aus; es gibt keine Zusammenfassung etwa zu \textsf{A--C}.
+Sie k"onnen mit \verb|-c| den Ausdruck der geschweiften Klammern
+unterdr"ucken. Leere Z"ahlerstandsausdrucke erscheinen als\hspace{.1em} \textsf{[]}\hspace{.1em}
+und die \LaTeX\hy Fehlermeldung\hspace{.15em} \verb|Counter too large|\hspace{.15em}
+als\hspace{.2em} \textsf{()}\,;\footnote{Ausdruck eines Z"ahlerstandes von \texttt{0} als r"omische Zahl bzw.\
+gr"o"ser \texttt{26} als Buchstabe.} beides l"asst sich nicht ausschalten.
+
+\vspace{2ex}\noindent
+\verb|bibsort| akzeptiert in den Zahlenargumenten die
+"ublichen Befehle zur Einstellung des Schriftgrades.
+Beispielsweise akzeptiert \BibArts\ Ihre Eingabe:
+
+\vspace{1ex}\noindent{\small
+\verb| \renewcommand{\thempfootnote}{{\itshape\Alph{mpfootnote}}}|}
+
+\vspace{1.25ex}\noindent
+Entsprechendes gilt f"ur \verb|\thepage| und \verb|\thefootnote|.
+Schriftgr"o"sen\hy Befehle wie \verb|\large| weist \verb|bibsort| dagegen
+zur Index\hy Zahlenverarbeitung zur"uck und wertet solche Nummern als
+\textsf{T10} (TEXT). Es gibt aber \verb|\bapageframe| und\pdfko{.75}\
+\verb|\bafootnoteframe|, um Befehlscode oder Text vor \verb|bibsort| zu
+verbergen:
+
+\vspace{1.25ex}\noindent{\small
+\verb| \renewcommand{\thepage}{{\bapageframe{\roman{page}}}}| \\[.25ex]
+\verb| \renewcommand{\thefootnote}{{\bafootnoteframe{\arabic{footnote}}}}|}
+
+\vspace{1.5ex}\noindent
+Die drucken \textit{in Voreinstellung} die Seitenzahl und die Fu"snotenexponenten
+\textit{auf der Seite} in Schr"agstrichen aus. \verb|bibsort|
+druckt die Schr"agstriche nicht aus, erkennt aber den Wert der Z"ahler.
+(Andere Programme wie \textsc{MakeIndex} akzeptieren derart ver"anderte
+Z"ahler jedoch nicht mehr!)
+
+\vspace{1ex}\noindent
+Falls Sie andere Symbole ausgedruckt haben wollen, hier ein Beispiel,
+um die Seitenzahl in geschweiften Klammern und die
+Fu"snotennummer fett in fetten runden Klammern auszudrucken
+(sowie auch \LaTeX- und \BibArts\kern.1em\hy Querverweise
+\verb|\ref{|\textit{xyz}\verb|}| und \verb|\baref{|\textit{xyz}\verb|}|, die auf
+solche Seiten oder Fu"snoten zeigen):
+
+\vspace{1.25ex}\noindent{\small
+\verb| \renewcommand{\pbapageframe}[1]{\{#1\}}| \\[.4ex]
+\verb| \renewcommand{\pbafootnoteframe}[1]{(#1)}| \\[.4ex]
+\verb| \renewcommand{\thepage}{{\bapageframe{\roman{page}}}}| \\[.6ex]
+\verb| \renewcommand{\thefootnote}| \\[.3ex]
+\verb| {{\bfseries\bafootnoteframe{\arabic{footnote}}}}|}
+
+
+\vspace{2.5ex}\noindent
+Falls Sie\hspace{.2em} \verb|bibsort|~\textit{file}\hspace{.1em} befehlen,
+liest \verb|bibsort| das von \LaTeX\ zuvor erzeugte\hspace{.15em} \textit{file}\ko\verb|.aux|\hspace{.15em}
+ein und erzeugt die bis zu neun \BibArts\kern.1em\hy
+Dateien (etwa\hspace{.15em} \textit{file}\ko\verb|.vli|\kern.1em, falls Sie vli\fhy Befehle verwenden).
+Alle bei \textit{einem} \texttt{bibsort}\hy Start erzeugte Dateien haben dasselbe Pr"afix, \textit{defaultm"a"sig}
+dasjenige der Input\hy Datei, also \textit{file}\kern.01em.\hspace{.1ex}
+Seit \BibArts~2.1 muss ein abweichendes Pr"afix\hspace{.1em} \textit{outfile}\hspace{.15em}
+mit\hspace{.1em} \verb|-o|\hspace{.2em} angek"undigt werden:
+
+\vspace{1.5ex}
+\verb|bibsort |\textit{file}\verb| -o |\textit{outfile}
+
+\vspace{1.75ex}\noindent
+Weiter \textit{kann} das Pr"afix der Input\hy Datei beim Aufruf von\hspace{.15em} \verb|bibsort|\hspace{.15em}
+seit 2.1 mit der Option\hspace{.1em}
+\verb|-i|~\textit{file}\hspace{.15em} nun explizit gekennzeichnet
+werden. So lassen sich auch Dateien\hspace{.15em} \textit{file}\ko\verb|.aux|\hspace{.15em} bearbeiten, deren
+Name\hspace{.15em} mit einem Minuszeichen beginnt.
+
+
+%%
+
+\vspace{1ex}\vfill\noindent
+\verb|bibsort| sortiert {\small\verb|\fnsymbol|} in Grundeinstellung
+deswegen zuerst ein, weil \LaTeX\ diese Marken f"ur Fu"snoten in
+seiner Titelkonstruktion vorsieht. Innerhalb des Arguments
+von {\small\verb|\title|} separiere ich im folgendem Beispiel {\small\verb|\footnote|}\pdfko{.2}\ in
+{\small\verb|\footnotemark|} und {\small\verb|\footnotetext|}, sonst droht ein Speicher"uberlauf:
+
+
+\newpage
+
+\vspace{.5cm}
+\begin{tt}\small\noindent
+\%\% Ein Text mit einer Fussnote im Argument des \bs title-Befehls \%\%\\[2ex]
+\bs documentclass[12pt,a4paper]\{article\} \\[.25ex]
+\hspace*{.5cm} \bs usepackage[T1]\{fontenc\} \ \bs usepackage[utf8]\{inputenc\} \\
+\hspace*{.5cm} \bs usepackage\{ngerman\} \ \ \ \ \ \bs usepackage\{bibarts\} \\[2ex]
+\hspace*{.5cm} \bs author\{Peter Maier\} \\
+\hspace*{.5cm} \bs title\{Aufsatz\bs footnotemark[1]\} \\[4ex]
+\bs begin\{document\} \\[2ex]
+\hspace*{.25cm} \%\% Aus \bs title ausgelagerte Eingabe des Fussnotentextes \\
+\hspace*{.25cm} \%\% und lokales Anpassen des Exponenten * im Fussnotenbereich: \\[.75ex]
+\hspace*{.25cm} \{\bs renewcommand\{\bs thefootnote\}\{\bs fnsymbol\{footnote\}\} \\[.75ex]
+\hspace*{.5cm} \bs footnotetext[1]\{Vgl.\bs\ dazu \bs vli\{Niall\}\{Ferguson\}\{Der \\[.25ex]
+\hspace*{1cm} \bs ktit\{\bs onlykurz\{F\}\bs onlyvoll\{f\}alsche\bs onlykurz\{r\} Krieg\}, \\[.4ex]
+\hspace*{1cm} M"unchen 2001\}[22].\} \\
+\hspace*{.25cm} \} \\[2ex]
+\bs maketitle \\[2ex]
+\bs noindent \\
+Der erste Satz.\bs footnote\{\bs kli\{Ferguson\}\{Falscher Krieg\}[23].\} \\[2ex]
+\bs end\{document\}
+\end{tt}
+
+\vfill\noindent
+\begin{minipage}{.98\textwidth}
+\vspace{.75cm}\noindent
+{\renewcommand{\thempfootnote}{\fnsymbol{mpfootnote}}%
+\begin{center}
+{\LARGE \hspace*{.4em}Aufsatz$^{*}$}\\[4.05ex]
+{\large Peter Maier}\\[2.65ex]
+{\large \today}\\
+\end{center}
+ \footnotetext[1]{Vgl.\ dazu \vli{Niall}{Ferguson}{Der
+ \ktit{\onlykurz{F}\onlyvoll{f}alsche\onlykurz{r} Krieg},
+ M"unchen 2001}[22].}%
+}%
+{\renewcommand{\thempfootnote}{\arabic{mpfootnote}}%
+\vspace{2ex}\noindent
+Der erste Satz.\footnote{\kli{Ferguson}{Falscher Krieg}[23].\vspace{1ex}}}
+\vspace{.75cm}
+\end{minipage}
+
+
+
+\newpage
+\thispagestyle{empty}
+\section*{Inhaltsbeschreibung}\label{SectIn}
+\newcommand\tocline[2]{\hbox to .5cm{\hfill\bfseries{\ref{#1}}} \ {#2} \dotfill\hbox to .5cm {\hfill\ttfamily\pageref{#1}}}
+
+\strut \\[-.5ex]
+\hspace*{2cm}\textsf{Zun"achst werden die zentralen \BibArts\hy Befehle erkl"art:} \\[.875ex]
+\tocline{Sect1} {Vollzitate und Kurzzitate (\ko\textit{v}\hy\ und \textit{k}\fhy Befehle)} \\[.25ex]
+\tocline{Sect2} {W"ortliche Zitate in verschiedenen Sprachen} \\[.25ex]
+\tocline{Sect3} {Formatierungs- und Editionshilfen} \\[.25ex]
+\tocline{Sect4} {Abk"urzungen} \\[.25ex]
+\tocline{Sect5} {\texttt{\bs abk\{X.X.X.\}} unter \texttt{\bs nonfrenchspacing}} \\[.25ex]
+\tocline{Sect6} {Zeitschriften und allgemein Bandangaben} \\[.25ex]
+\tocline{Sect7} {Archivquellen} \\[.25ex]
+\tocline{Sect8} {Orts\fhy, Sach\hy\ und Personenregister} \\[1.875ex]
+\hspace*{2cm}\textsf{Dann beschreibe ich Sonderf"alle und Hintergrundbefehle:} \\[.875ex]
+\tocline{Sect9} {\texttt{\bs protect} und zerbrechliche Befehle} \\[.25ex]
+\tocline{Sect10}{Punkte, \,\texttt{\bs bahasdot} \,und \,\texttt{\bs banotdot}} \\[.25ex]
+\tocline{Sect11}{\textit{Italics}\hy Korrekturen und Separatoren} \\[.25ex]
+\tocline{Sect12}{Sprachabh"angige Separatoren (\kern-.02em\textit{captions})} \\[1.875ex]
+\hspace*{2cm}\textsf{Hier kommen Zusammenstellungen nach Aufgabentyp:} \\[.875ex]
+\tocline{Sect13}{Die \BibArts\kern .1em\hy Hauptbefehle} \\[.25ex]
+\tocline{Sect14}{Schrifteinstellung in \BibArts\kern .1em\hy Argumenten} \\[.25ex]
+\tocline{Sect15}{\BibArts\kern .1em\hy Ein\fhy\ko/\ko\ko Ausschalter} \\[.25ex]
+\tocline{Sect16}{\BibArts\kern .1em\hy\hspace{-.025em}1.3\hspace{.075em}\hy Texte unter \BibArts~2.x} \\[.25ex]
+\tocline{Sect17}{Listenausdruck (\BibArts\kern .1em\hy Belegapparat)} \\[1.875ex]
+\hspace*{2cm}\textsf{Und zuletzt folgen Sortierprogramm und Sortierreihenfolge:} \\[.875ex]
+\tocline{Sect18}{\texttt{bibsort} samt Neuerungen seit Version~2.0} \\ \strut
+
+
+
+\vfill
+\hbox{\parbox{7.7cm}{\footnotesize\noindent
+\textbf{\BibArts~2.2 (9 Dateien, 8 vom 03.03.2019):} \\[.85ex]
+ \begin{tabular}{ll}%
+ \texttt{README.txt} & Versionsgeschichte seit 1.3 \\[-1.75pt]
+ \texttt{bibarts.sty} & Das \LaTeX-Style-File \\[-1.75pt]
+ \texttt{bibarts.pdf} & Diese Dokumentation hier \\[-1.75pt]
+ \texttt{bibarts.tex} & Quellcode von \texttt{bibarts.pdf} \\[-1.75pt]
+ \texttt{ba-short.pdf} & Englische Kurzdokumentation \\[-1.75pt]
+ \texttt{ba-short.tex} & Quellcode von \texttt{ba-short.pdf}\\[-1.75pt]
+ \texttt{bibsort.exe} & Bin"ardatei f"ur die Listen \\[-1.75pt]
+ \texttt{bibsort.c} & Quellcode von \texttt{bibsort.exe} \\[-1.75pt]
+ \texttt{COPYING} & Lizenz (vom 28.11.1993) \\
+ \end{tabular}}
+\\
+\hspace*{2.4mm}
+\parbox{5.6cm}{\vspace{1.6ex}\sethyphenation{UKenglish}\tiny\sffamily
+ 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 2 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+}}
+
+{\footnotesize\vspace{1.5ex}\noindent \BibArts\ ist kostenlos. Bitte
+dokumentieren Sie "Anderungen vor der Weitergabe. \\[-.5ex]
+Zur Diskussion k"onnen Sie mir an\hspace{.1em}
+\texttt{bibarts}\kern.1em(\kern-.05em at\kern-.075em)\kern.1em\texttt{gmx.de}\hspace{.1em}
+schreiben.}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%\tableofcontents
+
+\end{document}
diff --git a/macros/latex/contrib/bibarts/bibsort.c b/macros/latex/contrib/bibarts/bibsort.c
new file mode 100644
index 0000000000..9df9a577cb
--- /dev/null
+++ b/macros/latex/contrib/bibarts/bibsort.c
@@ -0,0 +1,7173 @@
+/* BibArts 2.2 assists you to write LaTeX texts in arts and humanities. */
+/* Copyright (C) 2019 Timo Baumann bibarts[at]gmx.de (2019/03/03) */
+
+/* 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 2 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, write to the Free Software */
+/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+
+/*
+ FILES OF THE PACKAGE AND DOCUMENTATION
+ CTAN mirrors > BibArts > bibarts.zip
+ bibarts.sty LaTeX style file
+ ba-short.pdf Short documentation (English)
+ ba-short.tex Source of ba-short.pdf
+ bibarts.pdf Full documentation (German)
+ bibarts.tex Source of bibarts.pdf
+ bibsort.exe Binary to create the lists
+ bibsort.c This file; source of bibsort.exe
+ COPYING The license of the package
+ */
+
+
+
+/*
+ COMPATIBILITY
+ I have tested bibsort.c with several C compilers. I had problems with
+ the devcpp.exe EDITOR (Dev-Cpp_5.4.0_TDM-GCC_x64_4.7.1). Sucessful was:
+ "C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\gcc.exe" -O2 -c bibsort.c -o bibsort.o
+ "C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\gcc.exe" bibsort.o -o bibsort.exe
+
+ Do NOT change this file when you do not have a qualified text
+ editor - it contains control chars: '', '', '', '', | Are the
+ '', '', '', ' ', ' ', '', '', '', '', '', '', | |'s in
+ '', '', '', '', '', '', '', '', '', and ''. | a line?
+
+ The C-compiled binary of this file is reading LaTeX .aux files.
+ It can NOT read the .bar files, which BibArts did use before 2.0.
+ BibArts 2.2 ONLY has an EMULATION for 1.3 texts: Keep copies of 1.x?
+ */
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <time.h>
+
+
+
+
+#define MAXLINES 65536
+#define MAXLEN 4096
+#define MAXFILES 128
+#define MAXFILENAMLEN 1024
+
+#define AUX_SUFFIX ".aux"
+#define VLI_SUFFIX ".vli"
+#define VQU_SUFFIX ".vqu"
+#define VKC_SUFFIX ".vkc"
+#define ABK_SUFFIX ".abk"
+#define PER_SUFFIX ".per"
+#define ARQ_SUFFIX ".arq"
+#define GRR_SUFFIX ".grr"
+#define PRR_SUFFIX ".prr"
+#define SRR_SUFFIX ".srr"
+
+#define IKILLNAME "\\Ikillname{}" /* -K: Damit wird ARG1 und ARG2 einer */
+ /* Zeile ersetzt, falls diese in der */
+ /* vorausgehenden Zeile gleich sind; */
+#define NKILLNAME "\\killname{}" /* ... und weitere gleiche Namen. */
+#define PLURALCHAR 'P' /* "\\Pkillname{}" */
+#define MALE "\\male"
+#define FEMALE "\\female"
+#define NOTDOT "\\banotdot"
+#define HASDOT "\\bahasdot"
+#define RELAX "\\relax" /* Auch um folgende spaces zu ignorieren */
+#define TeXITEM "\\item"
+#define TYPEOUT "\\typeout@ba"
+#define IeC "\\IeC\t"
+#define PREPARESPACE "\\bibsortpreparespace"
+#define PREPAREXSPACE "\\bibsortpreparexspace"
+#define PREPAREHEAD "\\bibsortpreparehead"
+
+#define ABKDEF "\\abkdef"
+
+#define BAFALSE "{false}"
+
+
+#define NOKILLAUTHORS 0
+#define DOKILLAUTHORS 1
+#define DOKILLABBREVS 2
+#define DOKILLREGISTS 3
+#define DOKILLK 4
+
+#define OPENB "\'{\'"
+#define NUMLEN 16
+
+int ignorespaces = 0;
+int hy_as_space = 0;
+ int kill = NOKILLAUTHORS;
+int registpoints = 0;
+char *lineptr[MAXLINES];
+
+int FntIndexOverPages = 1; /* new in 2.2 */
+
+#define PCOLS 2
+#define PCOLSSORT 1
+#define ACOLS 2
+#define ACOLSSORT 1
+#define KCOLS 4
+#define VCOLS 4
+#define IS_Q 2
+#define IS_V 1
+#define NO_V 0
+#define MAXBACOLS 4
+char *subAptr[MAXBACOLS][MAXLINES];
+char *subBptr[MAXBACOLS][MAXLINES];
+char *subCptr[MAXBACOLS][MAXLINES];
+
+#define PROTECT "\\protect"
+#define KTIT "\\ktit"
+#define KTITCMD "\\ktit\t"
+#define ANNOUNCEKTIT "\\announcektit"
+#define KURZ "\\kurz"
+#define KURZCMD "\\outkurz\t"
+#define KTITINTRO "\t"
+#define KTITINTROCH '\t'
+#define KTITERRORCH '\?' /* Insert ?? for bad inner \ktit */
+#define KTITSHA "\t<"
+#define KTITMISS "\t|"
+#define KTITEMPTY "\t>"
+#define KTITBEG "{"
+#define KTITEND "}"
+#define KTITOP '{'
+#define KTITCL '}'
+int otherktiterr = -1;
+
+#define ACCEPTLINE 0
+#define REJECTLINE 1
+#define DOUBLELINE 2 /* \ */
+#define DIFFERLINE 3 /* Erst ***nach*** */
+#define UNDEFILINE 4 /* QQsort vergeben */
+#define ABBREVLINE 5 /* / */
+#define REDEF1LINE 6
+#define REDEF2LINE 7
+int leval[MAXLINES];
+
+#define BARESTCOLS 5
+#define PAGEFNTCOL 1
+#define PAGECOL BARESTCOLS
+#define FNTCOL (BARESTCOLS+1)
+#define BAALLRCOLS (BARESTCOLS+2)
+char *subRptr[BAALLRCOLS][MAXLINES];
+int pagewgt[MAXLINES];
+int fntwgt[MAXLINES];
+
+#define STUFFRCOL 0
+#define KENTRY 0
+#define VENTRY 1
+#define ERRENTRY 2
+#define VENTRYCH 'v'
+#define KENTRYCH 'k'
+
+#define ERRINPUTLINENO "line \?\?"
+#define ERRINPUTLINENOLEN 7
+
+#define OVERFLOWTXT "Counter too large"
+ /* vgl. -> "\\errmessage\t" */
+#define MISSINGSYMB "\\erri@ba"
+#define MISSINGERMS "??"
+#define OVERFLOWSYMB "()"
+#define EMPTYSYMB "[]"
+char *TEXTSYMBOPEN[] = { "\\{{", "{", NULL };
+char *TEXTSYMBCLOSE[] = { "\\/}\\}", "\\/}", NULL };
+int notext = 0;
+
+int dqsort[MAXLINES];
+#define MINCATCODE 0
+#define MAXCATCODE 15
+#define ERRCATCODE MINCATCODE-1
+const char bareststr[] = "{}{}[][]()";
+#define DQCOL 2
+#define TeXACTIVE 13
+#define TeXPASSIVE 12
+#define LANCOL 3
+#define GERMANTEX "\\bagermanTeX" /* err-def ist \bagermanTeX#1{} */
+#define ORIGINALTEX "\\baoriginalTeX" /* err-def ist \baoriginalTeX#1{} */
+#define HYPHENATION "\\language="
+#define LINECOL 4
+#define OLDBIGROMAN "\\uppercase"
+#define NEWFNSYMBOL "\\ensuremath"
+#define TOMFNSYMBOL "\\TextOrMath"
+#define TEXFILELINE "\\line@ba"
+
+#define BS_SPACE "\\ "
+#define BANCOMMA ", "
+#define BAINDEXFIRS " \\first@baidx{"
+#define BAINDEXFOLL " \\follo@baidx{"
+#define BAINDEXEND "}\n"
+#define CLOOPASTART -1
+#define CLOOPBSTART 0
+#define BAINDEXLEN 45
+
+
+#define BADNUM 0
+#define GOODNUM 1
+#define CHECKNUM 0
+#define ANALYZENUM 1
+#define HASOFLOW 0
+#define HASNOOFLOW 1
+
+#define MAXMESSN 10
+#define MAXINFO 10
+
+FILE *infile, *outfile;
+char *filelist[MAXFILES];
+
+int upperascii = 0;
+int german = 0;
+int nogsty = 0;
+int encode = 0;
+int EinlROEMseiten = 0;
+#define BA_FALSE 0
+#define BA_TRUE 1
+ int get_R_pg = BA_FALSE;
+ int get_A_pg = BA_FALSE;
+ int get_r_pg = BA_FALSE;
+ int get_a_pg = BA_FALSE;
+int ALPHmpfootnotes = 0;
+ int get_R_fn = BA_FALSE;
+ int get_A_fn = BA_FALSE;
+ int get_r_fn = BA_FALSE;
+ int get_a_fn = BA_FALSE;
+int igleichj = 0;
+
+#define METALINEHEAD "%%%%META%%%%"
+
+
+int bago = 0; /* new in 2.2 */
+#define BAGOCMD "\\bago"
+
+char *soptarg = NULL;
+char *foptarg = NULL;
+
+void print_two(int line, int left, int right);
+int isLaTeXcmdletter(char a);
+int entkerne_IeC(char buf[], const char *s);
+
+char *mydefault = "";
+char *nofnt = "(nofnt)"; /* nur "" wuerde Fehler machen */
+char *unused = "(unused)";
+void myfree(char *p) { if (p != mydefault && p != nofnt && p != unused && p != NULL) free(p); }
+
+
+void openfailed(const char *s)
+{
+ fprintf(stderr, "%%%% == Failed to open \"%s\". ==\n", s);
+}
+
+
+void intern_err(int n)
+{
+ printf("%%%%\n%%%%> INTERNAL ERROR %d\n", n);
+}
+
+
+void announceexit(const char *s)
+{
+ fprintf(stderr, "%%%%> I give up my job, because I %s.\n", s);
+}
+
+
+int mystrncpy(char *p, const char *s, int len)
+{
+ int l = 0, ll;
+
+ while(*s != '\0' && l < len)
+ {
+ *p++ = *s++;
+ ++l;
+ }
+
+ *p = '\0'; /* handle error: len < 0 */
+
+ ll = l;
+ while (ll <= len)
+ {
+ *p++ = '\0';
+ ++ll;
+ }
+
+ return l;
+}
+
+
+char *strnmalloc(const char *q, int len)
+{ char *p = mydefault;
+ int l = 0;
+ if (len < 1) { intern_err(0); len = 1; } /* mallocError len */
+ p = (char *) malloc(len);
+ if (p == NULL)
+ {
+ printf("%%%%\n%%%%> Error: Not enough memory.\n");
+ announceexit("could not alloc enough memory");
+ exit(1);
+ }
+ else l = mystrncpy(p, q, len-1);
+ if (l != len-1) intern_err(1); /* alloc len l != len-1 */
+ return p;
+}
+#define HASFNTCH '@'
+#define HASUNUCH '-'
+
+
+/*--------------------------------------------------------------------------*/
+
+
+char *getmyname(char *p, int max)
+{
+ char *m = p;
+ int pos = strlen(p);
+
+ if (pos > max)
+ while(*p != '\0')
+ {
+ if (*p == '/' || *p == '\\')
+ {
+ m = p+1;
+ if (pos <= max) break;
+ }
+ ++p; --pos;
+ }
+ return m;
+}
+
+
+void licenseinfo(void)
+{
+ printf("%%%% I guess that I am a bin-compilation of bibsort.c. My job is to read\n");
+ printf("%%%% entries in LaTeX %s files which are made by bibarts.sty. Use e.g.\n", AUX_SUFFIX);
+ printf("%%%% \\vli{FirstName}{FamilyName}{BookTitle, Year} and \\printvli in your\n");
+ printf("%%%% .tex file. For usage, see ba-short.pdf (engl) or bibarts.pdf (ger).\n");
+ printf("%%%%\n");
+ printf("%%%% This program is free software; you can redistribute it and/or modify\n");
+ printf("%%%% it under the terms of the GNU General Public License as published by\n");
+ printf("%%%% the Free Software Foundation; either version 2 of the License, or\n");
+ printf("%%%% (at your option) any later version.\n");
+ printf("%%%%\n");
+ printf("%%%% This program is distributed in the hope that it will be useful,\n");
+ printf("%%%% but WITHOUT ANY WARRANTY; without even the implied warranty of\n");
+ printf("%%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n");
+ printf("%%%% GNU General Public License for more details.\n");
+ printf("%%%%\n");
+ printf("%%%% You should have received a copy of the GNU General Public License\n");
+ printf("%%%% along with this program; if not, write to the Free Software\n");
+ printf("%%%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n");
+ printf("%%%%\n");
+}
+
+
+void moreinfo(void)
+{
+ printf("%%%% -t1 You use [T1]{fontenc} and NO [...]{inputenc}: I sort ASCIIs > 127.\n");
+ printf("%%%% -m Write into files the meta arguments which I use to sort lines.\n");
+ printf("%%%% -b If %s is in an arg, only text behind will have a sorting weight.\n", BAGOCMD);
+ printf("%%%% -n1 You reset fnt counters (no fnt-block-indexing over several pages).\n");
+ printf("%%%% INDEX TO PAGE AND FOOTNOTE NUMBERS (num-lists like \\printnumvkc):\n");
+ printf("%%%% (1) DEFAULT SORTING ORDER of page and footnote numbers:\n");
+ printf("%%%% fnsymbol r/Roman arabic a/Alph (z=26, aa=27, ab=28)\n");
+ printf("%%%% You may change the EVALUATION ORDER (r/Roman versus a/Alph):\n");
+ printf("%%%% / introduction = *lower roman page numbers*\n");
+ printf("%%%% DEFAULT < appendix = *capital Alph page numbers*\n");
+ printf("%%%% \\ minipages = *lower alph footnote numbers*\n");
+ printf("%%%% -s1 EVALUATE \'I\' as 1 in pages (intro Roman, appendix alph).\n");
+ printf("%%%% -f1 EVALUATE \'i\' as 1 in fnts (evaluate on roman before alph).\n");
+ printf("%%%% (2) NON-DEFAULT SORTING ORDER with an EVALUATION affixed to that order:\n");
+ printf("%%%% -s2 <xxxx> Page number style: -f2 <xxxx> Footnote mark style:\n");
+ printf("%%%% with a permutation of 4 letters out of nRrAas in free order\n");
+ printf("%%%% (a=alph, A=Alph, n=arabic, R=Roman, r=roman, s=fnsymbol);\n");
+ printf("%%%% but in <xxxx>, there must be n, s, and R *or* A, and r *or* a.\n");
+ printf("%%%%\n");
+}
+
+
+void maininfo(char *myname)
+{
+ printf("%%%% I read a LaTeX %s file (follow \\@input), and I write my output in files\n", AUX_SUFFIX);
+ printf("%%%% %s Literature %s Published sources %s Geographic index\n", VLI_SUFFIX, VQU_SUFFIX, GRR_SUFFIX);
+ printf("%%%% %s Short titles %s Unpublished sources %s Person index\n", VKC_SUFFIX, ARQ_SUFFIX, PRR_SUFFIX);
+ printf("%%%% %s Periodicals %s Abbreviations %s Subject index\n", PER_SUFFIX, ABK_SUFFIX, SRR_SUFFIX);
+ printf("%%%%\n");
+ printf("%%%% %s <LaTeXFile> [-o <OutFile>] [-g1 [OR] -g2] [<OtherOptions>]\n", getmyname(myname, 13));
+ printf("%%%%\n");
+ printf("%%%% DefaultSort: 0, .., 9, (A a), (B b), .., (s \\ss S), .., (Z z) and\n"); /* udtable */
+ printf("%%%% (a [\\.\\'\\`\\^\\\"\\=\\~]a \\aa=\\r{a} [\\b\\c\\k\\d\\H\\t\\u\\v]{a} \\ae), b, ..\n");
+ printf("%%%% -g<n> GermanSort: (a A), .., (z Z), 0, .., 9; and (\\\" or active \"):\n");
+ printf("%%%% -g1 GermanTelefonebookStyle: \"a = \\\"a = ae, ..., \"s = \\ss = ss;\n"); /* gweight */
+ printf("%%%% -g2 ModernGermanDictionary: \"a = \\\"a = a, ..., \"s = \\ss = ss.\n"); /* mweight */
+ printf("%%%% -x DoNotExpect german.sty: Active \"-characters do NOT produce umlauts.\n");
+ printf("%%%% -k Idemize ~ multiple used authors in the %s and %s lists (kill).\n", VLI_SUFFIX, VQU_SUFFIX);
+ printf("%%%% -d \\include{ / is \\ } (dos). -h Sort a hyphen as a space.\n");
+ printf("%%%% -i=j Sort \'i\' as \'j\'. -p Sort \"P.S.\" before \"Peter\" (point).\n");
+ printf("%%%% -l Ignore spaces (leer). -c Don\'t set bad page/fnt nums in {}.\n"); /* TEXTSYMBOPEN[0], TEXTSYMBCLOSE[0] */
+ printf("%%%% -r Typeout license (read). -\?\? Further options.\n");
+ printf("%%%%\n");
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int isexactlcmd(const char *p, const char *s)
+{
+ while(*p == *s && *s != '\t' && *s != '\0' ) { ++p; ++s; }
+ if (*s == '\t' && isLaTeXcmdletter(*p) == 0) return 0;
+ return 1;
+}
+
+
+int num_of_cmds_in_str(const char *p, const char *s)
+{
+ int r = 0;
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\') ++p;
+ else
+ if (isexactlcmd(p, s) == 0) ++r;
+ }
+ ++p;
+ }
+
+ return r;
+}
+
+
+int nextbracket(const char *p, const char opench, const char closech)
+{
+ int c = 0, r = 0;
+
+ while (*p != '\0')
+ {
+ if (*p == '\\' && *(p+1) != '\0') { ++p; ++r; }
+ else if (*p == opench) ++c;
+ else if (*p == closech) --c;
+ ++p; ++r;
+ if (c == 0) break;
+ }
+
+ if (c != 0) r = -r;
+
+ return r;
+}
+
+
+int unshielded_cmds_in_str(const char *p, const char *s)
+{
+ int r = 0;
+
+ while (*p != '\0')
+ {
+ if (*p == '{') p += nextbracket(p, '{', '}') - 1;
+ else
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\') ++p;
+ else
+ if (*(p+1) == '{') ++p;
+ else
+ if (isexactlcmd(p, s) == 0) ++r;
+ }
+ ++p;
+ }
+
+ return r;
+}
+
+
+int artithmetic_overflow(const char *p, const char *cc)
+{
+ printf("%%%%\n%%%%> Warning: Arithmetic overflow %s-eval \"%s\".\n", p, cc);
+
+ return INT_MAX;
+}
+
+
+int getarabicnum(const char *p)
+{
+ int num = 0, vor = 1;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') { vor = -1; ++p; }
+
+ while (*p >= '0' && *p <= '9' && num >= 0)
+ num = (10 * num) + (*p++ - '0');
+
+ if (num < 0) num = artithmetic_overflow("arabic", mem);
+
+ return num * vor;
+}
+
+
+int firstoverlettergan(const char *p)
+{
+ while (*p == ' ' || isalpha(*p) != 0) ++p;
+
+ return getarabicnum(p);
+}
+
+
+int secondoverlettergan(const char *p)
+{
+ while (*p == ' ' || isalpha(*p) != 0) ++p;
+ while (*p >= '0' && *p <= '9') ++p;
+ while (*p == ' ' || isalpha(*p) != 0) ++p;
+
+ return getarabicnum(p);
+}
+
+
+int getLetterletternum(const char *p)
+{
+ int num = 0, vor = 1;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') { vor = -1; ++p; }
+
+ while (num >= 0)
+ {
+ if (*p >= 'A' && *p <= 'Z') num = (26 * num) + (*p++ - 'A' + 1);
+ else if (*p >= 'a' && *p <= 'z') num = (26 * num) + (*p++ - 'a' + 1);
+ else break;
+ }
+
+ if (num < 0) num = artithmetic_overflow("a/Alph", mem);
+
+ return num * vor;
+}
+
+
+int getRomanromannum(const char *p)
+{
+ int val = 0, nextval, num = 0, vor = 1;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') { vor = -1; ++p; }
+
+ while (*p != '\0' && num >= 0)
+ {
+ if (*p == 'i' || *p == 'I') val = 1;
+ else if (*p == 'v' || *p == 'V') val = 5;
+ else if (*p == 'x' || *p == 'X') val = 10;
+ else if (*p == 'l' || *p == 'L') val = 50;
+ else if (*p == 'c' || *p == 'C') val = 100;
+ else if (*p == 'd' || *p == 'D') val = 500;
+ else if (*p == 'm' || *p == 'M') val = 1000;
+ else break;
+
+ if (*(p+1) == '\0') nextval = 0;
+ else if (*(p+1) == 'i' || *(p+1) == 'I') nextval = 1;
+ else if (*(p+1) == 'v' || *(p+1) == 'V') nextval = 5;
+ else if (*(p+1) == 'x' || *(p+1) == 'X') nextval = 10;
+ else if (*(p+1) == 'l' || *(p+1) == 'L') nextval = 50;
+ else if (*(p+1) == 'c' || *(p+1) == 'C') nextval = 100;
+ else if (*(p+1) == 'd' || *(p+1) == 'D') nextval = 500;
+ else if (*(p+1) == 'm' || *(p+1) == 'M') nextval = 1000;
+ else nextval = 0;
+
+ if (nextval > val) { num = num - val + nextval; ++p; }
+ else num = num + val;
+
+ ++p;
+ }
+
+ if (num < 0) num = artithmetic_overflow("r/Roman", mem);
+
+ return num * vor;
+}
+
+/*--------------------------------------------------------------------------*/
+
+
+int has_o_flow(const char *p)
+{
+ int r = HASNOOFLOW;
+
+ if (isinstr(p, OVERFLOWTXT) == 1) r = HASOFLOW;
+
+ return r;
+}
+
+
+int endnumberline(const char *p, int r)
+{
+ int len = strlen(RELAX);
+
+ while (*p == ' ') ++p;
+ if (*p == '}') ++p;
+ while (strncmp(p, RELAX, len) == 0) p+=len;
+ while (*p == ' ') ++p;
+
+ if (*p != '\0') r = BADNUM;
+
+ return r;
+}
+
+
+/* ALT */
+/* "*\relax " */ /* 1 */
+/* "\dagger \relax " */ /* 2 */
+/* "\ddagger \relax " */ /* 3 */
+/* "\mathchar "278\relax " */ /* 4 */
+/* "\mathchar "27B\relax " */ /* 5 */
+/* "\delimiter "26B30D \relax " */ /* 6 */
+/* "**\relax " */ /* 7 */
+/* "\dagger \dagger \relax " */ /* 8 */
+/* "\ddagger \ddagger \relax " */ /* 9 */
+
+/* NEU */
+/* "*" */ /* 1 */
+/* "\dagger " */ /* 2 */
+/* "\ddagger " */ /* 3 */
+/* "\mathchar "278" */ /* 4 */
+/* "\mathchar "27B" */ /* 5 */
+/* "\delimiter "026B30D " */ /* 6 */
+/* "**" */ /* 7 */
+/* "\dagger \dagger " */ /* 8 */
+/* "\ddagger \ddagger " */ /* 9 */
+
+/* GANZ NEU */
+/* "\ensuremath {*}" */ /* 1 */
+/* "\ensuremath {\dagger }" */ /* 2 */
+/* "\ensuremath {\ddagger }" */ /* 3 */
+/* "\ensuremath {\mathsection }" */ /* 4 */
+/* "\ensuremath {\mathparagraph }" */ /* 5 */
+/* "\ensuremath {\delimiter "026B30D }" */ /* 6 */
+/* "\ensuremath {**}" */ /* 7 */
+/* "\ensuremath {\dagger \dagger }" */ /* 8 */
+/* "\ensuremath {\ddagger \ddagger }" */ /* 9 */
+
+/* NOCH NEUER */
+/* \TextOrMath {\textasteriskcentered }{*} */ /* 1 */
+/* \TextOrMath {\textdagger }{\dagger } */ /* 2 */
+/* \TextOrMath {\textdaggerdbl }{\ddagger } */ /* 3 */
+/* \TextOrMath {\textsection }{\mathsection } */ /* 4 */
+/* \TextOrMath {\textparagraph }{\mathparagraph } */ /* 5 */
+/* \TextOrMath {\textbardbl }{\delimiter "026B30D } */ /* 6 */
+/* \TextOrMath {\textasteriskcentered \textasteriskcentered }{**} */ /* 7 */
+/* \TextOrMath {\textdagger \textdagger }{\dagger \dagger } */ /* 8 */
+/* \TextOrMath {\textdaggerdbl \textdaggerdbl }{\ddagger \ddagger } */ /* 9 */
+
+
+
+int nextsymbolnum(int oldnum, int beginnum)
+{
+ if (oldnum == 0) return beginnum;
+ else return oldnum + 6;
+}
+
+
+int len_tom(const char *p)
+{
+ int len, r = 0;
+
+ if (lcmdcmp(p, TOMFNSYMBOL) == 0)
+ {
+ p += (r=strlen(TOMFNSYMBOL));
+
+ while (*p == ' ') { ++p; ++r; }
+
+ if (*p == '{')
+ {
+ /* erstes Arg von NOCH NEUER */
+ len = nextbracket(p, '{', '}');
+ if (len > 1)
+ { r += len;
+ }
+ else r = 0;
+ }
+ else r = 0;
+ }
+
+ return r;
+}
+
+
+int evalsymbol(int pg, const char *p, const int job)
+{
+ int r = BADNUM, num = 0, len, cmdtyp = 0, cmd = 0, vor = 1;
+ const char *mem;
+
+ while (*p == ' ') ++p;
+
+ if (pg == 1)
+ {
+ if (lcmdcmp(p, NEWFNSYMBOL) == 0)
+ p += strlen(NEWFNSYMBOL);
+ else p += len_tom(p);
+ }
+
+ while (*p == ' ') ++p;
+ if (*p == '{') ++p;
+ mem = p;
+
+ if (*p == '-') { vor = -1; ++p; }
+
+ while (num >= 0)
+ {
+ if ((cmd == 0 || cmd == 6) && cmdtyp < 2 && strncmp(p, "\\delimiter", (len=strlen("\\delimiter"))) == 0)
+ {
+ r = BADNUM; /* folgen muessen \"26B30D oder \"026B30D */
+ cmdtyp = 2; /* cmd == 6 cmd == 6 */
+ }
+ else if ((cmd == 0 || cmd == 6) && cmdtyp == 2 && strncmp(p, "\"26B30D", (len=strlen("\"26B30D"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 6));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 6) && cmdtyp == 2 && strncmp(p, "\"026B30D", (len=strlen("\"026B30D"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 6)); /* ebenfalls */
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 4 || cmd == 5) && cmdtyp < 2 && strncmp(p, "\\mathchar", (len=strlen("\\mathchar"))) == 0)
+ {
+ r = BADNUM; /* folgen muessen \"27B oder \"278 */
+ cmdtyp = 3; /* cmd == 5 cmd == 4 */
+ }
+ else if ((cmd == 0 || cmd == 5) && cmdtyp == 3 && strncmp(p, "\"27B", (len=strlen("\"27B"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 5));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 5) && cmdtyp < 2 && strncmp(p, "\\mathparagraph", (len=strlen("\\mathparagraph"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 5));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 4) && cmdtyp == 3 && strncmp(p, "\"278", (len=strlen("\"278"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 4));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 4) && cmdtyp < 2 && strncmp(p, "\\mathsection", (len=strlen("\\mathsection"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 4));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 3) && cmdtyp < 2 && strncmp(p, "\\ddagger", (len=strlen("\\ddagger"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 3));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 2) && cmdtyp < 2 && strncmp(p, "\\dagger", (len=strlen("\\dagger"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 2));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 1) && cmdtyp < 2 && strncmp(p, "*", (len=strlen("*"))) == 0)
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 1));
+ cmdtyp = 0;
+ }
+ else if (cmdtyp > 0 && *p == ' ') len=1;
+ else break;
+
+ p += len;
+ }
+
+ if (num < 0) num = artithmetic_overflow("fnsymbol", mem);
+
+ r = endnumberline(p, r);
+
+ if (job == CHECKNUM) return r;
+ else return num * vor;
+}
+
+
+int evalroman(const char *p, const int job)
+{
+ int r = BADNUM, num = 0;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') ++p;
+
+ while (*p != '\0')
+ {
+ if ( *p == 'i'
+ || *p == 'v'
+ || *p == 'x'
+ || *p == 'l'
+ || *p == 'c'
+ || *p == 'd'
+ || *p == 'm'
+ )
+ { ++p;
+ r = GOODNUM;
+ }
+ else break;
+ }
+
+ r = endnumberline(p, r);
+
+ if (job != CHECKNUM && r == GOODNUM) num = getRomanromannum(mem);
+
+ if (job == CHECKNUM) return r;
+ else return num;
+}
+
+
+int evalRoman(const char *p, const int job)
+{
+ int r = BADNUM, num = 0, len = strlen(OLDBIGROMAN), vor = 1;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if ( strncmp(p, OLDBIGROMAN, len) == 0
+ || (*p == '-' && strncmp((p+1), OLDBIGROMAN, len) == 0)
+ )
+ {
+ if (*p == '-') { vor = -1; ++p; }
+ p += len;
+ while (*p == ' ') ++p;
+ if (*p == '{')
+ { ++p; /* kleine roem. Zahl, die gross gedruckt wird */
+ if (*p == '}') r = GOODNUM; /* OLDBIGROMAN + " {}" */
+ else
+ r = evalroman(p, CHECKNUM); /* Der job ist in jedem Fall checken */
+ if (vor < 0 && (*p == ' ' || *p == '-')) r = BADNUM;
+ mem = p;
+ }
+ else r = BADNUM;
+ }
+ else
+ {
+ if (*p == '-') ++p;
+
+ while (*p != '\0')
+ {
+ if ( *p == 'I'
+ || *p == 'V'
+ || *p == 'X'
+ || *p == 'L'
+ || *p == 'C'
+ || *p == 'D'
+ || *p == 'M'
+ )
+ { ++p;
+ r = GOODNUM;
+ }
+ else break;
+ }
+
+ r = endnumberline(p, r);
+ }
+
+ if (job != CHECKNUM && r == GOODNUM)
+ { num = getRomanromannum(mem);
+ if (num < 0 && vor < 0) r = BADNUM;
+ }
+
+ if (job == CHECKNUM) return r;
+ else return num * vor; /* vor == -1 von OLDBIGROMAN */
+}
+
+
+int evalarabic(const char *p, const int job)
+{
+ int r = BADNUM, num = 0;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') ++p;
+
+ while (*p != '\0')
+ {
+ if ( *p >= '0'
+ && *p <= '9'
+ )
+ { ++p;
+ r = GOODNUM;
+ }
+ else break;
+ }
+
+ r = endnumberline(p, r);
+
+ if (job != CHECKNUM && r == GOODNUM) num = getarabicnum(mem);
+
+ if (job == CHECKNUM) return r;
+ else return num;
+}
+
+
+int evalletter(const char *p, const int job)
+{
+ int r = BADNUM, num = 0;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') ++p;
+
+ while (*p != '\0')
+ {
+ if ( *p >= 'a'
+ && *p <= 'z'
+ )
+ { ++p;
+ r = GOODNUM;
+ }
+ else break;
+ }
+
+ r = endnumberline(p, r);
+
+ if (job != CHECKNUM && r == GOODNUM) num = getLetterletternum(mem);
+
+ if (job == CHECKNUM) return r;
+ else return num;
+}
+
+
+int evalLetter(const char *p, const int job)
+{
+ int r = BADNUM, num = 0;
+ const char *mem;
+
+ while (*p == ' ') ++p; mem = p;
+
+ if (*p == '-') ++p;
+
+ while (*p != '\0')
+ {
+ if ( *p >= 'A'
+ && *p <= 'Z'
+ )
+ { ++p;
+ r = GOODNUM;
+ }
+ else break;
+ }
+
+ r = endnumberline(p, r);
+
+ if (job != CHECKNUM && r == GOODNUM) num = getLetterletternum(mem);
+
+ if (job == CHECKNUM) return r;
+ else return num;
+}
+
+
+int isinstr(const char *p, const char *s)
+{
+ const char *pp, *ss;
+
+ while (*p != '\0')
+ {
+ pp = p; ss = s;
+ while (*pp == *ss && *pp != '\0') { ++pp; ++ss; }
+ if (*ss == '\0') return 1;
+ ++p;
+ }
+
+ return 0;
+}
+
+
+ /* Typen-Gewichtung nicht mit Abpruef-Reihenfolge verwechseln! */
+ /* Zahl fuer Typen-Gewichtung ist gleichzeitig Typen-Identifizierer. */
+ /* Abpruef-Reihenfolge legen pgnumberweight + fntnumberweight fest, */
+ /* die auch entscheiden, ob etwa DC=600 oder DC=4*3=12 gesehen wird. */
+ /* !! \uppercase{xx} = OLDBIGROMAN gilt NIE als Buchstabenzaehler !! */
+#define INTERNALERR 0
+#define UNUSED 1 /* muss anfuehren (kleinster Wert)! */
+#define NOFOOTNOTE 2
+#define EMPTYNUM 3 /* Alph, alph, Roman, roman, symbol < 1 */
+#define BEGINWEIGHT 4
+int pg_symbol = 4, fn_symbol = 4;
+int pg_smallroman = 5, fn_smallroman = 5;
+int pg_bigroman = 6, fn_bigroman = 6;
+int pg_arabic = 7, fn_arabic = 7;
+int pg_smallletter = 8, fn_smallletter = 8;
+int pg_bigletter = 9, fn_bigletter = 9;
+#define ENDWEIGHT 10
+#define TEXT 10
+#define MISSNUM 11 /* Beschaedigte Zeile */
+#define OVERFLOW 12
+
+int pgnumberweight(const char *p)
+{
+ int r = INTERNALERR; /* primaer i, ii, ..., 1, 2, ..., A, B, *C*, ... */
+
+
+ if ( get_R_pg == BA_TRUE
+ || get_A_pg == BA_TRUE
+ || get_a_pg == BA_TRUE
+ || get_r_pg == BA_TRUE
+ )
+ {
+ if (p == unused) r = UNUSED;
+ else if (p == mydefault) r = MISSNUM;
+ else if (p == nofnt) r = INTERNALERR;
+ else if (*p == '\0') r = EMPTYNUM;
+ else if (has_o_flow(p) == HASOFLOW) r = OVERFLOW;
+ else if (evalarabic(p, CHECKNUM) == GOODNUM) r = pg_arabic;
+ else if (get_R_pg == BA_TRUE && evalRoman (p, CHECKNUM) == GOODNUM) r = pg_bigroman;
+ else if (get_A_pg == BA_TRUE && evalLetter(p, CHECKNUM) == GOODNUM) r = pg_bigletter;
+ else if (get_a_pg == BA_TRUE && evalletter(p, CHECKNUM) == GOODNUM) r = pg_smallletter;
+ else if (get_r_pg == BA_TRUE && evalroman (p, CHECKNUM) == GOODNUM) r = pg_smallroman;
+ else if (evalsymbol(1, p, CHECKNUM) == GOODNUM) r = pg_symbol;
+ else r = TEXT;
+ }
+ else
+ if (EinlROEMseiten == 1)
+ {
+ if (p == unused) r = UNUSED;
+ else if (p == mydefault) r = MISSNUM;
+ else if (p == nofnt) r = INTERNALERR;
+ else if (*p == '\0') r = EMPTYNUM;
+ else if (has_o_flow(p) == HASOFLOW) r = OVERFLOW;
+ else if (evalarabic(p, CHECKNUM) == GOODNUM) r = pg_arabic;
+ else if (evalRoman (p, CHECKNUM) == GOODNUM) r = pg_bigroman;
+ else if (evalLetter(p, CHECKNUM) == GOODNUM) r = pg_bigletter;
+ else if (evalletter(p, CHECKNUM) == GOODNUM) r = pg_smallletter;
+ else if (evalroman (p, CHECKNUM) == GOODNUM) r = pg_smallroman;
+ else if (evalsymbol(1, p, CHECKNUM) == GOODNUM) r = pg_symbol;
+ else r = TEXT;
+ }
+ else
+ {
+ if (p == unused) r = UNUSED;
+ else if (p == mydefault) r = MISSNUM;
+ else if (p == nofnt) r = INTERNALERR;
+ else if (*p == '\0') r = EMPTYNUM;
+ else if (has_o_flow(p) == HASOFLOW) r = OVERFLOW;
+ else if (evalarabic(p, CHECKNUM) == GOODNUM) r = pg_arabic;
+ else if (evalroman (p, CHECKNUM) == GOODNUM) r = pg_smallroman;
+ else if (evalletter(p, CHECKNUM) == GOODNUM) r = pg_smallletter;
+ else if (evalLetter(p, CHECKNUM) == GOODNUM) r = pg_bigletter;
+ else if (evalRoman (p, CHECKNUM) == GOODNUM) r = pg_bigroman;
+ else if (evalsymbol(1, p, CHECKNUM) == GOODNUM) r = pg_symbol;
+ else r = TEXT;
+ }
+
+ /* OLDBIGROMAN + " {}" */
+ if (r == pg_bigroman && evalRoman (p, ANALYZENUM) == 0) r = EMPTYNUM;
+
+ return r;
+}
+
+
+int fntnumberweight(const char *p)
+{
+ int r = INTERNALERR; /* primaer I, II, ..., 1, 2, ..., a, b, *c*, ... */
+
+
+ if ( get_R_fn == BA_TRUE
+ || get_A_fn == BA_TRUE
+ || get_a_fn == BA_TRUE
+ || get_r_fn == BA_TRUE
+ )
+ {
+ if (p == mydefault) r = MISSNUM;
+ else if (p == nofnt) r = NOFOOTNOTE;
+ else if (p == unused) r = INTERNALERR;
+ else if (*p == '\0') r = EMPTYNUM;
+ else if (has_o_flow(p) == HASOFLOW) r = OVERFLOW;
+ else if (evalarabic(p, CHECKNUM) == GOODNUM) r = fn_arabic;
+ else if (get_r_fn == BA_TRUE && evalroman (p, CHECKNUM) == GOODNUM) r = fn_smallroman;
+ else if (get_a_fn == BA_TRUE && evalletter(p, CHECKNUM) == GOODNUM) r = fn_smallletter;
+ else if (get_A_fn == BA_TRUE && evalLetter(p, CHECKNUM) == GOODNUM) r = fn_bigletter;
+ else if (get_R_fn == BA_TRUE && evalRoman (p, CHECKNUM) == GOODNUM) r = fn_bigroman;
+ else if (evalsymbol(0, p, CHECKNUM) == GOODNUM) r = fn_symbol;
+ else r = TEXT;
+ }
+ else
+ if (ALPHmpfootnotes == 1)
+ {
+ if (p == mydefault) r = MISSNUM;
+ else if (p == nofnt) r = NOFOOTNOTE;
+ else if (p == unused) r = INTERNALERR;
+ else if (*p == '\0') r = EMPTYNUM;
+ else if (has_o_flow(p) == HASOFLOW) r = OVERFLOW;
+ else if (evalarabic(p, CHECKNUM) == GOODNUM) r = fn_arabic;
+ else if (evalroman (p, CHECKNUM) == GOODNUM) r = fn_smallroman;
+ else if (evalletter(p, CHECKNUM) == GOODNUM) r = fn_smallletter;
+ else if (evalLetter(p, CHECKNUM) == GOODNUM) r = fn_bigletter;
+ else if (evalRoman (p, CHECKNUM) == GOODNUM) r = fn_bigroman;
+ else if (evalsymbol(0, p, CHECKNUM) == GOODNUM) r = fn_symbol;
+ else r = TEXT;
+ }
+ else
+ {
+ if (p == mydefault) r = MISSNUM;
+ else if (p == nofnt) r = NOFOOTNOTE;
+ else if (p == unused) r = INTERNALERR;
+ else if (*p == '\0') r = EMPTYNUM;
+ else if (has_o_flow(p) == HASOFLOW) r = OVERFLOW;
+ else if (evalarabic(p, CHECKNUM) == GOODNUM) r = fn_arabic;
+ else if (evalRoman (p, CHECKNUM) == GOODNUM) r = fn_bigroman;
+ else if (evalLetter(p, CHECKNUM) == GOODNUM) r = fn_bigletter;
+ else if (evalletter(p, CHECKNUM) == GOODNUM) r = fn_smallletter;
+ else if (evalroman (p, CHECKNUM) == GOODNUM) r = fn_smallroman;
+ else if (evalsymbol(0, p, CHECKNUM) == GOODNUM) r = fn_symbol;
+ else r = TEXT;
+ }
+
+ /* OLDBIGROMAN + " {}" */
+ if (r == fn_bigroman && evalRoman (p, ANALYZENUM) == 0) r = EMPTYNUM;
+
+ return r;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int issonder(const char p)
+{
+ if (p > '\0' && p < ' ') return 1;
+ return 0;
+}
+
+
+ /* Neugewichtung der Ascii-Zeichen 33 und 48 bis 126. */
+
+ /* Im Deutschen werden Zeichen vor Buchstaben und */
+ /* Buchstaben vor Zahlen einsortiert. */
+ /* Im Konfliktfall stehen Kleinbuchstaben vor grossen. */
+
+int bewerten(char zz)
+{
+ switch(zz)
+ {
+ case '\0': return 0;
+
+ case ' ': return 32; /* ASCII 32 \ / normales Leerzeichen */
+ case '~': return 33; /* ASCII 126 / \ geschuetztes Leereichen */
+
+ case '!': return 48; /* ASCII 33 \ */
+ case ':': return 49; /* ASCII 58 | */
+ case ';': return 50; /* ASCII 59 | */
+ case '<': return 51; /* ASCII 60 | */
+ case '=': return 52; /* ASCII 61 | */
+ case '>': return 53; /* ASCII 62 | */
+ case '\?':return 54; /* ASCII 63 | */
+ case '@': return 55; /* ASCII 64 | */
+ case '[': return 56; /* ASCII 91 \ */
+ case ']': return 57; /* ASCII 93 > Zeichen vor Buchstaben */
+ /* / */
+ case '^': return 58; /* ASCII 94 | */
+ case '_': return 59; /* ASCII 95 | */
+ case '`': return 60; /* ASCII 96 | */
+ /* | */
+ case '{': return 61; /* ASCII 123 | */
+ case '|': return 62; /* ASCII 124 | */
+ case '}': return 63; /* ASCII 125 / */
+
+ case 'a': return 64; /* ASCII 97 \ */
+ case 'A': return 65; /* ASCII 65 | */
+ case 'b': return 66; /* ASCII 98 | */
+ case 'B': return 67; /* ASCII 66 | */
+ case 'c': return 68; /* ASCII 99 | */
+ case 'C': return 69; /* ASCII 67 | */
+ case 'd': return 70; /* ASCII 100 | */
+ case 'D': return 71; /* ASCII 68 | */
+ case 'e': return 72; /* ASCII 101 | */
+ case 'E': return 73; /* ASCII 69 | */
+ case 'f': return 74; /* ASCII 102 | */
+ case 'F': return 75; /* ASCII 70 | */
+ case 'g': return 76; /* ASCII 103 | */
+ case 'G': return 77; /* ASCII 71 | */
+ case 'h': return 78; /* ASCII 104 | */
+ case 'H': return 79; /* ASCII 72 | */
+ case 'i': return 80; /* ASCII 105 | */
+ case 'I': return 81; /* ASCII 73 | */
+ case 'j': return 82; /* ASCII 106 | */
+ case 'J': return 83; /* ASCII 74 | */
+ case 'k': return 84; /* ASCII 107 | */
+ case 'K': return 85; /* ASCII 75 | */
+ case 'l': return 86; /* ASCII 108 | */
+ case 'L': return 87; /* ASCII 76 | */
+ case 'm': return 88; /* ASCII 109 | */
+ case 'M': return 89; /* ASCII 77 | */
+ case 'n': return 90; /* ASCII 110 | */
+ case 'N': return 91; /* ASCII 78 | */
+ case 'o': return 92; /* ASCII 111 | */
+ case 'O': return 93; /* ASCII 79 | */
+ case 'p': return 94; /* ASCII 112 \ */
+ case 'P': return 95; /* ASCII 80 > Buchstaben: a, A, ... */
+ case 'q': return 96; /* ASCII 113 / */
+ case 'Q': return 97; /* ASCII 81 | */
+ case 'r': return 98; /* ASCII 114 | */
+ case 'R': return 99; /* ASCII 82 | */
+ case 's': return 100; /* ASCII 115 | */
+ case 'S': return 101; /* ASCII 83 | */
+ case 't': return 102; /* ASCII 116 | */
+ case 'T': return 103; /* ASCII 84 | */
+ case 'u': return 104; /* ASCII 117 | */
+ case 'U': return 105; /* ASCII 85 | */
+ case 'v': return 106; /* ASCII 118 | */
+ case 'V': return 107; /* ASCII 86 | */
+ case 'w': return 108; /* ASCII 119 | */
+ case 'W': return 109; /* ASCII 87 | */
+ case 'x': return 110; /* ASCII 120 | */
+ case 'X': return 111; /* ASCII 88 | */
+ case 'y': return 112; /* ASCII 121 | */
+ case 'Y': return 113; /* ASCII 89 | */
+ case 'z': return 114; /* ASCII 122 | */
+ case 'Z': return 115; /* ASCII 90 / */
+
+ case '0': return 116; /* ASCII 48 \ */
+ case '1': return 117; /* ASCII 49 | */
+ case '2': return 118; /* ASCII 50 | */
+ case '3': return 119; /* ASCII 51 | */
+ case '4': return 120; /* ASCII 52 \ */
+ case '5': return 121; /* ASCII 53 > Zahlen */
+ case '6': return 122; /* ASCII 54 / */
+ case '7': return 123; /* ASCII 55 | */
+ case '8': return 124; /* ASCII 56 | */
+ case '9': return 125; /* ASCII 57 / */
+
+ case '\\':return 126; /* ASCII 92 > Unbekannter Akzent? */
+
+ default : if (issonder(zz) == 1) return zz + 256;
+ return zz;
+ }
+}
+
+
+
+ /* Im Defaultfall werden Zeichen vor Zahlen und */
+ /* Zahlen vor Buchstaben einsortiert. */
+ /* Im Konfliktfall stehen Grossbuchstaben vor kleinen. */
+
+int dcompare(char zz)
+{
+ switch(zz)
+ {
+ case '\0': return 0;
+
+ case ' ': return 32; /* ASCII 32 \ / normales Leerzeichen */
+ case '~': return 33; /* ASCII 126 / \ geschuetztes Leereichen */
+
+ case '!': return 48; /* ASCII 33 \ */
+ case ':': return 49; /* ASCII 58 | */
+ case ';': return 50; /* ASCII 59 | */
+ case '<': return 51; /* ASCII 60 | */
+ case '=': return 52; /* ASCII 61 | */
+ case '>': return 53; /* ASCII 62 | */
+ case '\?':return 54; /* ASCII 63 | */
+ case '@': return 55; /* ASCII 64 | */
+ case '[': return 56; /* ASCII 91 \ */
+ case ']': return 57; /* ASCII 93 > Zeichen vor Zahlen */
+ /* / */
+ case '^': return 58; /* ASCII 94 | */
+ case '_': return 59; /* ASCII 95 | */
+ case '`': return 60; /* ASCII 96 | */
+ /* | */
+ case '{': return 61; /* ASCII 123 | */
+ case '|': return 62; /* ASCII 124 | */
+ case '}': return 63; /* ASCII 125 / */
+
+ case '0': return 64; /* ASCII 48 \ */
+ case '1': return 65; /* ASCII 49 | */
+ case '2': return 66; /* ASCII 50 | */
+ case '3': return 67; /* ASCII 51 | */
+ case '4': return 68; /* ASCII 52 \ */
+ case '5': return 69; /* ASCII 53 > Zahlen vor Buchstaben */
+ case '6': return 70; /* ASCII 54 / */
+ case '7': return 71; /* ASCII 55 | */
+ case '8': return 72; /* ASCII 56 | */
+ case '9': return 73; /* ASCII 57 / */
+
+ case 'A': return 74; /* ASCII 65 \ */
+ case 'a': return 75; /* ASCII 97 | */
+ case 'B': return 76; /* ASCII 66 | */
+ case 'b': return 77; /* ASCII 98 | */
+ case 'C': return 78; /* ASCII 67 | */
+ case 'c': return 79; /* ASCII 99 | */
+ case 'D': return 80; /* ASCII 68 | */
+ case 'd': return 81; /* ASCII 100 | */
+ case 'E': return 82; /* ASCII 69 | */
+ case 'e': return 83; /* ASCII 101 | */
+ case 'F': return 84; /* ASCII 70 | */
+ case 'f': return 85; /* ASCII 102 | */
+ case 'G': return 86; /* ASCII 71 | */
+ case 'g': return 87; /* ASCII 103 | */
+ case 'H': return 88; /* ASCII 72 | */
+ case 'h': return 89; /* ASCII 104 | */
+ case 'I': return 90; /* ASCII 73 | */
+ case 'i': return 91; /* ASCII 105 | */
+ case 'J': return 92; /* ASCII 74 | */
+ case 'j': return 93; /* ASCII 106 | */
+ case 'K': return 94; /* ASCII 75 | */
+ case 'k': return 95; /* ASCII 107 | */
+ case 'L': return 96; /* ASCII 76 | */
+ case 'l': return 97; /* ASCII 108 | */
+ case 'M': return 98; /* ASCII 77 | */
+ case 'm': return 99; /* ASCII 109 | */
+ case 'N': return 100; /* ASCII 78 | */
+ case 'n': return 101; /* ASCII 110 | */
+ case 'O': return 102; /* ASCII 79 | */
+ case 'o': return 103; /* ASCII 111 \ */
+ case 'P': return 104; /* ASCII 80 > Buchstaben: A, a, ... */
+ case 'p': return 105; /* ASCII 112 / */
+ case 'Q': return 106; /* ASCII 81 | */
+ case 'q': return 107; /* ASCII 113 | */
+ case 'R': return 108; /* ASCII 82 | */
+ case 'r': return 109; /* ASCII 114 | */
+ case 'S': return 110; /* ASCII 83 | */
+ case 's': return 111; /* ASCII 115 | */
+ case 'T': return 112; /* ASCII 84 | */
+ case 't': return 113; /* ASCII 116 | */
+ case 'U': return 114; /* ASCII 85 | */
+ case 'u': return 115; /* ASCII 117 | */
+ case 'V': return 116; /* ASCII 86 | */
+ case 'v': return 117; /* ASCII 118 | */
+ case 'W': return 118; /* ASCII 87 | */
+ case 'w': return 119; /* ASCII 119 | */
+ case 'X': return 120; /* ASCII 88 | */
+ case 'x': return 121; /* ASCII 120 | */
+ case 'Y': return 122; /* ASCII 89 | */
+ case 'y': return 123; /* ASCII 121 | */
+ case 'Z': return 124; /* ASCII 90 | */
+ case 'z': return 125; /* ASCII 122 / */
+
+ case '\\':return 126; /* ASCII 92 > Unbekannter Akzent? */
+
+ default : if (issonder(zz) == 1) return zz + 256;
+ return zz;
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int igspstrcmp(const char *p, const char *q)
+{
+ while (1)
+ {
+ while (*p == ' ') ++p;
+ while (*q == ' ') ++q;
+ if (*p == *q && *p != '\0') { ++p; ++q; } else break;
+ }
+
+ return bewerten(*p) - bewerten(*q);
+}
+
+
+int numcmp(const int pg, const int w, const char *p, const char *q)
+{
+ int j = 0;
+
+ if (w == EMPTYNUM) j = 0;
+ else if (w == NOFOOTNOTE) j = 0;
+ else if (w == UNUSED) j = 0;
+ else if (pg == 1 && w == pg_smallroman) j = evalroman (p, ANALYZENUM) - evalroman (q, ANALYZENUM);
+ else if (pg == 0 && w == fn_smallroman) j = evalroman (p, ANALYZENUM) - evalroman (q, ANALYZENUM);
+ else if (pg == 1 && w == pg_bigroman) j = evalRoman (p, ANALYZENUM) - evalRoman (q, ANALYZENUM);
+ else if (pg == 0 && w == fn_bigroman) j = evalRoman (p, ANALYZENUM) - evalRoman (q, ANALYZENUM);
+ else if (pg == 1 && w == pg_arabic) j = evalarabic(p, ANALYZENUM) - evalarabic(q, ANALYZENUM);
+ else if (pg == 0 && w == fn_arabic) j = evalarabic(p, ANALYZENUM) - evalarabic(q, ANALYZENUM);
+ else if (pg == 1 && w == pg_smallletter) j = evalletter(p, ANALYZENUM) - evalletter(q, ANALYZENUM);
+ else if (pg == 0 && w == fn_smallletter) j = evalletter(p, ANALYZENUM) - evalletter(q, ANALYZENUM);
+ else if (pg == 1 && w == pg_bigletter) j = evalLetter(p, ANALYZENUM) - evalLetter(q, ANALYZENUM);
+ else if (pg == 0 && w == fn_bigletter) j = evalLetter(p, ANALYZENUM) - evalLetter(q, ANALYZENUM);
+ else if (pg == 1 && w == pg_symbol) j = evalsymbol(1, p, ANALYZENUM) - evalsymbol(1, q, ANALYZENUM);
+ else if (pg == 0 && w == fn_symbol) j = evalsymbol(0, p, ANALYZENUM) - evalsymbol(0, q, ANALYZENUM);
+ else if (w == TEXT) j = igspstrcmp(p, q);
+ else if (w == MISSNUM) j = 0;
+ else if (w == OVERFLOW) j = 0;
+ else intern_err(2); /* UNKNOWN PAGE-WEIGHT NUMBER */
+
+
+ return j;
+}
+
+
+void QQsort(int left, int right, const int deep, const int deepsort)
+{
+ int i, last, j, l;
+
+ void swap (int, int);
+ if (left >= right) return;
+ swap(left, (left + right)/2);
+ last = left;
+
+ for (i = left + 1; i <= right; i++)
+ {
+ j = 0; l = 0;
+ while (l < deepsort)
+ {
+ if ((j=vergleich(subCptr[l][i], subCptr[l][left])) != 0) break;
+ if ((j=Vergleich(subBptr[l][i], subBptr[l][left])) != 0) break;
+ if ((j=vergleich(subBptr[l][i], subBptr[l][left])) != 0) break;
+ ++l;
+ }
+
+ l = 0;
+ if (j == 0)
+ while (l < deepsort && (j=vergleich(subAptr[l][i], subAptr[l][left])) == 0) ++l;
+
+
+ if (j == 0)
+ j = leval[i] - leval[left];
+
+ if (j == 0)
+ j = pagewgt[i] - pagewgt[left];
+
+ if (j == 0) /* pagewgt[i] == pagewgt[left] */
+ j = numcmp(1, pagewgt[i], subRptr[PAGECOL][i], subRptr[PAGECOL][left]);
+
+ if (j == 0)
+ j = fntwgt[i] - fntwgt[left];
+
+ if (j == 0) /* fntwgt[i] == fntwgt[left] */
+ j = numcmp(0, fntwgt[i], subRptr[FNTCOL][i], subRptr[FNTCOL][left]);
+
+ if (j == 0)
+ j = firstoverlettergan(subRptr[LINECOL][i]) - firstoverlettergan(subRptr[LINECOL][left]);
+
+ if (j == 0)
+ j = secondoverlettergan(subRptr[LINECOL][i]) - secondoverlettergan(subRptr[LINECOL][left]);
+
+ l = deepsort;
+ if (j == 0)
+ while (l < deep && (j=vergleich(subAptr[l][i], subAptr[l][left])) == 0) ++l;
+
+
+ if (j < 0) swap(++last, i);
+ }
+
+
+ swap(left, last);
+ QQsort(left, last - 1, deep, deepsort);
+ QQsort(last + 1, right, deep, deepsort);
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+void swap(int i, int j)
+{
+ char *temp;
+ int l, temi;
+
+ temp = lineptr[i];
+ lineptr[i] = lineptr[j];
+ lineptr[j] = temp;
+
+ temi = pagewgt[i];
+ pagewgt[i] = pagewgt[j];
+ pagewgt[j] = temi;
+
+ temi = fntwgt[i];
+ fntwgt[i] = fntwgt[j];
+ fntwgt[j] = temi;
+
+ temi = dqsort[i];
+ dqsort[i] = dqsort[j];
+ dqsort[j] = temi;
+
+ temi = leval[i];
+ leval[i] = leval[j];
+ leval[j] = temi;
+
+ l = 0;
+ while (l < MAXBACOLS)
+ {
+ temp = subAptr[l][i];
+ subAptr[l][i] = subAptr[l][j];
+ subAptr[l][j] = temp;
+ ++l;
+ }
+
+ l = 0;
+ while (l < MAXBACOLS)
+ {
+ temp = subBptr[l][i];
+ subBptr[l][i] = subBptr[l][j];
+ subBptr[l][j] = temp;
+ ++l;
+ }
+
+ l = 0;
+ while (l < MAXBACOLS)
+ {
+ temp = subCptr[l][i];
+ subCptr[l][i] = subCptr[l][j];
+ subCptr[l][j] = temp;
+ ++l;
+ }
+
+ l = 0;
+ while (l < BAALLRCOLS)
+ {
+ temp = subRptr[l][i];
+ subRptr[l][i] = subRptr[l][j];
+ subRptr[l][j] = temp;
+ ++l;
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int vergleich(const char *a, const char *b)
+{
+ while (*a != '\0' && *a == *b) { ++a; ++b; }
+
+ if (german > 0) return bewerten(*a) - bewerten(*b);
+ else return dcompare(*a) - dcompare(*b);
+}
+
+
+int Vergleich(const char *a, const char *b)
+{
+ while (1)
+ {
+ while (issonder(*a) == 1) ++a;
+ while (issonder(*b) == 1) ++b;
+ if (*a == '\0' || *a != *b) break;
+ ++a; ++b;
+ }
+
+ if (german > 0) return bewerten(*a) - bewerten(*b);
+ else return dcompare(*a) - dcompare(*b);
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int myfgetc(void)
+{
+ int c = fgetc(infile);
+
+ if (c == '\t') c = ' ';
+
+ return c;
+}
+
+
+int ignFRONTSPACESgetline(char s[], int lim)
+{
+ int c,i;
+ i=0;
+ while( (c=myfgetc()) == ' ');
+ if (--lim > 0 && c != EOF && c != '\n')
+ s[i++] = c;
+ while(--lim > 0 && (c=myfgetc()) != EOF && c != '\n')
+ s[i++] = c;
+ if (c == '\n') s[i++] = c;
+ s[i] = '\0';
+ return i;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int LaTeXcmp_endlen(const char *p, const char *s)
+{
+ int len = 0;
+
+ while (*s != '\0' && *s != '\t' && *s == *p)
+ {
+ ++s; ++p; ++len;
+ }
+
+ if (*s == '\t' && isLaTeXcmdletter(*p) == 0)
+ {
+ while (*p == ' ') { ++p; ++len; }
+ }
+ else len = 0;
+
+ return len;
+}
+
+
+int loesche_arg(char s[], const char *p, const char *com, const char op, const char cl)
+{
+ int len, r = 0, reallen;
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ s[r++] = *p++;
+ s[r++] = *p++;
+ }
+ else
+ if ((reallen = LaTeXcmp_endlen(p, com)) > 0)
+ {
+ p += reallen;
+
+ if (*p == '\0') break;
+
+ if (*p == op && (len = nextbracket(p, op, cl)) > 1)
+ {
+ p += len;
+ }
+ else
+ {
+ if (*p == '\\')
+ {
+ ++p;
+ if (isLaTeXcmdletter(*p) != 0)
+ {
+ while (isLaTeXcmdletter(*p) != 0) ++p;
+ while (*p == ' ') ++p;
+ }
+ else if (*p != '\0') ++p;
+ }
+ else
+ {
+ ++p; /* ungeklammerten Einzelbuchstaben loeschen */
+ }
+ }
+ }
+ else
+ {
+ s[r++] = *p++;
+ }
+ }
+ else
+ {
+ s[r++] = *p++;
+ }
+ }
+
+ s[r] = '\0';
+
+ return r;
+}
+
+
+int entkerne_arg(char s[], const char *p, const char *com, const char op, const char cl)
+{
+ int l, r = 0, reallen;
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ s[r++] = *p++;
+ s[r++] = *p++;
+ }
+ else
+ if ((reallen = LaTeXcmp_endlen(p, com)) > 0)
+ {
+ p += reallen;
+
+ if (*p == '\0') break;
+
+ if (*p == op && (l = nextbracket(p, op, cl)) > 1)
+ {
+ ++p;
+ if (*p == ' ')
+ {
+ if (r > 1 && s[r-1] == ' ' && s[r-2] == ' ') --r;
+ s[r++] = '\\';
+ }
+ while (--l > 1) { s[r++] = *p++; }
+ ++p;
+ }
+ else
+ {
+ s[r++] = *p++;
+ }
+ }
+ else
+ {
+ s[r++] = *p++;
+ }
+ }
+ else
+ {
+ s[r++] = *p++;
+ }
+ }
+
+ s[r] = '\0';
+
+ return r;
+}
+
+
+void print_not_tightly_err(const char *p, const char c)
+{
+ int len = strlen(p), sw = 0;
+
+ printf("%%%%\n%%%%> Warning: \'%c\' does not fit tightly after \"", c);
+
+ if (len > 2 && *(p+(len-1)) == c)
+ {
+ ++p; len -= 2;
+ }
+
+ while (len > 30) { --len; ++p; ++sw; }
+
+ if (sw > 0) printf("...");
+ printf("%.*s\".\n", len, p);
+}
+
+
+char *fillsubAptr(const char *p, int len, const char c)
+{
+ char buf[MAXLEN];
+ int i;
+
+ ++p; len -= 2;
+ while (*p == ' ') { ++p; --len; }
+ strcpy(buf, p);
+
+ buf[len] = '\0';
+ if (len > 0 && buf[len-1] == ' ')
+ { i = 2;
+ while (len-i >= 0 && buf[len-i] == ' ') ++i;
+ while (len-i >= 0 && isLaTeXcmdletter(buf[len-i]) != 0) ++i;
+ if (len-i < 0 || buf[len-i] != '\\') print_not_tightly_err(buf, c);
+ }
+ while (len > 0 && buf[len-1] == ' ') --len;
+
+ return strnmalloc(buf, len+1);
+}
+
+
+int form_only(char buf[], char forml, const char *onlycmdp, const char *p)
+{
+ int len;
+
+ if (forml == 'l')
+ {
+ len = loesche_arg(buf, p, onlycmdp, '{', '}');
+ }
+ else
+ if (forml == 'e')
+ {
+ len = entkerne_arg(buf, p, onlycmdp, '{', '}');
+ }
+ else
+ {
+ strcpy(buf, p);
+ len = strlen(buf);
+ if (forml != 'X') intern_err(3); /* unexpected forml in khvo */
+ }
+
+ return len;
+}
+
+
+int innerentry(const char *p, const char *icmdlist[][2], const int num)
+{
+ int l = 0;
+
+ while (l < num)
+ {
+ if (LaTeXcmp_endlen(p, icmdlist[l][0]) > 0) break;
+ ++l;
+ }
+
+ if (l >= num) l = -1;
+ return l;
+}
+
+#define DELSTARARG '='
+#define DELNORMARG '_'
+
+int endofbracks(const char *p, const char fmt[])
+{
+ int l = 0, len = 0, pos;
+
+ while (1)
+ {
+ if (fmt[l] == '\0' || fmt[l+1] == '\0' || fmt[l+2] == '\0') break;
+
+ while (*p == ' ') { ++p; ++len; }
+ if (fmt[l] == '*' && *p != '*') { l += 3; continue; }
+ if (fmt[l] == '*' && *p == '*') { ++p; ++len; }
+ if (fmt[l] == DELSTARARG && *p != '*') { l += 3; continue; }
+ if (fmt[l] == DELSTARARG && *p == '*') { ++p; ++len; }
+ while (*p == ' ') { ++p; ++len; }
+
+ if ((pos=nextbracket(p, fmt[l+1], fmt[l+2])) > 1)
+ {
+ p += pos;
+ len += pos;
+ }
+
+ l += 3;
+ }
+
+ return len;
+}
+
+
+void maxprint(int len, const char *s)
+{
+ char buf[MAXLEN];
+ int buflen = entkerne_IeC(buf, s);
+
+ if (len > 4 && buflen > len) printf("%.*s....", len-4, buf);
+ else printf("%s", buf);
+}
+
+
+void printktiterr(const char *s)
+{
+ printf("%%%% ");
+ maxprint(72, s);
+ printf("\n");
+}
+
+
+ const char *innerVcmd[][2] = {
+ { "\\printonlyvli\t", "+[]_{}:{}*{}!{}" },
+ { "\\printonlyvqu\t", "+[]_{}:{}*{}!{}" },
+ { "\\xprintonlyvli\t", "+[]_{}:{}*{}!{}" },
+ { "\\xprintonlyvqu\t", "+[]_{}:{}*{}!{}" },
+ { "\\vli\t", "+[]_{}:{}*{}!{}" }, /* wegen der */
+ { "\\vqu\t", "+[]_{}:{}*{}!{}" }, /* Fehler- */
+ { "\\xvli\t", "+[]_{}:{}*{}!{}" }, /* behandlung */
+ { "\\xvqu\t", "+[]_{}:{}*{}!{}" }, /* von KTIT */
+ { "\\shadowv\t", "_[]_{}_{}={}_{}" },
+ { "\\addtovli\t", "_[]_{}_{}={}_{}" },
+ { "\\addtovqu\t", "_[]_{}_{}={}_{}" },
+ { "\\xaddtovli\t", "_[]_{}_{}={}_{}" },
+ { "\\xaddtovqu\t", "_[]_{}_{}={}_{}" },
+ { NULL, NULL }};
+ const char *exkv[] = {
+ "\\printonlykli",
+ "\\printonlykqu",
+ "\\xprintonlykli",
+ "\\xprintonlykqu",
+ "\\printonlykli",
+ "\\printonlykqu",
+ "\\xprintonlykli",
+ "\\xprintonlykqu",
+ "\\@shadowba{}",
+ "\\@shadowba{}",
+ "\\@shadowba{}",
+ "\\@shadowba{}",
+ "\\@shadowba{}",
+ NULL };
+#define XVNUM 8
+#define AVNUM 13
+
+
+void get_ktit(char s[], const char *p, const char *com, const char op, const char cl, const int line)
+{
+ int l, reallen, found = 0, r = 0, ll, llen, b = 0, shielded = 0;
+ char buf[MAXLEN], fub[MAXLEN];
+
+ while (*p != '\0')
+ {
+ if (*p == '{' && b > 0)
+ {
+ l = nextbracket(p, '{', '}');
+ ll = 0;
+ while (l-- > 0)
+ {
+ fub[ll++] = *p;
+ buf[b++] = *p++;
+ }
+ fub[ll] = '\0';
+ shielded += num_of_cmds_in_str(fub, com);
+ }
+ else
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\' || *(p+1) == '{')
+ {
+ buf[b++] = *p++; buf[b++] = *p++;
+ }
+ else
+ if ((ll=innerentry(p, innerVcmd, AVNUM)) > -1)
+ {
+ /* inneres v-cmd ueberspringen: dort darf weiteres \\ktit stehen */
+ llen = LaTeXcmp_endlen(p, innerVcmd[ll][0]);
+ p += llen;
+ llen = endofbracks(p, innerVcmd[ll][1]);
+ p += llen;
+ buf[b++] = '<'; buf[b++] = '#'; buf[b++] = '>';
+ }
+ else
+ if ((reallen = LaTeXcmp_endlen(p, com)) > 0)
+ {
+ while (reallen-- > 0) buf[b++] = *p++;
+ ++found;
+
+ if (*p == '\0') break;
+
+ if ((l = nextbracket(p, op, cl)) > 0)
+ {
+ r = 0; /* <= Copy only arg of last \\ktit */
+ if (l == 1)
+ {
+ s[r++] = op;
+ s[r++] = *p; buf[b++] = *p++;
+ s[r++] = cl;
+ }
+ else
+ if (l == 2 && *p == '\\' && *(p+1) != '\0')
+ {
+ if (isLaTeXcmdletter(*(p+1)) == 0);
+ else
+ while (isLaTeXcmdletter(*(p+l)) != 0) ++l;
+ s[r++] = op;
+ while (l-- > 0) { s[r++] = *p; buf[b++] = *p++; }
+ s[r++] = cl;
+ }
+ else
+ {
+ while (l-- > 0)
+ {
+ s[r++] = *p; buf[b++] = *p++;
+ }
+ }
+ }
+ }
+ else buf[b++] = *p++;
+ }
+ else buf[b++] = *p++;
+ }
+
+ s[r] = '\0';
+ buf[b] = '\0';
+
+
+ if (r == 0 || (s[0] == op && s[1] == cl) || (s[0] == op && s[1] == ' ' && s[2] == cl))
+ {
+ if ( strlen(KTITBEG)
+ + strlen(KTITSHA)
+ + strlen(KTITMISS)
+ + strlen(KTITEMPTY)
+ + strlen(KTITEND)
+ > MAXLEN-2
+ )
+ {
+ intern_err(29);
+ }
+ else
+ {
+ strcpy(s, KTITBEG);
+ printf("%%%%\n%%%%> ");
+
+ if (shielded > 0)
+ {
+ printf("Error: %d shadowed { %s } cmd(s), and ...\n%%%% ", shielded, KTIT);
+ strcat(s, KTITSHA);
+ }
+
+ if (found == 0)
+ {
+ printf("Error: Missing");
+ strcat(s, KTITMISS);
+ }
+ else
+ {
+ printf("Warning: Empty");
+ strcat(s, KTITEMPTY);
+ }
+
+ printf(" %s in last arg of *inner v-cmd* (%s-entry %d):\n", KTIT, AUX_SUFFIX, line);
+ printktiterr(buf);
+ strcat(s, KTITEND);
+ }
+ }
+
+ if (found > 1)
+ {
+ printf("%%%%\n%%%%> Warning: %s used %d times in *inner v-cmd* (%s-entry %d):\n", KTIT, found, AUX_SUFFIX, line);
+ printktiterr(buf);
+ }
+
+ if (r > 2 && s[r-1] == cl && s[r-2] == ' ')
+ {
+ l = 3;
+ while (r-l > 1 && s[r-l] == ' ') ++l;
+ while (r-l > 1 && isLaTeXcmdletter(s[r-l]) != 0) ++l;
+ if (s[r-l] != '\\') print_not_tightly_err(s, cl);
+ }
+}
+
+
+int get_add_ktit(const char *p, const int maxktit, const int argno, const int line, const int screen)
+{
+ int reallen, found = 0, ll, llen, b = 0;
+ char buf[MAXLEN];
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ buf[b++] = *p++; buf[b++] = *p++;
+ }
+ else
+ if ((ll=innerentry(p, innerVcmd, AVNUM)) > -1)
+ {
+ /* inneres v-cmd ueberspringen: dort darf weiteres \\ktit stehen */
+ llen = LaTeXcmp_endlen(p, innerVcmd[ll][0]);
+ p += llen;
+ llen = endofbracks(p, innerVcmd[ll][1]);
+ p += llen;
+ buf[b++] = '<'; buf[b++] = '#'; buf[b++] = '>';
+ }
+ else
+ if ((reallen = LaTeXcmp_endlen(p, KTITCMD)) > 0)
+ {
+ while (reallen-- > 0) buf[b++] = *p++;
+ ++found;
+ }
+ else buf[b++] = *p++;
+ }
+ else buf[b++] = *p++;
+ }
+
+ buf[b] = '\0';
+
+ if (screen == 1 && found > maxktit)
+ {
+ printf("%%%%\n%%%%> Warning: ");
+ if (maxktit == 1)
+ printf("%d %s too much", found-1, KTIT);
+ else printf("%d misplaced %s", found, KTIT);
+ printf(" in %s-file (entry %d, arg %d):\n", AUX_SUFFIX, line, argno);
+ printktiterr(buf);
+ }
+
+ return found;
+}
+
+
+void do_innerVstarArg(char ret[], const char *p)
+{
+ const char *starlist[][2] =
+ {
+ { "\\vauthor\t", ":{}:{}" },
+ { "\\midvauthor\t", ":{}:{}" },
+ { NULL, NULL }};
+ const char *exlist[] =
+ {
+ "\\kauthor",
+ "\\midkauthor",
+ NULL
+ };
+ #define VKNUM 2
+
+ int r = 0, l, len, end;
+
+
+ strcpy(ret, p);
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ p += 2; r += 2;
+ }
+ else
+ if ((l=innerentry(p, starlist, VKNUM)) > -1)
+ {
+ len = LaTeXcmp_endlen(p, starlist[l][0]);
+ p += len;
+ end = nextbracket(p, *(starlist[l][1]+1), *(starlist[l][1]+2));
+ if (end == 2 && *p == '\\' && *(p+1) != '\0')
+ {
+ if (isLaTeXcmdletter(*(p+1)) == 0);
+ else
+ while (isLaTeXcmdletter(*(p+end)) != 0) ++end;
+ }
+ p += end;
+ ret[r] = '\0';
+ strcat(ret, exlist[l]);
+ end = llstrlen(exlist[l]);
+ r += end;
+
+ while (*p == ' ') ++p;
+ end = nextbracket(p, *(starlist[l][1]+4), *(starlist[l][1]+5));
+ if (end == 1)
+ {
+ ret[r++] = *(starlist[l][1]+4);
+ ret[r++] = *p++;
+ ret[r++] = *(starlist[l][1]+5);
+ }
+ else
+ if (end == 2 && *p == '\\' && *(p+1) != '\0')
+ {
+ if (isLaTeXcmdletter(*(p+1)) == 0);
+ else
+ while (isLaTeXcmdletter(*(p+end)) != 0) ++end;
+ ret[r++] = *(starlist[l][1]+4);
+ while (end-- > 0) { ret[r++] = *p++; }
+ ret[r++] = *(starlist[l][1]+5);
+ while (*p == ' ') ++p;
+ }
+ else
+ {
+ while (end-- > 0)
+ {
+ ret[r++] = *p++;
+ }
+ }
+ ret[r] = '\0';
+ strcat(ret, p);
+ }
+ else
+ {
+ ++p; ++r;
+ }
+ }
+ else
+ {
+ ++p; ++r;
+ }
+ }
+}
+
+
+int dobracks(char buf[], const char *p, const char fmt[], const int line)
+{
+ int l = 0, len = 0, pos;
+ char ibuf[MAXLEN], obuf[MAXLEN];
+
+ buf[0] = '\0';
+
+ while (1)
+ {
+ if (fmt[l] == '\0' || fmt[l+1] == '\0' || fmt[l+2] == '\0') break;
+
+ while (*p == ' ') { ++p; ++len; }
+ if (fmt[l] == '*' && *p != '*') { l += 3; continue; }
+ if (fmt[l] == '*' && *p == '*') { ++p; ++len; }
+ if (fmt[l] == DELSTARARG && *p != '*') { l += 3; continue; }
+ if (fmt[l] == DELSTARARG && *p == '*') { ++p; ++len; }
+ while (*p == ' ') { ++p; ++len; }
+
+ if ((pos=nextbracket(p, fmt[l+1], fmt[l+2])) > 1)
+ {
+ if (fmt[l] == '!')
+ {
+ mystrncpy(ibuf, p, pos);
+ get_ktit(obuf, ibuf, KTITCMD, KTITOP, KTITCL, line);
+ strcat(buf, obuf);
+ }
+ else
+ if (fmt[l] == '*' || fmt[l] == '+') /* +: \\vautkor => \\kauthor */
+ {
+ mystrncpy(ibuf, p, pos);
+ do_innerVstarArg(obuf, ibuf);
+ if (fmt[l] == '*')
+ strcat(buf, "*"); /* keep fmt[l] */
+ strcat(buf, obuf);
+ }
+ else
+ if (fmt[l] == DELNORMARG || fmt[l] == DELSTARARG)
+ ;
+ else
+ strncat(buf, p, pos);
+
+ p += pos;
+ len += pos;
+ }
+
+ l += 3;
+ }
+
+ return len;
+}
+
+
+int do_innercmd(char ret[], const char *p, const char *icmdlist[][2], const int num, const char *form)
+{
+ char buf[MAXLEN], cbuf[MAXLEN];
+ int r = 0, l, len, end;
+
+ strcpy(ret, p);
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ p += 2; r += 2;
+ }
+ else
+ if ((l=innerentry(p, icmdlist, num)) > -1)
+ {
+ len = LaTeXcmp_endlen(p, icmdlist[l][0]);
+ p += len; r += len;
+ end = endofbracks(p, icmdlist[l][1]);
+ mystrncpy(buf, p, end);
+ p += end;
+ end = do_only(cbuf, form, buf);
+ ret[r] = '\0';
+ strncat(ret, cbuf, end);
+ strcat(ret, p);
+ r += end;
+ }
+ else
+ {
+ ++p; ++r;
+ }
+ }
+ else
+ {
+ ++p; ++r;
+ }
+ }
+
+ return r;
+}
+
+
+int do_innerVcmd(char ret[], const char *p, const char *icmdlist[][2], const int num, const int line)
+{
+ char buf[MAXLEN], cbuf[MAXLEN];
+ const char *err = p;
+ int l, len, end, pos = 0;
+
+ strcpy(ret, p);
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ p += 2; pos += 2;
+ }
+ else
+ if ((l=innerentry(p, icmdlist, num)) > -1)
+ {
+ len = LaTeXcmp_endlen(p, icmdlist[l][0]);
+ p += len;
+ ret[pos] = '\0';
+ if (strlen(ret) + strlen(exkv[l]) < MAXLEN)
+ strcat(ret, exkv[l]); /* Exchange v-cmd => k-cmd; */
+ else { intern_err(4); break; }
+ pos += strlen(exkv[l]);
+ end = dobracks(buf, p, icmdlist[l][1], line);
+ p += end;
+ if (strlen(ret) + strlen(buf) < MAXLEN)
+ strcat(ret, buf);
+ else { intern_err(5); break; }
+ pos += strlen(buf);
+ if (strlen(ret) + strlen(p) < MAXLEN)
+ strcat(ret, p);
+ else { intern_err(6); break; }
+ }
+ else
+ {
+ ++p; ++pos;
+ }
+ }
+ else
+ {
+ ++p; ++pos;
+ }
+ }
+
+ return pos;
+}
+
+
+int do_only(char ret[], const char form[], const char in[])
+{
+ int l = 0, len = 0;
+ char buf[MAXLEN];
+ const char *onlycmd[] = { "\\onlykurz\t",
+ "\\onlyhere\t",
+ "\\onlyvoll\t",
+ "\\onlyout\t",
+ NULL
+ };
+#define KHVONUM 4
+
+
+ if (form[0] == '\0' || strlen(form) != KHVONUM)
+ {
+ intern_err(7); /* len of khvo */
+ strcpy(ret, in);
+ len = strlen(ret);
+ }
+ else
+ {
+ len = form_only(buf, form[l], onlycmd[l], in);
+ ++l;
+ if (l == KHVONUM) strcpy(ret, buf);
+
+ while (l < KHVONUM)
+ {
+ len = form_only(ret, form[l], onlycmd[l], buf);
+ ++l;
+ if (l == KHVONUM) break;
+
+ len = form_only(buf, form[l], onlycmd[l], ret);
+ ++l;
+ if (l == KHVONUM) strcpy(ret, buf);
+ }
+ }
+
+ return len;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+char *standardnum(char a[], char *p)
+{
+ int j, beforenum = 0;
+ char *top = p;
+
+ j = 0; while (j < NUMLEN-1) a[j++] = '0'; a[j] = '\0';
+
+ while (beforenum < NUMLEN-1 && isdigit(*p) != 0)
+ {
+ j = 1; while (j < NUMLEN-1) { a[j-1] = a[j]; ++j; }
+ a[NUMLEN-2] = *p;
+ ++beforenum;
+ ++p;
+
+ if (german == 0)
+ {
+ if ((*p == ',' || *p == ' ') && isdigit(*(p+1)) != 0 && isdigit(*(p+2)) != 0 && isdigit(*(p+3)) != 0 && isdigit(*(p+4)) == 0) ++p;
+ }
+ else
+ {
+ if ((*p == '.' || *p == ' ') && isdigit(*(p+1)) != 0 && isdigit(*(p+2)) != 0 && isdigit(*(p+3)) != 0 && isdigit(*(p+4)) == 0) ++p;
+ }
+ }
+
+ if (german == 0)
+ {
+ if (*p == '.' && isdigit(*(p+1)) != 0)
+ {
+ j = NUMLEN-1; while (j < 2*NUMLEN-1 && isdigit(*(p+1)) != 0) { ++p; a[j++] = *p; }
+ ++p; a[j] = '\0';
+ }
+ }
+ else
+ {
+ if (*p == ',' && isdigit(*(p+1)) != 0)
+ {
+ j = NUMLEN-1; while (j < 2*NUMLEN-1 && isdigit(*(p+1)) != 0) { ++p; a[j++] = *p; }
+ ++p; a[j] = '\0';
+ }
+ }
+
+ if (isdigit(*p) != 0)
+ {
+ printf("%%%%\n%%%%> Warning: Can\'t sort too long number \"%.*s...\".\n", 30, top);
+ while (isdigit(*p) != 0) ++p;
+ }
+
+ return p;
+}
+
+
+int isLaTeXcmdletter(char a)
+{
+ if (isalpha(a) != 0 || a == '@')
+ return 1;
+ return 0;
+}
+
+
+char *setptrtofirstbracket(char *p)
+{
+ while (*p != '\0')
+ {
+ if (*p == '\\' && *(p+1) != '\0') ++p;
+ ++p;
+ if (*p == '{') break;
+ }
+ return p;
+}
+
+
+void ignoreadditionaltext(const char *p, const char *i, const char *f)
+{
+ int ll;
+
+ while(*p == ' ') ++p;
+ if (*p != '\0' && *p != '%')
+ {
+ if (strlen(i) > 58)
+ ll = 0;
+ else ll = 58 - strlen(i);
+ printf("%%%%\n%%%%> Warning: Ignore additional text \"%.*s\"\n", 40, p);
+ printf("%%%% after \"%s\" -> \"%.*s\".\n", i, ll, f);
+ if (*p == '\\')
+ printf("%%%% ** I grap only one \\cmd per line! Fix that, and start me again! **\n");
+ }
+}
+
+
+void telldefault(int rest)
+{
+ printf("%%%% ** Missing %d argument(s). The \'%%\' remains in my output.\n", rest);
+}
+
+
+ const char *innerK_PER_ARQ_cmd[][2] = {
+ { "\\printonlykli\t", ":[]:{}*{}:{}" },
+ { "\\printonlykqu\t", ":[]:{}*{}:{}" },
+ { "\\xprintonlykli\t", ":[]:{}*{}:{}" },
+ { "\\xprintonlykqu\t", ":[]:{}*{}:{}" },
+ { "\\printonlyper\t", ":{}" },
+ { "\\printonlyarq\t", ":[]:{}:{}" },
+ { "\\printonlydefabk\t", ":{}:{}" },
+ { "\\printonlyabkdef\t", ":{}:{}" },
+ { "\\printonlyabk\t", ":{}" },
+ { NULL, NULL }};
+#define INNERTITLES 6
+#define XKPANUM 9
+
+
+int do_inneronly(char ret[], const char in[], const char *vf, const char *kpf)
+{
+ char buf[MAXLEN];
+ int len;
+
+ len = do_innercmd(buf, in, innerVcmd, XVNUM, vf); /* AVNUM unnecessary */
+ len = do_innercmd(ret, buf, innerK_PER_ARQ_cmd, XKPANUM, kpf);
+
+ return len;
+}
+
+
+char *makeAR(char *p, int cols, int rest, char bb, char eb, const char *ident, int linec, int i, char schalt, const char *formO, int ventry)
+{
+ int len, alen;
+ char ibuf[MAXLEN], cbuf[MAXLEN];
+
+ while (*p == ' ') ++p;
+
+ if (*p != bb)
+ { printf("%%%%\n%%%%> %s error in arg %d: Missing \'%c\'.\n", ident, i+cols, bb);
+ telldefault(rest-i);
+ return NULL;
+ }
+ else
+ {
+ if ((len = nextbracket(p, bb, eb)) < 0)
+ { printf("%%%%\n%%%%> %s error in arg %d: Missing \'%c\' after \"%.*s\".\n", ident, i+cols, eb, -len, p);
+ telldefault(rest-i);
+ return NULL;
+ }
+
+ if (schalt == 'A')
+ {
+ /* new in 2.2: Evaluate inner v-cmds in rest of v-cmds as k-cmds! */
+ if (ventry != IS_V && i == VCOLS-1)
+ {
+ /* alloc {li} or {qu} as 4th arg of k-cmds: */
+ alen = mystrncpy(cbuf, p, len);
+ }
+ else
+ {
+ mystrncpy(cbuf, p, len);
+ alen = do_inneronly(ibuf, cbuf, "eell", "leel");
+ alen = do_only(cbuf, formO, ibuf);
+
+ if (ventry == IS_V && i == VCOLS-1)
+ {
+ alen = do_innerVcmd(ibuf, cbuf, innerVcmd, AVNUM, linec+1);
+ strcpy(cbuf, ibuf);
+ get_add_ktit(cbuf, 1, i+cols, linec+1, 1); /* Rest v-cmd: Ein \\ktit erlaubt */
+ }
+ else
+ {
+ if(get_add_ktit(cbuf, 0, i+cols, linec+1, 1) > 0) /* sonst (auch andere Args v-cmd) */
+ { /* get_add_ktit schreibt Fehler!! */
+ if (otherktiterr < i+1) otherktiterr = i+1;
+ }
+ }
+ }
+
+ subAptr[i][linec] = fillsubAptr(cbuf, alen, eb);
+ }
+ else
+ if (schalt == 'R') subRptr[i][linec] = strnmalloc(p+1, len-1);
+ else intern_err(8); /* INTERNAL ERROR (A, R) */
+
+ p += len;
+ }
+
+ return p;
+}
+
+
+void dodqdeepsort(int linec, int alllines, int deepsort)
+{
+ int num;
+
+ while(linec < alllines)
+ {
+ if ( nogsty == 0
+ && userusesdq(deepsort, linec) == 1
+ && (num = getarabicnum(subRptr[DQCOL][linec])) >= MINCATCODE
+ && num <= MAXCATCODE
+ ) dqsort[linec] = num;
+ else dqsort[linec] = ERRCATCODE;
+ ++linec;
+ }
+}
+
+
+void dopgfntnumberweight(int linec, int alllines)
+{
+ while(linec < alllines)
+ {
+ pagewgt[linec] = pgnumberweight(subRptr[PAGECOL][linec]);
+ fntwgt[linec] = fntnumberweight(subRptr[FNTCOL][linec]);
+ ++linec;
+ }
+}
+
+
+int over_fonts(char *p, int start)
+{
+ int i, l, neu = 0;
+
+ const char *fonts[] =
+ {
+ NEWFNSYMBOL, /* start == 0 : footnote = $^{x}$ */
+ "\\rmfamily", /* start == 1 : else = text mode */
+ "\\sffamily",
+ "\\ttfamily",
+ "\\mdseries",
+ "\\bfseries",
+ "\\upshape",
+ "\\itshape",
+ "\\slshape",
+ "\\scshape",
+ "\\em",
+ "\\normalfont",
+ "\\textrm",
+ "\\rm",
+ "\\textsf",
+ "\\sf",
+ "\\texttt",
+ "\\tt",
+ "\\textmd",
+ "\\textbf",
+ "\\bf",
+ "\\textup",
+ "\\textit",
+ "\\it",
+ "\\textsl",
+ "\\sl",
+ "\\textsc",
+ "\\sc",
+ "\\emph",
+ "\\textnormal",
+ "\\bapageframe",
+ "\\pbapageframe",
+ "\\bafootnoteframe",
+ "\\pbafootnoteframe",
+ RELAX,
+ NULL,
+ };
+#define FONTC 35
+
+
+ while(*p == '{' && *(p+1) == '}')
+ {
+ p += 2; neu += 2;
+ while (*p == ' ') { ++p; ++neu; }
+ }
+
+
+ while(*p == '\\')
+ {
+ i = start;
+ l = 0;
+ while (i < FONTC && lcmdcmp(p, fonts[i]) != 0) ++i;
+ if( (i < FONTC && lcmdcmp(p, fonts[i]) == 0 && (l=strlen(fonts[i])) > 0)
+ || (start == 0 && (l=len_tom(p)) > 0)
+ )
+ {
+ p+=l;
+ neu+=l;
+ while (*p == ' ') { ++p; ++neu; }
+ }
+ else if (l == 0) break;
+ }
+
+ return neu;
+}
+
+
+
+void set_inner_number_on_subRptr(char *p, int len, int col, int line, int start)
+{
+ int neu;
+
+ /* start==0: in $^{x}$ kein \ensuremath oder \TextOrMath noetig! */
+ neu = over_fonts(p, start);
+ len -= neu;
+ p += neu;
+
+ while (*p == '{' && len > 2 && nextbracket(p, '{', '}') == len-1)
+ {
+ ++p; len -= 2;
+
+ while (*p == ' ') { ++p; --len; }
+
+ neu = over_fonts(p, start);
+ len -= neu;
+ p += neu;
+ }
+
+ subRptr[col][line] = strnmalloc(p, len);
+}
+
+
+void getbrackets(int linec, int alllines, const char *ident, int deep, int filenum, const char *formO, int ventry)
+{
+ char *p, buf[MAXLEN];
+ int len, i;
+
+ while(linec < alllines)
+ {
+ i = 0; while (i < MAXBACOLS) subAptr[i++][linec] = mydefault;
+ i = 0; while (i < BAALLRCOLS) subRptr[i++][linec] = mydefault;
+ leval[linec] = ACCEPTLINE;
+
+
+ p = lineptr[linec];
+ p = setptrtofirstbracket(p);
+
+ i = 0;
+ while (i < deep)
+ {
+ if ((p = makeAR(p, 1, deep+BARESTCOLS, '{', '}', ident, linec, i, 'A', formO, ventry)) == NULL)
+ {
+ leval[linec] = REJECTLINE;
+ break;
+ }
+ ++i;
+ }
+
+ if (i == deep)
+ {
+ i = 0;
+ while (i < BARESTCOLS)
+ {
+ if ((p = makeAR(p, BARESTCOLS, BARESTCOLS, bareststr[2*i], bareststr[2*i+1], ident, linec, i, 'R', "", ventry)) == NULL)
+ {
+ leval[linec] = REJECTLINE;
+ break;
+ }
+ ++i;
+ }
+ if (p != NULL) ignoreadditionaltext(p, ident, subAptr[0][linec]);
+
+ p = subRptr[PAGEFNTCOL][linec];
+ while (*p == ' ') ++p;
+ if (*p == '{' && (len = nextbracket(p, '{', '}')) > 1)
+ {
+ while (*(p+1) == ' ') { ++p; --len; }
+
+ set_inner_number_on_subRptr(p+1, len-1, PAGECOL, linec, 1);
+
+ p += len;
+ while (*p == ' ') ++p;
+ if (*p == '{' && (len = nextbracket(p, '{', '}')) > 1)
+ {
+ while (*(p+1) == ' ') { ++p; --len; }
+
+ set_inner_number_on_subRptr(p+1, len-1, FNTCOL, linec, 0);
+
+ p += len;
+ while (*p == ' ') ++p;
+ if (*p == '{' && (len = nextbracket(p, '{', '}')) > 1)
+ {
+ while (*(p+1) == ' ') { ++p; --len; }
+ if (*(p+1) == HASUNUCH)
+ {
+ myfree(subRptr[PAGECOL][linec]);
+ subRptr[PAGECOL][linec] = unused; /* UNUSED */
+ }
+ if (*(p+1) != HASFNTCH)
+ {
+ if (*subRptr[FNTCOL][linec] != '\0')
+ printf("%%%%\n%%%%> Warning: Ignore unexpected FNT-num \"%s\".\n", subRptr[FNTCOL][linec]);
+ myfree(subRptr[FNTCOL][linec]);
+ subRptr[FNTCOL][linec] = nofnt; /* NOFOOTNOTE */
+ }
+ if (*(p+1) != '}' && *(p+1) != HASFNTCH && *(p+1) != HASUNUCH)
+ { printf("%%%%\n%%%%> %s warning (part 3 of arg %d):\n", ident, deep+2);
+ printf("%%%% Get no {} or {%c} or {%c}!\n", HASFNTCH, HASUNUCH);
+ }
+ p += len;
+ while (*p == ' ') ++p;
+ if (*p != '\0')
+ { printf("%%%%\n%%%%> %s warning (parts of arg %d):\n", ident, deep+2);
+ printf("%%%% Unexpected text after {page}{footnote}{} number!\n");
+ }
+ }
+ else
+ { printf("%%%%\n%%%%> %s warning (part 3 of arg %d):\n", ident, deep+2);
+ printf("%%%% Get no {} or {%c}!\n", HASFNTCH);
+ }
+ }
+ else
+ { printf("%%%%\n%%%%> %s warning (part 2 of arg %d):\n", ident, deep+2);
+ printf("%%%% Get no {footnote} number!\n");
+ }
+ }
+ else
+ { printf("%%%%\n%%%%> %s warning (all 3 parts of arg %d):\n", ident, deep+2);
+ printf("%%%% Get no {page}{footnote}{} number!\n");
+ }
+ }
+
+ if (filenum > -1)
+ {
+ sprintf(buf, "file %d ", filenum);
+
+ if (firstoverlettergan(subRptr[LINECOL][linec]) > 0)
+ {
+ strncat(buf, subRptr[LINECOL][linec], MAXLEN-strlen(buf)-strlen(subRptr[LINECOL][linec])-1);
+ }
+ else
+ {
+ printf("%%%%\n%%%%> %s error in last arg: No line-number!\n", ident);
+ strncat(buf, ERRINPUTLINENO, MAXLEN-strlen(buf)-ERRINPUTLINENOLEN-1);
+ }
+
+ myfree(subRptr[LINECOL][linec]);
+ subRptr[LINECOL][linec] = strnmalloc(buf, strlen(buf)+1);
+ }
+
+ ++linec;
+ }
+}
+
+ /* ohne Aequivalent in MathMode sind \\b \\c \\k \\d \\H \\t */
+const char *weighttable[][2] = {
+ { "\\.", "" }, /* CTL+A */ /* MARK_POINT */
+ { "\\dot\t", "" },
+ { "\\\'", "" }, /* CTL+B */
+ { "\\acute\t", "" },
+ { "\\`", "" }, /* CTL+C */
+ { "\\grave\t", "" },
+ { "\\^", "" }, /* CTL+D */
+ { "\\hat\t", "" },
+ { "\\ddot\t", "" }, /* CTL+E umlaut */
+ { "\\ij\t", "i" }, /* Niederlaendische */
+ { "\\IJ\t", "I" }, /* Sondersortierung */
+ { "\\=", "" }, /* CTL+F */
+ { "\\bar\t", "" },
+ { "\\vec\t", "" }, /* Ctl+G */
+ { "\\~", " " }, /* CTL+K */ /* MARK_TILDE */
+ { "\\tilde\t", " " },
+ { "\\aa\t", " a" }, /* CTL+L */ /* \\r a \\r A */
+ { "\\AA\t", " A" },
+ { "\\r\t", " " }, /* \\AA \\aa */
+ { "\\mathring\t", " " },
+ { "\\b\t", "" }, /* CTL+N */
+ { "\\c\t", "" }, /* CTL+O */
+ { "\\k\t", "" }, /* CTL+P */ /* rechte Tilde */
+ { "\\d\t", "" }, /* CTL+Q */
+ { "\\H\t", "" }, /* CTL+R */
+ { "\\t\t", "" }, /* CTL+S */
+ { "\\u\t", "" }, /* CTL+T */
+ { "\\breve\t", "" },
+ { "\\v\t", "" }, /* CTL+U */
+ { "\\check\t", "" },
+ { "\\st\t", "" }, /* CTL+V */ /* NEW in 2.2 */
+ { "\\textst\t", "" }, /* NEW in 2.2 */
+ { "\\underline\t", "" }, /* CTL+W */ /* CHANGED in 2.2 */
+ { "\\underbar\t", "" },
+ { "\\ul\t", "" },
+ { "\\textul\t", "" }, /* NEW in 2.2 */
+ { "\\,", " " },
+ { "\\space\t", " " },
+ { "\\pteskip\t", " " }, /* 1\te 000 NEW in 2.2 */
+ { "\\te\t", ". " }, /* != 1000 NEW in 2.2 */
+ { "\\i\t", "i" },
+ { "\\imath\t", "i" },
+ { "\\j\t", "j" },
+ { "\\jmath\t", "j" },
+ { "\\ae\t", "ae" }, /* \ */ /* zweiteilig */
+ { "\\AE\t", "Ae" }, /* | */ /* <=> Oe */
+ { "\\BibArts\t", "BibArts"}, /* | */
+ { "\\pBibArts\t", "BibArts"}, /* | */
+ { "\\textcent\t", "c" }, /* | */
+ { "\\pcopyright\t", "c" }, /* | */
+ { "\\copyright\t", "c" }, /* | */
+ { "\\textcopyright\t", "c" }, /* | */
+ { "\\textcelsius\t", "C" }, /* | */
+ { "\\dh\t", "d" }, /* | */
+ { "\\dj\t", "d" }, /* | */
+ { "\\DH\t", "D" }, /* | */
+ { "\\DJ\t", "D" }, /* | */ /* =\\DH */
+ { "\\texteuro\t", "E" }, /* | */
+ { "\\textflorin\t", "f" }, /* | */
+ { "\\l\t", "l" }, /* | */
+ { "\\ell\t", "l" }, /* | */
+ { "\\Im\t", "I" }, /* | */
+ { "\\L\t", "L" }, /* | */
+ { "\\LaTeX\t", "LaTeX" }, /* | */
+ { "\\ng\t", "n" }, /* | */
+ { "\\NG\t", "N" }, /*CTL_X/Y*/
+ { "\\o\t", "o" }, /* | */
+ { "\\O\t", "O" }, /* | */
+ { "\\oe\t", "oe" }, /* | */
+ { "\\OE\t", "Oe" }, /* | */
+ { "\\textsterling\t", "P" }, /* | */
+ { "\\ppounds\t", "P" }, /* | */
+ { "\\pounds\t", "P" }, /* | */
+ { "\\Re\t", "R" }, /* | */
+ { "\\textregistered\t", "R" }, /* | */
+ { "\\th\t", "th" }, /* | */
+ { "\\TH\t", "Th" }, /* | */
+ { "\\TeX\t", "TeX" }, /* | */
+ { "\\textwon\t", "W" }, /* | */
+ { "\\textyen\t", "Y" }, /* / */
+ { "\\alpha\t", "a" }, /* 28 */
+ { "\\Alpha\t", "A" }, /* bibarts.sty; new in 2.1 */
+ { "\\beta\t", "b" },
+ { "\\Beta\t", "B" }, /* bibarts.sty; new in 2.1 */
+ { "\\chi\t", "ch" },
+ { "\\Chi\t", "Ch" }, /* bibarts.sty; new in 2.1 */
+ { "\\delta\t", "d" },
+ { "\\Delta\t", "D" },
+ { "\\epsilon\t", "e" },
+ { "\\Epsilon\t", "E" }, /* bibarts.sty; new in 2.1 */
+ { "\\varepsilon\t", "e" }, /* 29 */
+ { "\\eta\t", "e" }, /* 30 */
+ { "\\Eta\t", "E" }, /* bibarts.sty; new in 2.1 */
+ { "\\gamma\t", "g" },
+ { "\\Gamma\t", "G" },
+ { "\\iota\t", "i" },
+ { "\\Iota\t", "I" }, /* bibarts.sty; new in 2.1 */
+ { "\\kappa\t", "k" },
+ { "\\Kappa\t", "K" }, /* bibarts.sty; new in 2.1 */
+ { "\\varkappa\t", "k" },
+ { "\\lambda\t", "l" },
+ { "\\Lambda\t", "L" },
+ { "\\mu\t", "m" },
+ { "\\Mu\t", "M" }, /* bibarts.sty; new in 2.1 */
+ { "\\nu\t", "n" },
+ { "\\Nu\t", "N" }, /* bibarts.sty; new in 2.1 */
+ { "\\omicron\t", "o" }, /* bibarts.sty */
+ { "\\Omicron\t", "O" }, /* bibarts.sty; new in 2.1 */
+ { "\\omega\t", "o" },
+ { "\\Omega\t", "O" },
+ { "\\pi\t", "p" },
+ { "\\Pi\t", "P" },
+ { "\\varpi\t", "p" },
+ { "\\phi\t", "ph" },
+ { "\\Phi\t", "Ph" },
+ { "\\varphi\t", "ph" },
+ { "\\psi\t", "ps" },
+ { "\\Psi\t", "Ps" },
+ { "\\rho\t", "r" },
+ { "\\Rho\t", "R" }, /* bibarts.sty; new in 2.1 */
+ { "\\varrho\t", "r" },
+ { "\\sigma\t", "s" },
+ { "\\Sigma\t", "S" },
+ { "\\varsigma\t", "s" },
+ { "\\tau\t", "t" },
+ { "\\Tau\t", "T" }, /* bibarts.sty; new in 2.1 */
+ { "\\theta\t", "th" },
+ { "\\Theta\t", "Th" },
+ { "\\vartheta\t", "th" },
+ { "\\xi\t", "x" },
+ { "\\Xi\t", "X" },
+ { "\\upsilon\t", "y" },
+ { "\\Upsilon\t", "Y" },
+ { "\\zeta\t", "z" },
+ { "\\Zeta\t", "Z" }, /* bibarts.sty; new in 2.1 */
+ { NULL, NULL }};
+#define NLATEX 135
+
+
+const char *udtable[][2] = {
+ { "\\\"a", "a" }, /* \ \"a */
+ { "\\\"o", "o" }, /* | \"o */
+ { "\\\"u", "u" }, /* CTL+E \"u */
+ { "\\\"A", "A" }, /* | \"A */
+ { "\\\"O", "O" }, /* | \"O */
+ { "\\\"U", "U" }, /* | \"U */
+ { "\\ss\t", "s" }, /* \ss */
+ { "\\SS\t", "SS" }, /* \SS */
+ { "\\sz\t", "s" }, /* \sz */ /* new in 2.1 */
+ { "\\SZ\t", "S" }, /* \SZ */ /* new in 2.1 */
+ { "\\flqq\t", "" }, /* \flqq */ /* new in 2.2 */
+ { "\\frqq\t", "" }, /* \frqq */ /* new in 2.2 */
+ { "\\glqq\t", "" }, /* \glqq */ /* new in 2.2 */
+ { "\\grqq\t", "" }, /* \grqq */ /* new in 2.2 */
+ { "\\/", "" }, /* \/ */ /* new in 2.2 */
+ { "\\-", "" }, /* \- */ /* new in 2.2 */
+ { "\\oldhyc\t", "c" }, /* [c-] */ /* \ */
+ { "\\OLDHYC\t", "C" }, /* [C-] */ /* | */
+ { "\\oldhyl\t", "l" }, /* [l-] */ /* | */
+ { "\\OLDHYL\t", "L" }, /* [L-] */ /* | */
+ { "\\oldhym\t", "m" }, /* [m-] */ /* | */
+ { "\\OLDHYM\t", "M" }, /* [M-] */ /* | */
+ { "\\oldhyn\t", "n" }, /* [n-] */ /* | new */
+ { "\\OLDHYN\t", "N" }, /* [N-] */ /* | in */
+ { "\\oldhyp\t", "p" }, /* [p-] */ /* | 2.2 */
+ { "\\OLDHYP\t", "P" }, /* [P-] */ /* | */
+ { "\\oldhyr\t", "r" }, /* [r-] */ /* | */
+ { "\\OLDHYR\t", "R" }, /* [R-] */ /* | */
+ { "\\oldhyt\t", "t" }, /* [t-] */ /* | */
+ { "\\OLDHYT\t", "T" }, /* [T-] */ /* | */
+ { "\\oldhyf\t", "f" }, /* [f-] */ /* | */
+ { "\\OLDHYF\t", "F" }, /* [F-] */ /* / */
+ { "\\hy\t", "-" }, /* MINUS \hy */ /* new in 2.2 */
+ { "\\fhy\t", "-" }, /* MINUS \fhy*/ /* new in 2.2 */
+ { "\\\"", "" }, /* / \" */
+ { "\\3", "s" }, /* \3 */
+ { "\\ck\t", "ck" }, /* [c-k] */ /* new in 2.2 */
+ { "\\CK\t", "CK" }, /* [C-K] */ /* new in 2.2 */
+ { "\\oldhyss\t", "s" }, /* [s-s] */ /* \ */
+ { "\\OLDHYSS\t", "SS" }, /* [S-S] */ /* | new */
+ { "\\newhyss\t", "s" }, /* [-ss] */ /* | in */
+ { "\\NEWHYSS\t", "SS" }, /* [-SS] */ /* | 2.2 */
+ { "\\hyss\t", "s" }, /* [s-s/-ss] */ /* | */
+ { "\\HYSS\t", "SS" }, /* [S-S/-SS] */ /* / */
+ { NULL, NULL }};
+#define NUMTEX 44
+
+
+const char *gstylist[][2] = {
+ { "\"a", NULL }, /* \ "a */
+ { "\"o", NULL }, /* | "o */
+ { "\"u", NULL }, /* CTL+E "u */
+ { "\"A", NULL }, /* | "A */
+ { "\"O", NULL }, /* | "O */
+ { "\"U", NULL }, /* | "U */
+ { "\"s", NULL }, /* "s */
+ { "\"S", NULL }, /* "S */
+ { "\"z", NULL }, /* "z */ /* new in 2.1 */
+ { "\"Z", NULL }, /* "Z */ /* new in 2.1 */
+ { "\"<", NULL }, /* "` */ /* new in 2.2 */
+ { "\">", NULL }, /* "' */ /* new in 2.2 */
+ { "\"`", NULL }, /* "` */ /* new in 2.2 */
+ { "\"\'", NULL }, /* "' */ /* new in 2.2 */
+ { "\"|", NULL }, /* "| */ /* new in 2.2 */
+ { "\"-", NULL }, /* "- */ /* new in 2.2 */
+ { "\"c", NULL }, /* [c-] */ /* \ */
+ { "\"C", NULL }, /* [C-] */ /* | */
+ { "\"l", NULL }, /* [l-] */ /* | */
+ { "\"L", NULL }, /* [L-] */ /* | */
+ { "\"m", NULL }, /* [m-] */ /* | */
+ { "\"M", NULL }, /* [M-] */ /* | */
+ { "\"n", NULL }, /* [n-] */ /* | new */
+ { "\"N", NULL }, /* [N-] */ /* | in */
+ { "\"p", NULL }, /* [p-] */ /* | 2.2 */
+ { "\"P", NULL }, /* [P-] */ /* | */
+ { "\"r", NULL }, /* [r-] */ /* | */
+ { "\"R", NULL }, /* [R-] */ /* | */
+ { "\"t", NULL }, /* [t-] */ /* | */
+ { "\"T", NULL }, /* [T-] */ /* | */
+ { "\"f", NULL }, /* [f-] */ /* | */
+ { "\"F", NULL }, /* [F-] */ /* | */
+ { "\"=", NULL }, /* MINUS "= */ /* new in 2.2 */
+ { "\"~", NULL }, /* MINUS "~ */ /* new in 2.2 */
+ { "\"", NULL }, /* / " */
+ { NULL, NULL }};
+#define NUMGER 35
+
+
+const char *gweight[][2] = {
+ { NULL, "ae" }, /* \ \"a "a */
+ { NULL, "oe" }, /* | \"o "o */
+ { NULL, "ue" }, /* CTL+E \"u "u */
+ { NULL, "Ae" }, /* | \"A "A */
+ { NULL, "Oe" }, /* | \"O "O */
+ { NULL, "Ue" }, /* | \"U "U */
+ { NULL, "ss" }, /* \ss "s */
+ { NULL, "SS" }, /* \SS "S */
+ { NULL, "ss" }, /* \sz "z */ /* new in 2.1 */
+ { NULL, "SS" }, /* \SZ "Z */ /* new in 2.1 */
+ { NULL, "" }, /* \flqq "< */ /* new in 2.2 */
+ { NULL, "" }, /* \frqq "> */ /* new in 2.2 */
+ { NULL, "" }, /* \glqq "` */ /* new in 2.2 */
+ { NULL, "" }, /* \grqq "' */ /* new in 2.2 */
+ { NULL, "" }, /* \/ "| */ /* new in 2.2 */
+ { NULL, "" }, /* \- "- */ /* new in 2.2 */
+ { NULL, "c" }, /* [c-] "c */ /* \ */
+ { NULL, "C" }, /* [C-] "C */ /* | */
+ { NULL, "l" }, /* [l-] "l */ /* | */
+ { NULL, "L" }, /* [L-] "L */ /* | */
+ { NULL, "m" }, /* [m-] "m */ /* | */
+ { NULL, "M" }, /* [M-] "M */ /* | */
+ { NULL, "n" }, /* [n-] "n */ /* | new */
+ { NULL, "N" }, /* [N-] "N */ /* | in */
+ { NULL, "p" }, /* [p-] "p */ /* | 2.2 */
+ { NULL, "P" }, /* [P-] "P */ /* | */
+ { NULL, "r" }, /* [r-] "r */ /* | */
+ { NULL, "R" }, /* [R-] "R */ /* | */
+ { NULL, "t" }, /* [t-] "t */ /* | */
+ { NULL, "T" }, /* [T-] "T */ /* | */
+ { NULL, "f" }, /* [f-] "f */ /* | */
+ { NULL, "F" }, /* [F-] "F */ /* / */
+ { NULL, "-" }, /* MINUS \hy "= */ /* new in 2.2 */
+ { NULL, "-" }, /* MINUS \fhy "~ */ /* new in 2.2 */
+ { NULL, "" }, /* / \" " */
+ { NULL, "ss" }, /* \3 [] */
+ { NULL, "ck" }, /* \ck */ /* new in 2.2 */
+ { NULL, "CK" }, /* \CK */ /* new in 2.2 */
+ { NULL, "ss" }, /* [s-s] */ /* \ */
+ { NULL, "SS" }, /* [S-S] */ /* | new */
+ { NULL, "ss" }, /* [-ss] */ /* | in */
+ { NULL, "SS" }, /* [-SS] */ /* | 2.2 */
+ { NULL, "ss" }, /* [s-s/-ss] */ /* | */
+ { NULL, "SS" }, /* [S-S/-SS] */ /* / */
+ { NULL, NULL }};
+
+
+const char *mweight[][2] = {
+ { NULL, "a" }, /* \ \"a "a */
+ { NULL, "o" }, /* | \"o "o */
+ { NULL, "u" }, /* CTL+E \"u "u */
+ { NULL, "A" }, /* | \"A "A */
+ { NULL, "O" }, /* | \"O "O */
+ { NULL, "U" }, /* | \"U "U */
+ { NULL, "ss" }, /* \ss "s */
+ { NULL, "SS" }, /* \SS "S */
+ { NULL, "ss" }, /* \sz "z */ /* new in 2.1 */
+ { NULL, "SS" }, /* \SZ "Z */ /* new in 2.1 */
+ { NULL, "" }, /* \flqq "< */ /* new in 2.2 */
+ { NULL, "" }, /* \frqq "> */ /* new in 2.2 */
+ { NULL, "" }, /* \glqq "` */ /* new in 2.2 */
+ { NULL, "" }, /* \grqq "' */ /* new in 2.2 */
+ { NULL, "" }, /* \/ "| */ /* new in 2.2 */
+ { NULL, "" }, /* \- "- */ /* new in 2.2 */
+ { NULL, "c" }, /* [c-] "c */ /* \ */
+ { NULL, "C" }, /* [C-] "C */ /* | */
+ { NULL, "l" }, /* [l-] "l */ /* | */
+ { NULL, "L" }, /* [L-] "L */ /* | */
+ { NULL, "m" }, /* [m-] "m */ /* | */
+ { NULL, "M" }, /* [M-] "M */ /* | */
+ { NULL, "n" }, /* [n-] "n */ /* | new */
+ { NULL, "N" }, /* [N-] "N */ /* | in */
+ { NULL, "p" }, /* [p-] "p */ /* | 2.2 */
+ { NULL, "P" }, /* [P-] "P */ /* | */
+ { NULL, "r" }, /* [r-] "r */ /* | */
+ { NULL, "R" }, /* [R-] "R */ /* | */
+ { NULL, "t" }, /* [t-] "t */ /* | */
+ { NULL, "T" }, /* [T-] "T */ /* | */
+ { NULL, "f" }, /* [f-] "f */ /* | */
+ { NULL, "F" }, /* [F-] "F */ /* / */
+ { NULL, "-" }, /* \hy "= */ /* new in 2.2 */
+ { NULL, "-" }, /* \fhy "~ */ /* new in 2.2 */
+ { NULL, "" }, /* / \" " */
+ { NULL, "ss" }, /* \3 [] */
+ { NULL, "ck" }, /* \ck */ /* new in 2.2 */
+ { NULL, "CK" }, /* \CK */ /* new in 2.2 */
+ { NULL, "ss" }, /* [s-s] */ /* \ */
+ { NULL, "SS" }, /* [S-S] */ /* | new */
+ { NULL, "ss" }, /* [-ss] */ /* | in */
+ { NULL, "SS" }, /* [-SS] */ /* | 2.2 */
+ { NULL, "ss" }, /* [s-s/-ss] */ /* | */
+ { NULL, "SS" }, /* [S-S/-SS] */ /* / */
+ { NULL, NULL }};
+
+
+
+int texlistnum(const char *p, int n, const char *list[][2])
+{
+ const char *entry, *line;
+ int i = 0;
+
+ while (i < n)
+ {
+ entry = list[i][0];
+ line = p;
+ while (*line == *entry && *entry != '\0' && *entry != '\t')
+ { ++line; ++entry;
+ }
+ if (*entry == '\0' || (*entry == '\t' && isLaTeXcmdletter(*line) == 0)) break;
+ ++i;
+ }
+
+ if (i == n) return -1;
+ else return i;
+}
+
+
+int insposmaxstr(char s[], const char *p, int pos, int max)
+{
+ while(*p != '\0' && pos < max) s[pos++] = *p++;
+ s[pos] = '\0';
+ return pos;
+}
+
+
+int llstrlen(const char *s)
+{
+ int len = 0;
+
+ while (*s != '\0' && *s != '\t') { ++s; ++len; }
+
+ return len;
+}
+
+
+char *overspacesafterlettercmd(int len, const char *q, char *p)
+{
+ if (len > 0 && isLaTeXcmdletter(*(q+1)) != 0) while (*p == ' ') ++p;
+
+ return p;
+}
+
+
+int insertweight(char in[], int i, int pos, int max)
+{
+ if (german == 1) pos = insposmaxstr(in, gweight[i][1], pos, max);
+ else if (german == 2) pos = insposmaxstr(in, mweight[i][1], pos, max);
+ else pos = insposmaxstr(in, udtable[i][1], pos, max);
+
+ return pos;
+}
+
+
+int nichtvorziehen(char a)
+{
+ if (issonder(a) == 1 && a != '')
+ return 1; /* 31 */
+ return 0;
+}
+
+
+void nzvorziehen(char in[], char *p)
+{
+ int pos = 0, l;
+ char mem;
+
+ while (*p != '\0')
+ {
+ if (nichtvorziehen(*p) == 1)
+ {
+ l = pos;
+ while (nichtvorziehen(*p) == 1) in[l++] = *p++;
+ mem = in[l-1];
+ in[l-1] = in[pos];
+ in[pos] = mem;
+ pos = l;
+ }
+ else in[pos++] = *p++;
+ }
+ in[pos] = '\0';
+}
+
+
+char *austauschen(char in[], char *p, int dqcat)
+{
+ int pos = 0, i, len;
+
+ while (*p != '\0' && pos < MAXLEN-1)
+ {
+ if (*p == '\\') /* "\\\\" ist schon ' ' */
+ {
+ if ((i=texlistnum(p, NUMTEX, udtable)) > -1)
+ { p += (len=llstrlen( udtable[i][0]));
+ pos = insertweight(in, i, pos, MAXLEN-1);
+ p = overspacesafterlettercmd(len, udtable[i][0], p);
+ }
+ else if ((i=texlistnum(p, NLATEX, weighttable)) > -1)
+ { p += (len=llstrlen( weighttable[i][0]));
+ pos = insposmaxstr(in, weighttable[i][1], pos, MAXLEN-1);
+ p = overspacesafterlettercmd(len, weighttable[i][0], p);
+ }
+ else if (*(p+1) == '~') p += 2; /* falls \~ nicht in weighttable */
+ else if (isLaTeXcmdletter(*(p+1)) != 0)
+ { ++p; while (isLaTeXcmdletter(*p) != 0) ++p;
+ while (*p == ' ') ++p;
+ }
+ else
+ {
+ if (issonder(*p) == 0) in[pos++] = *p;
+ ++p;
+ }
+ }
+ else
+ if (*p == '\"' && dqcat == TeXACTIVE) /* nogsty == 0 */
+ {
+ if (*(p+1) == '\"') p += 2; /* "" ist nicht in gstylist */
+ else /* "~ muss in gstylist sein */
+ if ((i=texlistnum(p, NUMGER, gstylist)) > -1)
+ { p += llstrlen( gstylist[i][0]);
+ pos = insertweight(in, i, pos, MAXLEN-1);
+ }
+ else
+ {
+ if (issonder(*p) == 0) in[pos++] = *p;
+ ++p;
+ }
+ }
+ else if (*p == '~') /* MARK_TILDE */
+ {
+ in[pos++] = ' ';
+ ++p;
+ }
+ else
+ {
+ if (issonder(*p) == 0) in[pos++] = *p;
+ ++p;
+ }
+ }
+
+ in[pos] = '\0';
+
+ return in;
+}
+
+
+void kill_unnecessary_spaces(char *s, char *p)
+{
+
+ while (*p == ' ') ++p;
+
+ while (*p != '\0')
+ {
+ if (*p == ' ' && *(p+1) == ' ') ++p;
+ else if (*p == ' ' && *(p+1) == '\0') break;
+ else *s++ = *p++;
+ }
+
+ *s = '\0';
+}
+
+
+void swapBCstrs(const int linec)
+{
+ char *p;
+
+ p = subBptr[0][linec];
+ subBptr[0][linec] = subBptr[1][linec];
+ subBptr[1][linec] = p;
+
+ p = subCptr[0][linec];
+ subCptr[0][linec] = subCptr[1][linec];
+ subCptr[1][linec] = p;
+}
+
+
+static char *teinzerw[] = {
+ "\\u{A}", /* 128 */
+ "\\k{A}", /* 129 */
+ "\\\'C", /* 130 */
+ "\\v{C}", /* 131 */
+ "\\v{D}", /* 132 */
+ "\\v{E}", /* 133 */
+ "\\k{E}", /* 134 */
+ "\\u{G}", /* 135 */
+ "\\\'L", /* 136 */
+ "\\v{L}", /* 137 */
+ "\\L{}", /* 138 */
+ "\\\'N", /* 139 */
+ "\\v{N}", /* 140 */
+ "\\NG{}", /* 141 */
+ "\\H{O}", /* 142 */
+ "\\\'R", /* 143 */
+ "\\v{R}", /* 144 */
+ "\\\'S", /* 145 */
+ "\\v{S}", /* 146 */
+ "\\c{S}", /* 147 */
+ "\\v{T}", /* 148 */
+ "\\c{T}", /* 149 */
+ "\\H{U}", /* 150 */
+ "\\r{U}", /* 151 */
+ "\\\"Y", /* 152 */
+ "\\\'Z", /* 153 */
+ "\\v{Z}", /* 154 */
+ "\\.Z", /* 155 */
+ "\\IJ{}", /* 156 */
+ "\\.I", /* 157 */
+ "\\dj{}", /* 158 */
+ "\\S{}", /* 159 */ /* eigentl. "\\textsection{}" */
+ "\\u{a}", /* 160 */
+ "\\k{a}", /* 161 */
+ "\\\'c", /* 162 */
+ "\\v{c}", /* 163 */
+ "\\v{d}", /* 164 */
+ "\\v{e}", /* 165 */
+ "\\k{e}", /* 166 */
+ "\\u{g}", /* 167 */
+ "\\\'l", /* 168 */
+ "\\v{l}", /* 169 */
+ "\\l{}", /* 170 */
+ "\\\'n", /* 171 */
+ "\\v{n}", /* 172 */
+ "\\ng{}", /* 173 */
+ "\\H{o}", /* 174 */
+ "\\\'r", /* 175 */
+ "\\v{r}", /* 176 */
+ "\\\'s", /* 177 */
+ "\\v{s}", /* 178 */
+ "\\c{s}", /* 179 */
+ "\\v{t}", /* 180 */
+ "\\c{t}", /* 181 */
+ "\\H{u}", /* 182 */
+ "\\r{u}", /* 183 */
+ "\\\"y", /* 184 */
+ "\\\'z", /* 185 */
+ "\\v{z}", /* 186 */
+ "\\.z", /* 187 */
+ "\\ij{}", /* 188 */
+ "!`", /* 189 */ /* eigentl. "\\textexclamdown{}" */
+ "\?`", /* 190 */ /* eigentl. "\\textquestiondown{}" */
+ "\\pounds{}",/* 191 */ /* eigentl. "\\textsterling{}" */
+ "\\`A", /* 192 */
+ "\\\'A", /* 193 */
+ "\\^A", /* 194 */
+ "\\~A", /* 195 */
+ "\\\"A", /* 196 */
+ "\\r{A}", /* 197 */
+ "\\AE{}", /* 198 */
+ "\\c{C}", /* 199 */
+ "\\`E", /* 200 */
+ "\\\'E", /* 201 */
+ "\\^E", /* 202 */
+ "\\\"E", /* 203 */
+ "\\`I", /* 204 */
+ "\\\'I", /* 205 */
+ "\\^I", /* 206 */
+ "\\\"I", /* 207 */
+ "\\DH{}", /* 208 "\\DJ{}", 208 */
+ "\\~N", /* 209 */
+ "\\`O", /* 210 */
+ "\\\'O", /* 211 */
+ "\\^O", /* 212 */
+ "\\~O", /* 213 */
+ "\\\"O", /* 214 */
+ "\\OE{}", /* 215 */
+ "\\O{}", /* 216 */
+ "\\`U", /* 217 */
+ "\\\'U", /* 218 */
+ "\\^U", /* 219 */
+ "\\\"U", /* 220 */
+ "\\\'Y", /* 221 */
+ "\\TH{}", /* 222 */
+ "\\SS{}", /* 223 */
+ "\\`a", /* 224 */
+ "\\\'a", /* 225 */
+ "\\^a", /* 226 */
+ "\\~a", /* 227 */
+ "\\\"a", /* 228 */
+ "\\r{a}", /* 229 */
+ "\\ae{}", /* 230 */
+ "\\c{c}", /* 231 */
+ "\\`e", /* 232 */
+ "\\\'e", /* 233 */
+ "\\^e", /* 234 */
+ "\\\"e", /* 235 */
+ "\\`\\i{}", /* 236 */
+ "\\\'\\i{}", /* 237 */
+ "\\^\\i{}", /* 238 */
+ "\\\"\\i{}", /* 239 */
+ "\\dh{}", /* 240 */
+ "\\~n", /* 241 */
+ "\\`o", /* 242 */
+ "\\\'o", /* 243 */
+ "\\^o", /* 244 */
+ "\\~o", /* 245 */
+ "\\\"o", /* 246 */
+ "\\oe{}", /* 247 */
+ "\\o{}", /* 248 */
+ "\\`u", /* 249 */
+ "\\\'u", /* 250 */
+ "\\^u", /* 251 */
+ "\\\"u", /* 252 */
+ "\\\'y", /* 253 */
+ "\\th{}", /* 254 */
+ "\\ss{}"}; /* 255 */
+
+char *getTONEenc(unsigned char c)
+{
+ if (c >= 128 && c <= 255)
+ return teinzerw[c-128];
+ else return "";
+}
+
+
+void erweitert(char in[], const char *p)
+{
+ int pos = 0;
+
+ if (encode == 1)
+ {
+ while (*p != '\0' && pos < MAXLEN-1)
+ {
+ if (*p < 0) pos = insposmaxstr(in, getTONEenc(upperascii = *p), pos, MAXLEN-1);
+ else in[pos++] = *p;
+ ++p;
+ }
+ }
+ else
+ {
+ while (*p != '\0' && pos < MAXLEN-1)
+ {
+ if (*p > 0) in[pos++] = *p;
+ else upperascii = *p;
+ ++p;
+ }
+ }
+ in[pos] = '\0';
+}
+
+
+const char *transformtable[][2] = {
+ { "\\\\", "[]" },
+ { "\\vspace\t", "{}" },
+ { "\\hspace\t", "{}" },
+ { "\\nosort\t", "{}" },
+ { "\\index\t", "{}" },
+ { "\\glossary\t", "{}" },
+ { "\\label\t", "{}" },
+ { "\\pbalabel\t", "{}" },
+ { "\\balabel\t", "{}" },
+ { "\\pageref\t", "{}" },
+ { "\\pbaref\t", "[]{}" },
+ { "\\baref\t", "[]{}" },
+ { "\\ref\t", "{}" },
+ { "\\linebreak\t", "[]" },
+ { "\\nolinebreak\t", "[]" },
+ { "\\pagebreak\t", "[]" },
+ { "\\nopagebreak\t", "[]" },
+ { "\\footnote\t", "[]{}" },
+ { "\\footnotetext\t", "[]{}" },
+ { "\\footnotemark\t", "[]" },
+ { "\\framebox\t", "[][]" },
+ { "\\makebox\t", "[][]" },
+ { "\\parbox\t", "[]{}" },
+ { "\\raisebox\t", "{}[][]" },
+ { "\\rule\t", "[]{}{}" },
+ { "\\printonlyvqu\t", "[]{}{}*{}{}" }, /* innerVcmd */
+ { "\\vqu\t", "[]{}{}*{}{}" },
+ { "\\printonlyvli\t", "[]{}{}*{}{}" }, /* olny */
+ { "\\vli\t", "[]{}{}*{}{}" },
+ { "\\xprintonlyvqu\t", "[]{}{}*{}{}" }, /* changes */
+ { "\\xvqu\t", "[]{}{}*{}{}" },
+ { "\\xprintonlyvli\t", "[]{}{}*{}{}" }, /* IS_V */
+ { "\\xvli\t", "[]{}{}*{}{}" },
+ { "\\@shadowba\t", "{}" }, /* new. in 2.2 */
+ { "\\shadowv\t", "[]{}{}{}{}" },
+ { "\\addtovli\t", "[]{}{}{}{}" },
+ { "\\addtovqu\t", "[]{}{}{}{}" },
+ { "\\xaddtovli\t", "[]{}{}{}{}" },
+ { "\\xaddtovqu\t", "[]{}{}{}{}" },
+ { "\\printonlykqu\t", "[]{}*{}{}" },
+ { "\\printonlykli\t", "[]{}*{}{}" },
+ { "\\xprintonlykqu\t", "[]{}*{}{}" },
+ { "\\xprintonlykli\t", "[]{}*{}{}" },
+ { "\\shadowk\t", "[]{}{}{}" },
+ { "\\addtokli\t", "[]{}{}{}" },
+ { "\\addtokqu\t", "[]{}{}{}" },
+ { "\\xaddtokli\t", "[]{}{}{}" },
+ { "\\xaddtokqu\t", "[]{}{}{}" },
+ { "\\frac\t", "{}{}" },
+ { "\\vauthor\t", "{}{}" },
+ { "\\midvauthor\t", "{}{}" },
+ { "\\kauthor\t", "{}" },
+ { "\\midkauthor\t", "{}" },
+ { "\\ersch\t", "{}[]{}{}" },
+ { "\\persch\t", "{}[]{}{}" },
+ { "\\printonlyper\t", "{}" },
+ { "\\printonlyarq\t", "[]{}{}" }, /* new in 2.2 */
+ { "\\printonlydefabk\t", "{}{}" }, /* new in 2.2 */
+ { "\\printonlyabkdef\t", "{}{}" }, /* new in 2.2 */
+ { "\\shadowo\t", "{}" },
+ { "\\addtoper\t", "{}" },
+ { "\\shadowt\t", "{}{}" },
+ { "\\addtoarq\t", "{}{}" },
+ { "\\shadowone\t", "{}" },
+ { "\\addtoabk\t", "{}" },
+ { "\\addtogrr\t", "{}" },
+ { "\\addtoprr\t", "{}" },
+ { "\\addtosrr\t", "{}" },
+ { "\\shadowtwo\t", "{}{}" },
+ { "\\fillper\t", "{}{}" },
+ { "\\fillarq\t", "{}{}" },
+ { "\\fillgrr\t", "{}{}" },
+ { "\\fillprr\t", "{}{}" },
+ { "\\fillsrr\t", "{}{}" },
+ { "\\addtodefabk\t", "{}{}" },
+ { "\\addtoabkdef\t", "{}{}" },
+ { "\\errmessage\t", "{}" },
+ { "\\GenericError\t", "{}{}{}{}" },
+ { "\\message\t", "{}" },
+ { "\\typeout\t", "{}" },
+ { "\\mathhexbox\t", "{}{}{}" },
+ { "\\phantom\t", "{}" },
+ { "\\vphantom\t", "{}" },
+ { "\\hphantom\t", "{}" },
+ { "\\showhyphens\t", "{}" },
+ {"\\sethyphenation\t", "{}" },
+ {"\\selectlanguage\t", "{}" },
+ { "\\discretionary\t", "{}{}" },
+ { "\\pstressing\t", "{}" },
+ { "\\stressing\t", "{}" },
+ { "\\pxbibmark\t", "{}{}" }, /* Nur \\p... */
+ { "\\pxbibref\t", "{}" }, /* bearbeiten! */
+ { "\\pbibmark\t", "{}" },
+ { "\\bibmark\t", "{}" },
+ { KURZCMD, "{}" },
+ { "\\delkurz\t", "{}" },
+ { "\\begin\t", "{}" },
+ { "\\end\t", "{}" },
+ { "\\pfordinal\t", "{}" }, /* new in 2.2 */
+ { NULL, NULL }};
+#define NUMTRANSV 99
+
+
+/* Muessen im Bereich von issonder liegen: */
+#define WINGBR 25
+#define ANGUBR 24
+#define ROUNDBR 23
+#define OPTSTAR 22
+
+char *bracketsformward(char *q, char c)
+{
+ if (c == '}') *q = WINGBR;
+ else if (c == ']') *q = ANGUBR;
+ else if (c == ')') *q = ROUNDBR;
+ else intern_err(9); /* BRACKETS LOST */
+ return q;
+}
+
+
+void exchange_v(char *p, const char *bra, int num)
+{
+ int l = 0, la = 0, i = 0, lb = 0, j = 0, k;
+ char buf[MAXLEN], fub[MAXLEN], *lp = p, *anf = p;
+
+ while (*p == ' ') { ++p; ++la; }
+ if ((l=nextbracket(p, *(bra+(3*num+1)), *(bra+(3*num+2)))) > 0)
+ {
+ la += l; while (i < la) buf[i++] = *lp++;
+ p += l;
+ if (*(bra+(3*(num+1))) == '')
+ {
+ while (*p == ' ') { ++p; ++lb; }
+ if ((l=nextbracket(p, *(bra+(3*(num+1)+1)), *(bra+(3*(num+1)+2)))) > 0)
+ {
+ lb += l; while (j < lb) fub[j++] = *lp++;
+ k = 0; while (k < j) *anf++ = fub[k++];
+ k = 0; while (k < i) *anf++ = buf[k++];
+ }
+ }
+ else intern_err(10); /* No formatter Strg+Q after Strg+P */
+ }
+}
+
+
+char *handletransformarg(char *p, const char *bra)
+{
+ int l = 0, num = 0;
+ char *q = p;
+
+ while (*(bra+(3*num)) != '\0' && *q != '\0')
+ {
+ if ('' == *(bra+(3*num)) || '' == *(bra+(3*num)))
+ {
+ while (*q == ' ') ++q;
+ if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
+ q += l;
+ if ('' == *(bra+(3*num)))
+ {
+ while (*q == ' ') ++q;
+ }
+ p = q;
+ }
+ else
+ if ('' == *(bra+(3*num)))
+ {
+ if (*(bra+(3*num+1)) == '' && *(bra+(3*num+2)) == '')
+ {
+ if ((l=nextbracket(q, '(', ')')) < 2 && (l=nextbracket(q, '[', ']')) < 2) l = 0;
+ }
+ else
+ if (*(bra+(3*num+1)) == '' && *(bra+(3*num+2)) == '')
+ {
+ if (*q == '_')
+ {
+ l = 1;
+ while (*(q+l) != '_' && *(q+l) != '\0') ++l;
+ if (*(q+l) == '_') ++l;
+ else if (*(q+l) == '\0') l = 0;
+ }
+ else
+ if (*q == '|')
+ {
+ l = 1;
+ while (*(q+l) != '|' && *(q+l) != '\0') ++l;
+ if (*(q+l) == '|') ++l;
+ else if (*(q+l) == '\0') l = 0;
+ }
+ else l = 0;
+ }
+ else l = 0;
+ q += l;
+ p = q;
+ }
+ else
+ if ('' == *(bra+(3*num)))
+ {
+ while (*q == ' ') ++q;
+ if (*q == '*')
+ {
+ ++q;
+ while (*q == ' ') ++q;
+ if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
+ q += l;
+ p = q;
+ }
+ }
+ else
+ if ('' == *(bra+(3*num)))
+ {
+ while (*q == ' ') ++q;
+ if (*q == '*') ++q;
+ while (*q == ' ') ++q;
+ if (*q != *(bra+(3*num+1)) || (l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
+ q += l;
+ p = q;
+ }
+ else
+ if ('' == *(bra+(3*num)) || '' == *(bra+(3*num)) || '' == *(bra+(3*num)))
+ {
+ if ('' == *(bra+(3*num))) exchange_v(q, bra, num);
+ while (*q == ' ') ++q;
+ if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
+ if (l > 0)
+ {
+ q += l-1;
+ q = bracketsformward(q, *(bra+(3*num+2)));
+ ++q;
+ }
+ }
+ else
+ if ('*' == *(bra+(3*num)))
+ {
+ while (*q == ' ') ++q;
+ if (*q == '*')
+ { *q = OPTSTAR;
+ ++q;
+ while (*q == ' ') ++q;
+ if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
+ if (l > 0)
+ {
+ q += l-1;
+ q = bracketsformward(q, *(bra+(3*num+2)));
+ ++q;
+ }
+ }
+ }
+ ++num;
+ }
+
+ return p;
+}
+
+
+void transformline(char buf[], char *p)
+{
+ int pos = 0, i, l;
+
+ while (*p != '\0' && pos < MAXLEN-2)
+ {
+ if (*p == '\\')
+ {
+ if ((i=texlistnum(p, NUMTRANSV, transformtable)) > -1)
+ {
+ if (*(p+1) == '\\') buf[pos++] = ' ';
+ p += llstrlen(transformtable[i][0]);
+ p = handletransformarg(p, transformtable[i][1]);
+ }
+ else buf[pos++] = *p++;
+ }
+ else
+ if (issonder(*p) == 1)
+ {
+ if (*p == OPTSTAR);
+ else
+ {
+ if (*p == WINGBR) buf[pos++] = '}';
+ else if (*p == ANGUBR) buf[pos++] = ']';
+ else if (*p == ROUNDBR) buf[pos++] = ')';
+ else intern_err(11); /* unknown bracket symbol */
+ buf[pos++] = ' ';
+ }
+ ++p;
+ while (*p == ' ') ++p;
+ }
+ else buf[pos++] = *p++;
+ }
+
+ buf[pos] = '\0';
+}
+
+
+void nosondercpy(char *s, const char *p)
+{
+ while (*p != '\0')
+ { if (issonder(*p) == 0) *s++ = *p;
+ ++p;
+ }
+ *s = '\0';
+}
+
+
+const char *overbago(const char *s)
+{
+ const char *p = s;
+ int got = 0;
+
+ if (bago > 0)
+ {
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\')
+ {
+ ++p;
+ }
+ else
+ if (lcmdcmp(p, BAGOCMD) == 0)
+ {
+ p+=strlen(BAGOCMD);
+ while (*p == ' ') ++p;
+ got = 1;
+ break;
+ }
+ }
+ ++p;
+ }
+ }
+
+ if (got == 0) return s;
+ return p;
+}
+
+
+void vorbereiten(int linec, int alllines, int deepsort, int ventry)
+{
+ char *p, in[MAXLEN], out[MAXLEN], num[2*NUMLEN], last, buf[MAXLEN];
+ int pos, i, l;
+
+ /* dqsort geht bis zur Tiefe deepsort, nicht deep */
+
+ while (linec < alllines)
+ {
+ i = 0; while (i < MAXBACOLS) subBptr[i++][linec] = mydefault;
+ i = 0; while (i < MAXBACOLS) subCptr[i++][linec] = mydefault;
+
+
+ i = 0;
+ while (i < deepsort)
+ {
+ nosondercpy ( in, overbago(subAptr[i][linec]));
+ transformline(buf, in); /* veraendert zweites Arg! */
+ erweitert ( in, buf);
+ p = austauschen(buf, in, dqsort[linec]);
+
+
+ pos = 0; last = '\0';
+ while (*p != '\0' && pos < MAXLEN-1)
+ {
+ if ( isalpha (*p) != 0
+ || issonder(*p) == 1
+ || *p == ' '
+ || *p == '-'
+ || (*p == '.' && registpoints == 1) /* nur zusammen mit MARK_POINT */
+ )
+ {
+ if (*p == ' ' && ignorespaces == 1)
+ {
+ if (pos > 0 && out[pos-1] == '') --pos;
+ out[pos] = ''; /* 31 */
+ }
+ else
+ if (*p == '-') /* MINUS */
+ {
+ out[pos] = ''; /* 31 */
+ if (hy_as_space == 1 && pos < MAXLEN-2)
+ out[++pos] = ' ';
+ }
+ else out[pos] = *p;
+
+ ++pos;
+ }
+ else
+ if (isdigit(*p) != 0 && last != '\\')
+ {
+ p = standardnum(num, p);
+ out[pos] = '\0';
+ strncat(out, num, MAXLEN-strlen(out)-1);
+ pos = strlen(out);
+ --p;
+ }
+
+ last = *p;
+ ++p;
+ }
+
+ out[pos] = '\0';
+
+ kill_unnecessary_spaces(in, out);
+
+ nzvorziehen(out, in);
+
+ subBptr[i][linec] = strnmalloc(out, strlen(out)+1);
+
+ pos = 0;
+ l = 0;
+ while (out[pos] != '\0')
+ {
+ if (issonder(out[pos]) == 0)
+ {
+ in[l] = toupper(out[pos]);
+ if (igleichj == 1 && in[l] == 'I') in[l] = 'J';
+ ++l;
+ }
+ ++pos;
+ }
+ subCptr[i][linec] = strnmalloc(in, l+1);
+
+ ++i;
+ }
+
+ if (ventry == IS_V && *subAptr[0][linec] == '\0') swapBCstrs(linec);
+
+ ++linec;
+ }
+}
+
+
+int isvintroduced(int i)
+{
+ const char *p = subRptr[STUFFRCOL][i];
+
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ ++p;
+ while (*p == ' ') ++p;
+
+ if (*p == KENTRYCH)
+ {
+ ++p;
+ while (*p == ' ') ++p;
+
+ if (*p == '}') return KENTRY;
+ }
+
+ if (*p == VENTRYCH)
+ {
+ ++p;
+ while (*p == ' ') ++p;
+
+ if (*p == '}') return VENTRY;
+ }
+ }
+ }
+ }
+
+ return ERRENTRY;
+}
+
+
+int getthirdnum(int i)
+{
+ const char *p = subRptr[STUFFRCOL][i];
+
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ ++p;
+ while (*p == ' ') ++p;
+
+ return getarabicnum(p);
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+int notfirstaccepted(int line)
+{
+ int r = 0, acceptbefore = 0;
+
+ while(r < line)
+ { if (leval[r] == ACCEPTLINE) { ++acceptbefore; break; }
+ ++r;
+ }
+
+ return acceptbefore;
+}
+
+
+void dofourtharg(int line)
+{
+ const char *p = subRptr[STUFFRCOL][line];
+ int l = 0;
+
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ p += nextbracket(p, '{', '}');
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ l = nextbracket(p, '{', '}');
+
+ if (l > 2)
+ {
+ ++p; l -= 2;
+ while (*p == ' ') { ++p; --l; };
+
+ if (l > 0)
+ {
+ fprintf(outfile, " %.*s\n %%%% <- Your extra-command(s)", l, p);
+ if (notfirstaccepted(line) == 0)
+ fprintf(outfile, " before the 1st item");
+ fprintf(outfile, ".\n");
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
+
+
+void getfirsttwoargs(char *s, const char *p)
+{
+ int len;
+
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ if ((len=nextbracket(p, '{', '}')) < MAXLEN-1)
+ {
+ while(len-- > 0) *s++ = *p++;
+
+ while (*p == ' ') ++p;
+
+ if (*p == '{')
+ {
+ if (len + (len=nextbracket(p, '{', '}')) < MAXLEN-1)
+ {
+ while(len-- > 0) *s++ = *p++;
+ }
+ }
+ }
+ }
+ *s = '\0';
+}
+
+
+int baidxloop(int cloop, const char *p)
+{
+ cloop += fprintf(outfile, "%s", p);
+
+ if (cloop > BAINDEXLEN)
+ {
+ fprintf(outfile, "%s", BAINDEXEND);
+ fprintf(outfile, "%s", BAINDEXFOLL); /* neustart cloop */
+ cloop = CLOOPBSTART;
+ }
+
+ return cloop;
+}
+
+
+char *negnum(char *p)
+{
+ if (*p == '-') return "\\,";
+ return "";
+}
+
+
+int printipagefnt(const char *arraysep, int begin, int end, int lasti, int cloop)
+{
+ int fnc, pnc;
+
+ if ( lasti > -1
+ && pagewgt[begin] == pagewgt[lasti]
+ && numcmp(1, pagewgt[begin], subRptr[PAGECOL][lasti], subRptr[PAGECOL][begin]) == 0
+ )
+ {
+ cloop += fprintf(outfile, "$^{,}$");
+ cloop = baidxloop(cloop, BS_SPACE);
+ }
+ else
+ {
+ cloop = baidxloop(cloop, arraysep);
+ if (pagewgt[begin] == MISSNUM) cloop += fprintf(outfile, "{%s}", MISSINGSYMB);
+ else if (pagewgt[begin] == EMPTYNUM) cloop += fprintf(outfile, "%s", EMPTYSYMB);
+ else if (pagewgt[begin] == OVERFLOW) cloop += fprintf(outfile, "%s", OVERFLOWSYMB);
+ else if (pagewgt[begin] == INTERNALERR) intern_err(12); /* Bad pageno */
+ else if (pagewgt[begin] == UNUSED) intern_err(13); /* Unused pageno */
+ else if (pagewgt[begin] == TEXT) cloop += fprintf(outfile, "%s%s%s", TEXTSYMBOPEN[notext], subRptr[PAGECOL][begin], TEXTSYMBCLOSE[notext]);
+ else cloop += fprintf(outfile, "%s", subRptr[PAGECOL][begin]);
+ }
+
+ if (end > begin)
+ {
+ fnc = numcmp(0, fntwgt[begin], subRptr[FNTCOL][end], subRptr[FNTCOL][begin]);
+ pnc = numcmp(1, pagewgt[begin], subRptr[PAGECOL][end], subRptr[PAGECOL][begin]);
+
+ if (fnc == 1)
+ {
+ if (pnc > 0)
+ {
+ cloop += fprintf(outfile, "$^{%s}$", subRptr[FNTCOL][begin]);
+ cloop = baidxloop(cloop, BANCOMMA);
+ }
+ else
+ {
+ cloop += fprintf(outfile, "$^{%s}$$^{,}$", subRptr[FNTCOL][begin]);
+ cloop = baidxloop(cloop, BS_SPACE);
+ }
+
+ if (pnc > 0)
+ {
+ cloop += fprintf(outfile, "%s$^{", subRptr[PAGECOL][end]);
+ }
+ else
+ {
+ cloop += fprintf(outfile, "$^{");
+ }
+ }
+ else
+ if (fnc > 1)
+ {
+ if (pnc > 0)
+ {
+ cloop += fprintf(outfile, "$^{%s}$--%s%s$^{", subRptr[FNTCOL][begin], negnum(subRptr[PAGECOL][end]), subRptr[PAGECOL][end]);
+ }
+ else
+ {
+ cloop += fprintf(outfile, "$^{%s-", subRptr[FNTCOL][begin]);
+ }
+ }
+ else
+ if ( fntwgt[end] != INTERNALERR
+ && fntwgt[end] != NOFOOTNOTE
+ )
+ cloop += fprintf(outfile, "$^{");
+ }
+ else cloop += fprintf(outfile, "$^{");
+
+ if ( fntwgt[end] == MISSNUM) cloop += fprintf(outfile, "%s}$", MISSINGSYMB);
+ else if ( fntwgt[end] == EMPTYNUM) cloop += fprintf(outfile, "%s}$", EMPTYSYMB);
+ else if ( fntwgt[end] == OVERFLOW) cloop += fprintf(outfile, "%s}$", OVERFLOWSYMB);
+ else if ( fntwgt[end] == INTERNALERR) intern_err(14); /* Bad fntno */
+ else if ( fntwgt[end] == NOFOOTNOTE) intern_err(15); /* That is not a footnote */
+ else if ( fntwgt[end] == TEXT) cloop += fprintf(outfile, "%s%s%s}$", TEXTSYMBOPEN[notext], subRptr[FNTCOL][end], TEXTSYMBCLOSE[notext]);
+ else cloop += fprintf(outfile, "%s%s}$", negnum(subRptr[FNTCOL][end]), subRptr[FNTCOL][end]);
+
+ return cloop;
+}
+
+
+int printipage(const char *arraysep, int begin, int end, int cloop)
+{
+ int pnc;
+
+ cloop = baidxloop(cloop, arraysep);
+ if (pagewgt[begin] == MISSNUM) cloop += fprintf(outfile, "{%s}", MISSINGSYMB);
+ else if (pagewgt[begin] == EMPTYNUM) cloop += fprintf(outfile, "%s", EMPTYSYMB);
+ else if (pagewgt[begin] == OVERFLOW) cloop += fprintf(outfile, "%s", OVERFLOWSYMB);
+ else if (pagewgt[begin] == TEXT) cloop += fprintf(outfile, "%s%s%s", TEXTSYMBOPEN[notext], subRptr[PAGECOL][begin], TEXTSYMBCLOSE[notext]);
+ else cloop += fprintf(outfile, "%s", subRptr[PAGECOL][begin]);
+
+ if (end > begin)
+ {
+ pnc = numcmp(1, pagewgt[begin], subRptr[PAGECOL][end], subRptr[PAGECOL][begin]);
+ if (pnc == 1)
+ {
+ cloop = baidxloop(cloop, BANCOMMA);
+ cloop += fprintf(outfile, "%s", subRptr[PAGECOL][end]);
+ }
+ else if (pnc > 1)
+ {
+ cloop += fprintf(outfile, "--%s%s", negnum(subRptr[PAGECOL][end]), subRptr[PAGECOL][end]);
+ }
+ }
+
+ return cloop;
+}
+
+
+void makeipagefnt(int i, int line, int end)
+{
+ int begblock, lasti = -1, j, k, cloop = CLOOPASTART;
+ char *asfirst = "";
+ char *assecond = BANCOMMA;
+ char *arraysep = asfirst;
+
+
+ while (i <= end && pagewgt[i] == UNUSED) ++i;
+
+
+ if (i <= end)
+ {
+
+ while (i <= end)
+ {
+ if (cloop == CLOOPASTART)
+ {
+ fprintf(outfile, "%s", BAINDEXFIRS); /* Erststart cloop */
+ cloop = CLOOPBSTART;
+ }
+ else
+ if (cloop == CLOOPBSTART) intern_err(16);
+
+ begblock = i;
+
+ if (fntwgt[i] == NOFOOTNOTE) /* Seiten ohne FNTs */
+ {
+ while (i < end)
+ {
+ if ( fntwgt[i] == NOFOOTNOTE
+ && fntwgt[i+1] == NOFOOTNOTE
+ && pagewgt[i] != MISSNUM
+ && pagewgt[i] == pagewgt[i+1]
+ && ( (pagewgt[i] == TEXT && strcmp(subRptr[PAGECOL][i], subRptr[PAGECOL][i+1]) == 0)
+ || (pagewgt[i] != TEXT && ((j=numcmp(1, pagewgt[i], subRptr[PAGECOL][i+1], subRptr[PAGECOL][i])) == 0 || j == 1))
+ )
+ ) ++i;
+ else break;
+ }
+ cloop = printipage(arraysep, begblock, i, cloop);
+ lasti = -1;
+ }
+ else /* Seiten mit FNTs */
+ {
+ while (i < end)
+ {
+ k = -1;
+ if ( fntwgt[i] != NOFOOTNOTE
+ && pagewgt[i] != MISSNUM
+ && pagewgt[i] == pagewgt[i+1]
+ && ( (pagewgt[i] == TEXT && strcmp(subRptr[PAGECOL][i], subRptr[PAGECOL][i+1]) == 0)
+ || (pagewgt[i] != TEXT && ((k=numcmp(1, pagewgt[i], subRptr[PAGECOL][i+1], subRptr[PAGECOL][i])) == 0 || (k == 1 && FntIndexOverPages == 1)))
+ )
+ && fntwgt[i] != MISSNUM
+ && fntwgt[i] == fntwgt[i+1]
+ && ( ( fntwgt[i] == TEXT && (k == 0 || pagewgt[i] == TEXT)
+ && strcmp(subRptr[ FNTCOL][i], subRptr[ FNTCOL][i+1]) == 0)
+ || ( fntwgt[i] != TEXT && (((j=numcmp(0, fntwgt[i], subRptr[ FNTCOL][i+1], subRptr[ FNTCOL][i])) == 0 && k == 0) || j == 1))
+ )
+ ) ++i;
+ else break;
+ }
+ cloop = printipagefnt(arraysep, begblock, i, lasti, cloop);
+ lasti = i;
+ }
+
+ ++i;
+ arraysep = assecond;
+ }
+
+ fprintf(outfile, "%s", BAINDEXEND);
+ }
+}
+
+
+void makeindex(const int nlines, const int line, const int deepsort)
+{
+ int i, j, begin, end;
+
+ i = line;
+ while (i > 0 && leval[i-1] != REJECTLINE)
+ {
+ j = 0;
+ while (j < deepsort && texcmp(subAptr[j][i], subAptr[j][i-1], dqsort[i], dqsort[i-1]) == 0) ++j;
+ if (j < deepsort) break;
+ --i;
+ }
+ begin = i;
+
+ i = line;
+ while (i < nlines-1 && leval[i+1] != REJECTLINE)
+ {
+ j = 0;
+ while (j < deepsort && texcmp(subAptr[j][i], subAptr[j][i+1], dqsort[i], dqsort[i+1]) == 0) ++j;
+ if (j < deepsort) break;
+ ++i;
+ }
+ end = i;
+
+ makeipagefnt(begin, line, end);
+}
+
+
+void printsortline(int line, int deepsort)
+{
+ int l = 0;
+
+ if (deepsort > 0)
+ {
+ fprintf(outfile, " %s", METALINEHEAD);
+
+ while (l < deepsort)
+ {
+ fprintf(outfile, " (%s)", subBptr[l][line]);
+ ++l;
+ }
+
+ fprintf(outfile, "\n");
+ }
+}
+
+
+void del_ktitintro(char *s)
+{
+ while(*s != '\0')
+ {
+ if (*s == KTITINTROCH)
+ {
+ if (*(s+1) != '\0')
+ {
+ *s++ = KTITERRORCH; /* "????" is possible here, */
+ *s++ = KTITERRORCH; /* whereas BibArts prints "??" */
+ }
+ else
+ {
+ intern_err(30);
+ break;
+ }
+ }
+ else ++s;
+ }
+}
+
+
+int writetheline(char *p, const int nlines, const int line, const int deepsort, int filec, int printsort, int kandkused, int oktitused)
+{
+ int doprint = 0, pagenum = 0, fntnum = 0, uu = 0, tn = getthirdnum(line), j, ok, ie, sha, tha, uha, oerr;
+
+ if (*p != '%')
+ { if (leval[line] != ACCEPTLINE)
+ *p = '%';
+ intern_err(17); /* LINE WITHOUT \'%%\' */
+ }
+
+
+ if (leval[line] == ACCEPTLINE)
+ {
+ j = line-1;
+ while (j > 0 && leval[j] != ACCEPTLINE) --j;
+ if ( j < 0
+ || (leval[j] == ACCEPTLINE && *subCptr[0][j] != *subCptr[0][line])
+ || (leval[j] != ACCEPTLINE)
+ )
+ {
+ if (leval[j] != ACCEPTLINE && j != 0) intern_err(18); /* misplaced PREPARESPACE/PREPAREHEAD */
+
+ if (isalpha(*subCptr[0][line]) != 0)
+ {
+ fprintf(outfile, "\n\n");
+ if (line > 0 && leval[j] == ACCEPTLINE)
+ fprintf(outfile, "%s\n", PREPARESPACE);
+ fprintf(outfile, "%s{%c}\n\n", PREPAREHEAD, *subCptr[0][line]);
+ }
+ else if (line > 0 && isdigit(*subCptr[0][line]) != 0)
+ {
+ fprintf(outfile, "\n\n%s\n", PREPARESPACE);
+ fprintf(outfile, "%s\n\n", PREPAREXSPACE);
+ }
+ }
+ }
+
+
+ if (leval[line] == ACCEPTLINE) { doprint = 1; ++p; }
+ else if (leval[line] == REJECTLINE) { doprint = 2; }
+ else if (leval[line] == DOUBLELINE) { doprint = 0; /* *p = '!'; */ }
+ else if (leval[line] == DIFFERLINE) { doprint = 4; /* *p = ':'; */ }
+ else if (leval[line] == UNDEFILINE) { doprint = 5; /* *p = '*'; */ }
+ else if (leval[line] == REDEF1LINE) { doprint = 6; }
+ else if (leval[line] == REDEF2LINE) { doprint = 7; }
+ else if (leval[line] == ABBREVLINE) { doprint = 0; /* *p = '+'; */ }
+ else intern_err(19); /* UNKNOWN WRITELINES-leval */
+
+ if (pagewgt[line] == EMPTYNUM) pagenum = 1;
+ else if (pagewgt[line] == MISSNUM) pagenum = 2;
+ else if (pagewgt[line] == TEXT) pagenum = 3;
+ else if (pagewgt[line] == OVERFLOW) pagenum = 4;
+
+ if (pagewgt[line] == UNUSED) uu = 1;
+
+ if ( fntwgt[line] == EMPTYNUM) fntnum = 1;
+ else if ( fntwgt[line] == MISSNUM) fntnum = 2;
+ else if ( fntwgt[line] == TEXT) fntnum = 3;
+ else if ( fntwgt[line] == OVERFLOW) fntnum = 4;
+
+
+ if (tn > 0 && doprint == 1 && leval[line] == ACCEPTLINE) dofourtharg(line);
+
+ if (doprint == 2) fprintf(outfile, "%%%% *Reject entry* (syntax error or empty):\n");
+
+ if (doprint > 0 || pagenum > 0 || fntnum > 0 || uu > 0)
+ {
+ if (filec > 1) fprintf(outfile, "%%%% Entry from %s ...\n", subRptr[LINECOL][line]);
+ if (printsort == 1 && doprint == 1) printsortline(line, deepsort);
+ fprintf(outfile, "%s\n", p);
+
+ if (kandkused == 1 && num_of_cmds_in_str(p, KURZCMD) > 0)
+ fprintf(outfile, "%%%% <- Warning: You have used %s here, but %s elsewhere.\n", KURZ, KTIT);
+
+ if (otherktiterr > 0)
+ {
+ j = 0;
+ while (j < otherktiterr && subAptr[j][line] != mydefault)
+ {
+ if ((oerr = get_add_ktit(subAptr[j][line], 0, -1, -1, 0)) > 0)
+ fprintf(outfile, "%%%% <- Warning: %d misplaced %s in arg %d.\n", oerr, KTIT, j+1);
+ ++j;
+ }
+ }
+
+ if (oktitused > 0 && subAptr[VCOLS-1][line] != mydefault)
+ {
+ ok = num_of_cmds_in_str(subAptr[VCOLS-1][line], KTITCMD);
+ ie = hasinnerentry(subAptr[VCOLS-1][line], innerK_PER_ARQ_cmd, INNERTITLES);
+
+ if ( (oktitused == 3 || oktitused == 4)
+ && ok == 0
+ && ie > -1
+ )
+ fprintf(outfile, "%%%% <- Info: No outer %s used in **item with inner title**, but elsewhere you have %s in that case.\n", KTIT, KTIT);
+ else if (ok == 0 && oktitused < 5)
+ {
+ fprintf(outfile, "%%%% <- Info: No");
+ if (ie > -1) fprintf(outfile, " OUTER");
+ fprintf(outfile, " %s in arg %d (other entries have %s).\n", KTIT, VCOLS, KTIT);
+ }
+ else if (ok > 1)
+ {
+ fprintf(outfile, "%%%% <- Warning: %d", ok);
+ fprintf(outfile, " %s in last arg outside inner v-cmd found. Also check %s file.\n", KTIT, VKC_SUFFIX); /* VCOLS */
+ }
+
+ if (oktitused == 2 || oktitused == 4)
+ {
+ if (ok > (j=unshielded_cmds_in_str(subAptr[VCOLS-1][line], KTITCMD)))
+ {
+ fprintf(outfile, "%%%% <- Warning: %d", ok-j);
+ fprintf(outfile, " { %s } shadowed by brackets (in last arg outside inner v-cmd).\n", KTIT); /* VCOLS */
+ }
+ }
+
+ if ( isinstr(subAptr[VCOLS-1][line], KTITINTRO) == 1)
+ {
+ fprintf(outfile, "%%%% -> Info: An inner v-cmd should be printed as shortened reference (created by the arg of your %s cmd).\n", KTIT);
+ if ((sha=isinstr(subAptr[VCOLS-1][line], KTITSHA )) == 1)
+ fprintf(outfile, "%%%% <- Error: INNER { %s } is shadowed by brackets, and ...\n", KTIT);
+ if ((tha=isinstr(subAptr[VCOLS-1][line], KTITMISS )) == 1)
+ fprintf(outfile, "%%%% <- Error: INNER %s is missing.\n", KTIT);
+ if ((uha=isinstr(subAptr[VCOLS-1][line], KTITEMPTY)) == 1)
+ {
+ fprintf(outfile, "%%%% <- Warning: Arg of");
+ if (sha == 1) fprintf(outfile, " (last non-shadowed)");
+ fprintf(outfile, " INNER %s is empty.\n", KTIT);
+ }
+ if (sha != 1 && tha != 1 && uha != 1) intern_err(28); /* extra KTITINTRO found */
+
+ del_ktitintro(subAptr[VCOLS-1][line]); /* aus Prinzip: "\tX" => "??" */
+ }
+ }
+
+ }
+
+
+ if (doprint > 3) { fprintf(outfile, "%%%% <- TextArg-Warning");
+ if (uu == 0) fprintf(outfile, " (NUMBERS of entry are not necessarily rejected)");
+ fprintf(outfile, ":\n");
+ }
+ if (doprint == 4) fprintf(outfile, "%%%% HEAD is explained different now; that new explanation is ignored.\n");
+ if (doprint == 5) fprintf(outfile, "%%%% HEAD is not (yet\?) explained.\n");
+ if (doprint == 6) fprintf(outfile, "%%%% HEAD is explained again (short-title mismatch).\n");
+ if (doprint == 7) fprintf(outfile, "%%%% HEAD is explained again (risky when open/close seps are different).\n");
+
+
+ if (pagenum > 0 || fntnum > 0)
+ fprintf(outfile, "%%%% <- Counter-Warning (TEXT of entry is not necessarily rejected):\n");
+
+ if (pagenum > 0) fprintf(outfile, "%%%% * Page-num ");
+ if (pagenum == 1) fprintf(outfile, "empty.\n"); /* EMPTYNUM */
+ if (pagenum == 2) fprintf(outfile, "missing.\n"); /* MISSNUM */
+ if (pagenum == 3) fprintf(outfile, "not valid and SORTED as TEXT.\n");
+ if (pagenum == 4) fprintf(outfile, "contains \"%s\" (guess Alph/alph/fnsymbol overflow).\n", OVERFLOWTXT);
+
+ if (tn == 0 && uu == 1) fprintf(outfile, "%%%% <- Def is in an {unused}-environment or is a \\fill...-cmd.\n");
+ if (tn > 0 && uu == 1) fprintf(outfile, "%%%% <- List-internal heading (class %d).\n", tn);
+
+ if ( fntnum > 0) fprintf(outfile, "%%%% * Footnote-num ");
+ if ( fntnum == 1) fprintf(outfile, "empty.\n"); /* EMPTYNUM */
+ if ( fntnum == 2) fprintf(outfile, "missing.\n"); /* MISSNUM */
+ if ( fntnum == 3) fprintf(outfile, "not valid and SORTED as TEXT.\n");
+ if ( fntnum == 4) fprintf(outfile, "contains \"%s\" (guess Alph/alph/fnsymbol overflow).\n", OVERFLOWTXT);
+
+
+ if (doprint == 1 && nlines > 0) makeindex(nlines, line, deepsort);
+
+ if (doprint >= 2 || pagenum > 0 || fntnum > 0 || (doprint == 1 && nlines > 0) || uu > 0)
+ fprintf(outfile, "\n");
+
+
+ if (pagenum > 0 && fntnum > 0) return 2;
+ if (pagenum > 0 || fntnum > 0) return 1;
+ return 0;
+}
+
+
+void allerrorout(const char *s)
+{
+ fprintf(outfile, "%s %s\n", TeXITEM, s);
+ fprintf(outfile, "%s{BibArts warning: %s}%s\n", TYPEOUT, s, RELAX);
+ printf("%%%% -> %s\n", s);
+}
+
+
+static void timestamp (FILE *file)
+{
+ time_t t;
+ struct tm *tp;
+
+ if (time (&t) == -1) return;
+
+ tp = localtime(&t);
+ if (german == 0)
+ fprintf (file, "%%%%> Begin output (month-day-year) %.2d-%.2d-%.4d %.2d:%.2d:%.2d\n",
+ 1+tp->tm_mon, tp->tm_mday, 1900+tp->tm_year,
+ tp->tm_hour, tp->tm_min, tp->tm_sec);
+ else
+ fprintf (file, "%%%%> Begin output (day.month.year) %.2d.%.2d.%.4d %.2d:%.2d:%.2d\n",
+ tp->tm_mday, 1+tp->tm_mon, 1900+tp->tm_year,
+ tp->tm_hour, tp->tm_min, tp->tm_sec);
+}
+
+
+void outhline(void)
+{
+ printf("%%%% ======================================\n");
+}
+
+
+void printfilelist(FILE *file, int filec, int cc, const char *vor, const char *nach)
+{
+ int i = 0;
+
+ if (cc == 1)
+ fprintf(file, "\n%%%% BibArts 2.2 (C) Timo Baumann 2019 [%s]\n", __DATE__);
+
+ fprintf(file, "%%%%\n");
+ timestamp(file);
+ fprintf(file, "%%%% Sort arg(s):\n");
+ fprintf(file, "%s", vor);
+ if (german == 1) fprintf(file, " -g1");
+ if (german == 2) fprintf(file, " -g2");
+ if (nogsty == 1) fprintf(file, " -x");
+ if (ignorespaces == 1) fprintf(file, " -l");
+ if (hy_as_space == 1) fprintf(file, " -h");
+ if (registpoints == 1) fprintf(file, " -p");
+ if (encode == 1) fprintf(file, " -t1");
+ if (kill == DOKILLAUTHORS) fprintf(file, " -k");
+ if (EinlROEMseiten == 1) fprintf(file, " -s1");
+ if (ALPHmpfootnotes == 1) fprintf(file, " -f1");
+ if ( get_R_pg == BA_TRUE
+ || get_A_pg == BA_TRUE
+ || get_a_pg == BA_TRUE
+ || get_r_pg == BA_TRUE
+ ) fprintf(file, " -s2 %s", soptarg);
+ if ( get_R_fn == BA_TRUE
+ || get_A_fn == BA_TRUE
+ || get_a_fn == BA_TRUE
+ || get_r_fn == BA_TRUE
+ ) fprintf(file, " -f2 %s", foptarg);
+ if (igleichj == 1) fprintf(file, " -i=j");
+ if (bago == 1) fprintf(file, " -b");
+ if (FntIndexOverPages == 0) fprintf(file, " -n1");
+ if (notext == 1) fprintf(file, " -c");
+
+ if ( german == 0
+ && nogsty == 0
+ && ignorespaces == 0
+ && hy_as_space == 0
+ && registpoints == 0
+ && encode == 0
+ && kill != DOKILLAUTHORS
+ && EinlROEMseiten == 0
+ && ALPHmpfootnotes == 0
+ && (get_R_fn == BA_FALSE && get_A_fn == BA_FALSE && get_a_fn == BA_FALSE && get_r_fn == BA_FALSE)
+ && (get_R_pg == BA_FALSE && get_A_pg == BA_FALSE && get_a_pg == BA_FALSE && get_r_pg == BA_FALSE)
+ && igleichj == 0
+ && bago == 0
+ && FntIndexOverPages == 1
+ && notext == 0
+ ) fprintf(file, " Default");
+ fprintf(file, "%s\n", nach);
+
+ if (igleichj == 1 && cc == 1) fprintf(file, "%%%% \n%%%% Note, that you will not see i=j in %s lines here.\n", METALINEHEAD); /* "-m" + "-i=j" */
+
+ fprintf(file, "%%%%\n%%%%> Input file list:\n");
+
+ if (filec == 1)
+ fprintf(file, "%%%% only \"%s\".\n", filelist[i]);
+ else
+ while (i < filec)
+ {
+ fprintf(file, "%%%% %.3d \"%s\".\n", i+1, filelist[i]);
+ ++i;
+ }
+
+ if (cc == 1)
+ fprintf(file, "\n\n");
+ else
+ { printf("%%%%\n");
+ outhline();
+ }
+}
+
+
+int writelines(int nlines, const int dqcol, const int lancol, const int commentANDignlines, const int deepsort, int filec, int printsort, int kandkused, int oktitused)
+{
+ int i = 0, dqcat, lancat = 0, lancatbuf, extralines = 0, didsetorig, nerr = 0;
+
+ printfilelist(outfile, filec, 1, "\\gdef\\bibsortargs{", " }");
+
+ while (i < nlines && leval[i] != ACCEPTLINE)
+ {
+ nerr = nerr + writetheline(lineptr[i], 0, i, 0, filec, printsort, kandkused, oktitused);
+ ++i;
+ }
+
+ /* Wegen 2. Arg von abk ist hier dqsort ungeeignet! */
+
+ if (nlines-commentANDignlines > 0)
+ {
+ if ((dqcol > -1 && nogsty == 0) || lancol > -1) fprintf(outfile, "\n");
+
+ if (dqcol > -1 && nogsty == 0)
+ { dqcat = getarabicnum(subRptr[dqcol][i]);
+ if (dqcat == TeXACTIVE)
+ { fprintf(outfile, " \\ifnum\\catcode\\grave@ba\\\"=%d%s{\\message{ [bibsort] Begin list setting \\string%s. }}\\fi\n", TeXPASSIVE, GERMANTEX, GERMANTEX);
+ ++extralines;
+ }
+ else if (dqcat == TeXPASSIVE)
+ { fprintf(outfile, " \\ifnum\\catcode\\grave@ba\\\"=%d%s{\\message{ [bibsort] Begin list setting \\string%s. }}\\fi\n", TeXACTIVE, ORIGINALTEX, ORIGINALTEX);
+ ++extralines;
+ }
+ }
+
+ if (lancol > -1)
+ { lancat = getarabicnum(subRptr[lancol][i]);
+ fprintf(outfile, " \\ifnum\\language=%d\\else%s%d\\message{ [bibsort] Begin list setting hyphenation %d. }\\fi\n", lancat, HYPHENATION, lancat, lancat);
+ ++extralines;
+ }
+
+ if ((dqcol > -1 && nogsty == 0) || lancol > -1) fprintf(outfile, "\n");
+
+ nerr = nerr + writetheline(lineptr[i], nlines, i, deepsort, filec, printsort, kandkused, oktitused);
+
+ ++i;
+ }
+ else if (nlines > 0) allerrorout("bibsort did reject all your entries.");
+
+
+ while (i < nlines)
+ {
+ didsetorig = -1;
+ if (dqcol > -1 && nogsty == 0 && leval[i] == ACCEPTLINE)
+ {
+ if (dqcat == TeXACTIVE && (dqcat = getarabicnum(subRptr[dqcol][i])) == TeXPASSIVE)
+ { fprintf(outfile, " %s{\\message{ [bibsort] Set \\string%s \\space in line %s \\space of BibArts file. }}%s\n", ORIGINALTEX, ORIGINALTEX, TEXFILELINE, RELAX);
+ ++extralines;
+ didsetorig = 0;
+ }
+ else if (dqcat == TeXPASSIVE && (dqcat = getarabicnum(subRptr[dqcol][i])) == TeXACTIVE)
+ { fprintf(outfile, " %s{\\message{ [bibsort] Set \\string%s \\space in line %s \\space of BibArts file. }}%s\n", GERMANTEX, GERMANTEX, TEXFILELINE, RELAX);
+ ++extralines;
+ didsetorig = 1;
+ }
+ }
+
+ if (lancol > -1 && leval[i] == ACCEPTLINE)
+ { if ( lancat != (lancatbuf = getarabicnum(subRptr[lancol][i]))
+ || didsetorig != -1
+ )
+ { lancat = lancatbuf;
+ fprintf(outfile, " %s%d\\message{ [bibsort] Reproduce hyphenation %d in line %s \\space of BibArts file. }%s\n", HYPHENATION, lancat, lancat, TEXFILELINE, RELAX);
+ ++extralines;
+ }
+ }
+
+ nerr = nerr + writetheline(lineptr[i], nlines, i, deepsort, filec, printsort, kandkused, oktitused);
+
+ ++i;
+ }
+
+ if (nerr > 0)
+ {
+ printf("%%%% !!!\n");
+ printf("%%%% I\'ve marked %d page/footnote number(s)\n", nerr);
+ printf("%%%% as \"%s\", \"%s\", \"%s\", and \"%s...%s\" for\n", OVERFLOWSYMB, EMPTYSYMB, MISSINGERMS, TEXTSYMBOPEN[notext], TEXTSYMBCLOSE[notext]);
+ printf("%%%% counter overflow / empty / missing / invalid (TEXT).\n");
+ if (notext == 0 && (strcmp(TEXTSYMBOPEN[0], TEXTSYMBOPEN[1]) != 0 || strcmp(TEXTSYMBCLOSE[0], TEXTSYMBCLOSE[1]) != 0))
+ {
+ printf("%%%% Use opt -c to set invalids ");
+ if (*TEXTSYMBOPEN[1] != '\0' || *TEXTSYMBCLOSE[1] != '\0')
+ printf("as \"%s...%s\"", TEXTSYMBOPEN[1], TEXTSYMBCLOSE[1]);
+ else printf("naked");
+ printf(".\n");
+ }
+ printf("%%%% !!!\n");
+ }
+
+ return extralines;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+ /* Autoren, die mehrfach vorkommen, werden genannt */
+ /* und ab dann durch P|IKILLNAME/NKILLNAME ersetzt */
+
+
+int authorcmp(const char *s, const char *p, int dqcats, int dqcatp)
+{
+ int mlen = strlen(MALE), flen = strlen(FEMALE), cont = 1;
+ int hlen = strlen(HASDOT), nlen = strlen(NOTDOT);
+
+ while(1)
+ {
+ if (lcmdcmp(s, MALE) == 0) { s += mlen; while (*s == ' ') ++s; cont = 0; }
+ if (lcmdcmp(s, FEMALE) == 0) { s += flen; while (*s == ' ') ++s; cont = 0; }
+ if (lcmdcmp(s, HASDOT) == 0) { s += hlen; while (*s == ' ') ++s; cont = 0; }
+ if (lcmdcmp(s, NOTDOT) == 0) { s += nlen; while (*s == ' ') ++s; cont = 0; }
+ if (strncmp(s, "\\-", 2) == 0) { s += 2; cont = 0; }
+
+ if (lcmdcmp(p, MALE) == 0) { p += mlen; while (*p == ' ') ++p; cont = 0; }
+ if (lcmdcmp(p, FEMALE) == 0) { p += flen; while (*p == ' ') ++p; cont = 0; }
+ if (lcmdcmp(p, HASDOT) == 0) { p += hlen; while (*p == ' ') ++p; cont = 0; }
+ if (lcmdcmp(p, NOTDOT) == 0) { p += nlen; while (*p == ' ') ++p; cont = 0; }
+ if (strncmp(p, "\\-", 2) == 0) { p += 2; cont = 0; }
+
+ if (nogsty == 0)
+ {
+ if (dqcats == TeXACTIVE)
+ {
+ if (strncmp(s, "\"\"", 2) == 0) { s += 2; cont = 0; }
+ if (strncmp(s, "\"-", 2) == 0) { s += 2; cont = 0; }
+ }
+ if (dqcatp == TeXACTIVE)
+ {
+ if (strncmp(p, "\"\"", 2) == 0) { p += 2; cont = 0; }
+ if (strncmp(p, "\"-", 2) == 0) { p += 2; cont = 0; }
+ }
+ }
+
+ if (cont == 1)
+ {
+ if (*s != '\0' && *p == *s)
+ {
+ if (*s == '\\' && *(s+1) != '\0' && *(p+1) == *(s+1)) { ++p; ++s; }
+ else
+ if (*s == '\"' && dqcats != dqcatp) break;
+ ++p; ++s;
+ }
+ else break;
+ }
+ else if (*s == '\0' || *p == '\0') break;
+
+ cont = 1;
+ }
+
+ if (*p == '\0' && *s == '\0') return 0;
+ return 1;
+}
+
+
+int texcmp(const char *s, const char *p, int dqcats, int dqcatp)
+{
+ while(1)
+ {
+ if (*s != '\0' && *p == *s)
+ {
+ if (*s == '\\' && *(s+1) != '\0' && *(p+1) == *(s+1)) { ++p; ++s; }
+ else
+ if (*s == '\"' && dqcats != dqcatp) break;
+ ++p; ++s;
+ }
+ else break;
+ }
+
+ if (*p == '\0' && *s == '\0') return 0;
+ return 1;
+}
+
+
+int lcmdcmp(const char *s, const char *p)
+{
+ int r = 1;
+
+ while (*s != '\0')
+ {
+ if (*s == *p) { ++s; ++p; }
+ else break;
+
+ if (*p == '\0' && isLaTeXcmdletter(*s) == 0)
+ {
+ r = 0;
+ break;
+ }
+ }
+
+ return r;
+}
+
+
+int findFEmale(const char *s)
+{
+ int r = 0;
+
+ while(*s != '\0')
+ {
+ if (*s == '\\')
+ {
+ if (*(s+1) == '\\') ++s;
+ else
+ if ( lcmdcmp(s, MALE) == 0
+ || lcmdcmp(s, FEMALE) == 0
+ )
+ { r = 1;
+ break;
+ }
+ }
+ ++s;
+ }
+
+ return r;
+}
+
+
+void baaddx_error(void)
+{
+ printf("%%%% baaddx-error\n");
+}
+
+
+int insertfalse(const char *p, char a[], int i)
+{
+ int n;
+
+ while (*p == ' ') ++p;
+ n = nextbracket(p, '{', '}'); if (n < 2) baaddx_error();
+ while (n-- > 0 && i < MAXLEN) a[i++] = *p++;
+
+ while (*p == ' ') ++p;
+ if (*p == '{' && i < MAXLEN)
+ { a[i++] = *p++;
+
+ while (*p == ' ') ++p;
+ n = nextbracket(p, '{', '}'); if (n < 2) baaddx_error();
+ while (n-- > 0 && i < MAXLEN) a[i++] = *p++;
+
+ while (*p == ' ') ++p;
+ n = nextbracket(p, '{', '}'); if (n < 2) baaddx_error();
+ while (n-- > 0) p++;
+
+ if (i + strlen(BAFALSE) < MAXLEN)
+ {
+ a[i] = '\0'; strcat(a, BAFALSE); i += strlen(BAFALSE);
+ }
+ }
+ else baaddx_error();
+
+ while (*p != '\0' && i < MAXLEN) a[i++] = *p++;
+
+ return i;
+}
+
+
+int count_rejected(int nlines)
+{
+ int ret = 0, i = 0;
+
+ while (i < nlines)
+ {
+ if (leval[i] == REJECTLINE)
+ ++ret; /* parallel zu double_or_empty_abbreviation */
+ ++i;
+ }
+
+ return ret;
+}
+
+
+int checkifabbrisdefined(int nlines, int ret, char *Thead, const char *Thold, int Thint, int i)
+{
+ int found = 2, pwgt, fwgt;
+ char *pg, *fnt, *tline;
+
+ if ( leval[i] != REJECTLINE
+ && *subAptr[1][i] == '\0'
+ && ( *Thold == '\0'
+ || texcmp(subAptr[0][i], Thead, dqsort[i], Thint) != 0
+ )
+ )
+ {
+ leval[i] = UNDEFILINE;
+ ++ret;
+ found = 0;
+ }
+
+
+ Thead = subAptr[0][i];
+ Thint = dqsort[i];
+ pg = subRptr[PAGECOL][i];
+ fnt = subRptr[FNTCOL][i];
+ tline = subRptr[LINECOL][i];
+ pwgt = pagewgt[i];
+ fwgt = fntwgt[i];
+
+ if (found == 0)
+ {
+ while (++i < nlines && texcmp(subAptr[0][i], Thead, dqsort[i], Thint) == 0)
+ {
+ if ( leval[i] != REJECTLINE
+ && *subAptr[1][i] != '\0'
+ )
+ { found = 1;
+ break;
+ }
+ }
+ }
+
+ if (found == 0)
+ { printf("%%%%\n%%%%> Warning: Abbreviation \"%s\" is NEVER defined!\n", Thead);
+ printf("%%%% The entry (%s", tline);
+ if (Thint > -1) printf(", \":%d", Thint);
+ printf(") is rejected. Use %s\?\n", ABKDEF);
+ }
+
+ if (found == 1 &&
+ ( strcmp(tline, subRptr[LINECOL][i]) != 0
+ || strcmp( fnt, subRptr[FNTCOL][i] ) != 0
+ )
+ )
+ {
+ printf("%%%%\n%%%%> Warning: Abbreviation \"%s\" is used in\n", Thead);
+ printf("%%%% ");
+ if (fnt != nofnt)
+ { printf("A FNT ");
+ if (fwgt != fntwgt[i] && subRptr[FNTCOL][i] != nofnt && strcmp(pg, subRptr[PAGECOL][i]) == 0)
+ printf("T%d ", fwgt);
+ }
+ printf("%s and def in ", tline);
+ if (subRptr[FNTCOL][i] != nofnt)
+ {
+ printf("A FNT ");
+ if (fwgt != fntwgt[i] && fnt != nofnt && strcmp(pg, subRptr[PAGECOL][i]) == 0)
+ printf("T%d ", fntwgt[i]);
+ }
+ printf("%s!\n", subRptr[LINECOL][i]);
+ }
+
+ return ret;
+}
+
+
+int entkerne_IeC(char buf[], const char *s)
+{
+ int r = entkerne_arg(buf, s, IeC, '{', '}');
+ del_ktitintro(buf);
+ return r;
+}
+
+
+void printdline(int len, const char *s)
+{
+ printf("\"");
+ maxprint(len, s);
+ printf("\"");
+}
+
+
+void printD(const char *txt, const char *head, const char *Thold, const char *Trej, int i, int mem, int nmsg)
+{
+ int prnlen = 0;
+
+ if (nmsg == 0)
+ {
+ printf("%%%%\n%%%%> Warning: Different %s ", txt);
+ printdline(50 - strlen(txt), head);
+ printf(":\n");
+
+ printf("%%%% *Accept ");
+ if (mem > -1)
+ {
+ printf("%s ", subRptr[LINECOL][mem]);
+ prnlen = 60 - strlen(subRptr[LINECOL][mem]);
+ }
+ printdline(prnlen, Thold);
+ printf(";\n");
+ }
+
+ printf("%%%% *Reject %s ", subRptr[LINECOL][i]);
+
+ if (strcmp(Thold, Trej) == 0)
+ printf("(same string with other dq-catcode %d)", getarabicnum(subRptr[DQCOL][i]));
+ else printdline(60 - strlen(subRptr[LINECOL][i]), Trej);
+
+ printf(".\n");
+}
+
+
+int twoargsSTUFFcmp(const char *txt, int i, int mem, int messn)
+{
+ char a_buf[MAXLEN], b_buf[MAXLEN];
+
+ if (mem > -1)
+ {
+ getfirsttwoargs(a_buf, subRptr[STUFFRCOL][i]);
+ getfirsttwoargs(b_buf, subRptr[STUFFRCOL][mem]);
+
+ if (texcmp(a_buf, b_buf, getarabicnum(subRptr[DQCOL][i]), getarabicnum(subRptr[DQCOL][mem])) != 0)
+ {
+ if (messn < MAXMESSN)
+ {
+ printD(txt, subAptr[0][i], b_buf, a_buf, i, mem, messn);
+ }
+ ++messn;
+ }
+ }
+
+ return messn;
+}
+
+
+int xstrcmp(const char *a, const char *b, int mem, int i)
+{
+ if ( ( nogsty == 1
+ || (mem > -1 && getarabicnum(subRptr[DQCOL][i]) == getarabicnum(subRptr[DQCOL][mem]))
+ || userusesdq(PCOLS, i) == 0
+ )
+ && strcmp(a, b) == 0
+ ) return 0;
+ return 1;
+}
+
+
+void printT(int i)
+{
+ printf("%%%% ");
+ print_two(i, 0, 1);
+ printf("\n");
+}
+
+
+void warnFEmaleT(int nlines)
+{
+ int i = 0;
+
+ while (i < nlines)
+ {
+ if ( findFEmale(subAptr[0][i]) != 0
+ || findFEmale(subAptr[1][i]) != 0
+ )
+ {
+ printf("%%%%\n%%%%> Warning: %s or %s in entry %s:\n", FEMALE, MALE, subRptr[LINECOL][i]);
+ printT(i);
+ }
+ ++i;
+ }
+}
+
+
+void checkSTUFFblock(const char *msg, int i, const int nlines, const int deepsort, const int deep)
+{
+ const int mem = i;
+ const char *TheadA = subAptr[0][mem];
+ const char *TheadB = subAptr[1][mem];
+ const char *TheadC = subAptr[2][mem];
+ const char *TheadD = subAptr[3][mem];
+ const int Thint = dqsort[mem];
+ int messn = 0;
+
+
+ if ( deepsort != deep
+ && deepsort != deep-1
+ )
+ {
+ intern_err(20); /* deep/deepsort */
+ }
+ else
+ {
+ while (++i < nlines)
+ {
+ if (leval[i] == REJECTLINE);
+ else
+ if ( (deepsort > 0 && texcmp(subAptr[0][i], TheadA, dqsort[i], Thint) != 0)
+ || (deepsort > 1 && texcmp(subAptr[1][i], TheadB, dqsort[i], Thint) != 0)
+ || (deepsort > 2 && texcmp(subAptr[2][i], TheadC, dqsort[i], Thint) != 0)
+ || (deepsort > 3 && texcmp(subAptr[3][i], TheadD, dqsort[i], Thint) != 0)
+ )
+ {
+ break;
+ }
+ else if ( deepsort == deep
+ || (*subAptr[deep-1][i] != '\0' && texcmp(subAptr[deep-1][i], subAptr[deep-1][mem], getarabicnum(subRptr[DQCOL][i]), getarabicnum(subRptr[DQCOL][mem])) == 0)
+ )
+ {
+ messn = twoargsSTUFFcmp(msg, i, mem, messn);
+ }
+ }
+
+ if (messn > MAXMESSN) printf("%%%% *** Report the first %d different seps (of %d) for that entry. ***\n", MAXMESSN, messn);
+ }
+}
+
+
+int double_or_empty_abbreviation(int nlines, int deepsort, int deep)
+{
+ int i, ret = 0, Thint = -1, mem = -1;
+ char *Thead = "", *Thold = "", *Thart = NULL, *oldmsg = NULL, *oldstuffA = NULL, *oldstuffB = NULL;
+
+ /* dqsort geht bis zur Tiefe deepsort, nicht deep */
+
+
+ warnFEmaleT(nlines);
+
+
+ i = 0; while (i < nlines)
+ {
+ if (leval[i] == REJECTLINE)
+ {
+ ++ret; /* Anzahl bereits auskommentierter Zeilen */
+ }
+ else
+ if (*subAptr[0][i] == '\0')
+ {
+ leval[i] = REJECTLINE;
+ printf("%%%%\n%%%%> Reject empty abbreviation in %s!\n", subRptr[LINECOL][i]);
+ ++ret;
+ }
+ ++i;
+ }
+
+
+ ret = checkifabbrisdefined(nlines, ret, Thead, Thold, Thint, 0);
+
+ i = 1; while (i < nlines)
+ {
+ if ( leval[i-1] != REJECTLINE
+ && *subAptr[0][i-1] != '\0'
+ && *subAptr[1][i-1] != '\0'
+ )
+ {
+ if ( *Thold == '\0'
+ || texcmp(subAptr[0][i-1], Thead, dqsort[i-1], Thint) != 0
+ )
+ { Thold = subAptr[1][i-1];
+ mem = i-1;
+ Thart = subRptr[FNTCOL][i-1];
+ }
+ else
+ if (Thart != nofnt && subRptr[FNTCOL][i-1] == nofnt)
+ {
+ Thart = subRptr[FNTCOL][i-1];
+ }
+ Thead = subAptr[0][i-1];
+ Thint = dqsort[i-1];
+ }
+
+ if ( leval[i] != REJECTLINE
+ && *subAptr[0][i] != '\0'
+ && *subAptr[1][i] == '\0'
+ && Thart != NULL
+ && Thart != nofnt
+ && subRptr[FNTCOL][i] == nofnt
+ && texcmp(subAptr[0][i], Thead, dqsort[i], Thint) == 0
+ )
+ {
+ if (oldmsg == NULL || strcmp(oldmsg, subAptr[0][i]) != 0)
+ printf("%%%%\n%%%%> Warning: Abbreviation \"%s\" is used in\n", subAptr[0][i]);
+ printf("%%%% TEXT %s, whereas all foregoing defs were in FNTs!\n", subRptr[LINECOL][i]);
+ oldmsg = subAptr[0][i];
+ }
+
+ ret = checkifabbrisdefined(nlines, ret, Thead, Thold, Thint, i);
+
+ if ( leval[i] != REJECTLINE
+ && *subAptr[1][i] == '\0'
+ && *Thold != '\0'
+ && texcmp(subAptr[0][i], Thead, dqsort[i], Thint) == 0
+ )
+ {
+ leval[i] = ABBREVLINE;
+ ++ret;
+ }
+
+ if ( leval[i] != REJECTLINE
+ && *subAptr[1][i] != '\0'
+ && *Thead != '\0'
+ && texcmp(subAptr[0][i], Thead, dqsort[i], Thint) == 0
+ )
+ {
+ if (xstrcmp(Thold, subAptr[1][i], mem, i) != 0) /* leval[i] sagt nichts zu Arg2 */
+ {
+ printD("defs for abbreviation", subAptr[0][i], Thold, subAptr[1][i], i, mem, 0);
+ leval[i] = DIFFERLINE;
+ ++ret;
+ }
+ else
+ {
+ leval[i] = DOUBLELINE;
+ ++ret;
+ /* printf("%%%%\n%%%%> Reject repeated def for abbreviation \"%s\" -> \"%s\"!\n", subAptr[0][i], subAptr[1][i]);
+ */
+ if ( (oldstuffA == NULL && oldstuffB == NULL)
+ || strcmp(oldstuffA, subAptr[0][mem]) != 0
+ || strcmp(oldstuffB, subAptr[1][mem]) != 0
+ )
+ checkSTUFFblock("abkdef-open/-close seps after", mem, nlines, deepsort, deep);
+ oldstuffA = subAptr[0][mem];
+ oldstuffB = subAptr[1][mem];
+ }
+ }
+ ++i;
+ }
+
+ return ret;
+}
+
+
+void printcline(int len, const char *s)
+{
+ printf("(");
+ maxprint(len, s);
+ printf(") ");
+}
+
+
+
+#define LMAX 26
+#define RMAX 36
+
+void print_two(int i, int e, int z)
+{
+ char bufa[MAXLEN], bufb[MAXLEN];
+ int llen, rlen;
+
+ llen = entkerne_IeC(bufa, subAptr[e][i]);
+ rlen = entkerne_IeC(bufb, subAptr[z][i]);
+
+ if (llen > LMAX && rlen > RMAX)
+ {
+ rlen = RMAX;
+ llen = LMAX;
+ }
+ else
+ if (llen + rlen > LMAX + RMAX)
+ {
+ if (llen > LMAX) llen = LMAX+RMAX-rlen;
+ if (rlen > RMAX) rlen = LMAX+RMAX-llen;
+ }
+
+ printcline(llen, bufa);
+ printcline(rlen, bufb);
+}
+
+
+#define LEFTMAX 16
+#define MIDMAX 18
+#define RIGHTMAX 24
+
+void print_three(int i, int e, int z, int d)
+{
+ char bufa[MAXLEN], bufb[MAXLEN], bufc[MAXLEN];
+ int llen, mlen, rlen, vari;
+
+ llen = entkerne_IeC(bufa, subAptr[e][i]);
+ mlen = entkerne_IeC(bufb, subAptr[z][i]);
+ rlen = entkerne_IeC(bufc, subAptr[d][i]);
+
+ if (llen > LEFTMAX && mlen > MIDMAX && rlen > RIGHTMAX)
+ {
+ rlen = RIGHTMAX;
+ mlen = MIDMAX;
+ llen = LEFTMAX;
+ }
+ else
+ if (llen + mlen + rlen > LEFTMAX + MIDMAX + RIGHTMAX)
+ {
+ if (rlen <= RIGHTMAX && mlen <= MIDMAX)
+ {
+ llen = LEFTMAX + RIGHTMAX-rlen + MIDMAX-mlen;
+ }
+ else
+ if (mlen <= MIDMAX && llen <= LEFTMAX)
+ {
+ rlen = RIGHTMAX + MIDMAX-mlen + LEFTMAX-llen;
+ }
+ else
+ if (rlen <= RIGHTMAX && llen <= LEFTMAX)
+ {
+ mlen = MIDMAX + RIGHTMAX-rlen + LEFTMAX-llen;
+ }
+ else
+ if (rlen <= RIGHTMAX)
+ {
+ vari = RIGHTMAX-rlen;
+ if (llen > LEFTMAX + vari && mlen > MIDMAX)
+ {
+ llen = LEFTMAX + vari;
+ mlen = MIDMAX;
+ }
+ else
+ if (mlen + llen > MIDMAX + LEFTMAX + vari)
+ {
+ if (llen > LEFTMAX+vari) llen = MIDMAX+ LEFTMAX+vari-mlen;
+ if (mlen > MIDMAX) mlen = MIDMAX+ LEFTMAX+vari-llen;
+ }
+ }
+ else
+ if (llen <= LEFTMAX)
+ {
+ vari = LEFTMAX-llen;
+ if (mlen > MIDMAX + vari && rlen > RIGHTMAX)
+ {
+ mlen = MIDMAX + vari;
+ rlen = RIGHTMAX;
+ }
+ else
+ if (mlen + rlen > MIDMAX + RIGHTMAX + vari)
+ {
+ if (mlen > MIDMAX+vari) mlen = MIDMAX+RIGHTMAX+vari-rlen;
+ if (rlen > RIGHTMAX) rlen = MIDMAX+RIGHTMAX+vari-mlen;
+ }
+ }
+ else
+ if (mlen <= MIDMAX)
+ {
+ vari = MIDMAX-mlen;
+ if (llen > LEFTMAX + vari && rlen > RIGHTMAX)
+ {
+ llen = LEFTMAX + vari;
+ rlen = RIGHTMAX;
+ }
+ else
+ if (rlen + llen > RIGHTMAX + LEFTMAX + vari)
+ {
+ if (llen > LEFTMAX+vari) llen = RIGHTMAX+LEFTMAX+vari-rlen;
+ if (rlen > RIGHTMAX) rlen = RIGHTMAX+LEFTMAX+vari-llen;
+ }
+ }
+ }
+
+ if (llen + mlen + rlen > LEFTMAX + MIDMAX + RIGHTMAX)
+ intern_err(21); /* Bad screen print */
+
+ printcline(llen, bufa);
+ printcline(mlen, bufb);
+ printcline(rlen, bufc);
+}
+
+
+#define MAXA 12
+#define MAXB 8
+#define MAXC 16
+#define MAXD 18
+#define ALLMAX (MAXA+MAXB+MAXC+MAXD)
+
+void print_four(int i)
+{
+ char bufa[MAXLEN], bufb[MAXLEN], bufc[MAXLEN], bufd[MAXLEN];
+ int lena, lenb, lenc, lend;
+ int over, overa = 0, overb = 0, overc = 0, overd = 0;
+
+ lena = entkerne_IeC(bufa, subAptr[1][i]); /* (Vorname) */
+ lenb = entkerne_IeC(bufb, subAptr[0][i]);
+ lenc = entkerne_IeC(bufc, subAptr[2][i]);
+ lend = entkerne_IeC(bufd, subAptr[3][i]);
+
+ if (lena + lenb + lenc + lend > ALLMAX)
+ {
+ if (lena < MAXA) overa = MAXA - lena;
+ if (lenb < MAXB) overb = MAXB - lenb;
+ if (lenc < MAXC) overc = MAXC - lenc;
+ if (lend < MAXD) overd = MAXD - lend;
+
+ over = overa + overb + overc + overd;
+ overa = 0; overb = 0; overc = 0; overd = 0;
+
+ while (over > 0)
+ {
+ if (lena-overa > MAXA && over > 0) { ++overa; --over; }
+ if (lenb-overb > MAXB && over > 0) { ++overb; --over; }
+ if (lenc-overc > MAXC && over > 0) { ++overc; --over; }
+ if (lend-overd > MAXD && over > 0) { ++overd; --over; }
+ }
+
+ over = overa + overb + overc + overd;
+
+ while(lena + lenb + lenc + lend + over > ALLMAX)
+ {
+ if (lena + lenb + lenc + lend + over > ALLMAX && lena > MAXA) --lena;
+ if (lena + lenb + lenc + lend + over > ALLMAX && lenb > MAXB) --lenb;
+ if (lena + lenb + lenc + lend + over > ALLMAX && lenc > MAXC) --lenc;
+ if (lena + lenb + lenc + lend + over > ALLMAX && lend > MAXD) --lend;
+ }
+ }
+
+ printcline(lena+overa, bufa); /* (Vorname) */
+ printcline(lenb+overb, bufb);
+ printcline(lenc+overc, bufc);
+ printcline(lend+overd, bufd);
+}
+
+
+void fitssingleentry(int i, int nlines, int arq, const char *suffix)
+{
+ int l;
+
+ if ( leval[i] != REJECTLINE
+ && *subAptr[1][i] != '\0'
+ && (arq != IS_Q || getthirdnum(i) == 0)
+ )
+ {
+ l = i;
+ while (l > 0)
+ {
+ if (leval[l-1] == REJECTLINE);
+ else if (texcmp(subAptr[0][l-1], subAptr[0][i], dqsort[l-1], dqsort[i]) != 0) break;
+ else if (*subAptr[1][l-1] == '\0') { --l; break; }
+ --l;
+ }
+
+ if (leval[l] == REJECTLINE || *subAptr[1][l] != '\0')
+ {
+ while (l < nlines-1)
+ {
+ if (leval[l+1] == REJECTLINE);
+ else if (texcmp(subAptr[0][l+1], subAptr[0][i], dqsort[l+1], dqsort[i]) != 0) break;
+ else if (*subAptr[1][l+1] == '\0') { ++l; break; }
+ ++l;
+ }
+ }
+
+ if (leval[l] == REJECTLINE || *subAptr[1][l] != '\0')
+ {
+ printf("%%%%\n%%%%> Info: \\fill%s in %s fits NO single entry:\n", suffix, subRptr[LINECOL][i]);
+ printT(i);
+ }
+ }
+}
+
+
+void misplaced_heading(int heada, int line)
+{
+ printf("%%%%\n%%%%> Warning: Misplaced %d-heading (from %s):\n", heada, subRptr[LINECOL][line]);
+ printT(line);
+}
+
+
+int double_or_empty_arqperregisters(int nlines, int arq, const char *suffix, int deepsort, int deep)
+{
+ int i, ret = 0, ThintA = -1, mem = -1, lastmem = mem, len, heada, headb;
+ char *TheadA = "", *heredefault = "", *TheadB = heredefault, *oldstuffA = NULL, *oldstuffB = NULL;
+
+
+ warnFEmaleT(nlines);
+
+
+ i = 0; while (i < nlines)
+ {
+ if (leval[i] == REJECTLINE)
+ {
+ ++ret; /* Anzahl bereits auskommentierter Zeilen */
+ }
+ else
+ if (*subAptr[0][i] == '\0')
+ {
+ printf("%%%%\n%%%%> Warning: Empty entry in %s", subRptr[LINECOL][i]);
+ if (*subAptr[1][i] != '\0')
+ {
+ if (arq == IS_Q && (heada=getthirdnum(i)) > 0)
+ printf(" (%d-heading)", heada);
+ else printf(" (\\fill%s-cmd)", suffix);
+ }
+ printf(".\n");
+ leval[i] = REJECTLINE;
+ ++ret;
+ }
+ ++i;
+ }
+
+
+ fitssingleentry(0, nlines, arq, suffix);
+
+
+ i = 1; while (i < nlines)
+ {
+ if ( leval[i-1] != REJECTLINE
+ && *subAptr[0][i-1] != '\0'
+ && texcmp(subAptr[0][i-1], TheadA, dqsort[i-1], ThintA) != 0
+ )
+ {
+ TheadA = subAptr[0][i-1];
+ ThintA = dqsort[i-1];
+
+ if (pagewgt[i-1] == UNUSED)
+ {
+ mem = i-1;
+ TheadB = subAptr[1][i-1];
+ }
+ else
+ {
+ mem = -1;
+ TheadB = heredefault;
+ }
+ }
+
+ /* da deepsort < deep wird subAptr[1][i] von dqsort nicht erfasst */
+ if ( leval[i] != REJECTLINE
+ && *TheadA != '\0'
+ && texcmp(subAptr[0][i], TheadA, dqsort[i], ThintA) == 0
+ )
+ {
+ if (*subAptr[1][i] == '\0')
+ {
+ leval[i] = DOUBLELINE;
+ }
+ else
+ {
+ if (xstrcmp(TheadB, subAptr[1][i], mem, i) == 0) /* leval[i] sagt nichts zu Arg2 */
+ {
+ leval[i] = REDEF2LINE;
+ if ( (oldstuffA == NULL && oldstuffB == NULL)
+ || strcmp(oldstuffA, subAptr[0][mem]) != 0
+ || strcmp(oldstuffB, subAptr[1][mem]) != 0
+ )
+ checkSTUFFblock("open/close seps after", mem, nlines, deepsort, deep);
+ oldstuffA = subAptr[0][mem];
+ oldstuffB = subAptr[1][mem];
+ }
+ else
+ {
+ printD("fills for head", subAptr[0][i], TheadB, subAptr[1][i], i, mem, 0);
+ if (arq == IS_Q && getthirdnum(i) == 1)
+ printf("%%%% ... A list-internal heading is shadowed.\n");
+ leval[i] = DIFFERLINE;
+ }
+ }
+
+ ++ret;
+ }
+
+
+ if ( arq == IS_Q
+ && ( leval[i] == ACCEPTLINE
+ || leval[i] == REDEF2LINE
+ || leval[i] == DOUBLELINE
+ )
+ )
+ {
+ if ( mem > lastmem
+ && (heada=getthirdnum(mem)) > 0
+ )
+ {
+ len = strlen(TheadA);
+ headb = getthirdnum(i);
+ if ( strncmp(subAptr[0][i], TheadA, len) != 0
+ || len >= strlen(subAptr[0][i])
+ || (headb < heada && headb > 0)
+ )
+ {
+ misplaced_heading(heada, mem);
+ printf("%%%% ... That");
+ if (texcmp(subAptr[0][i], TheadA, dqsort[i], ThintA) == 0)
+ printf(" melts into ");
+ else
+ {
+ printf("\'s before ");
+ if (strcmp(subAptr[0][i], TheadA) == 0) printf("[\"!] ");
+ }
+ if (headb > 0)
+ {
+ printf("%d-heading", headb);
+ printf(" (from %s):\n", subRptr[LINECOL][i]);
+ printT(i);
+ }
+ else printf("list item (from %s).\n", subRptr[LINECOL][i]);
+ }
+ }
+ lastmem = mem;
+ }
+
+
+ fitssingleentry(i, nlines, arq, suffix);
+
+ ++i;
+ }
+
+
+ return ret;
+}
+
+
+void printV(int i)
+{
+ printf("%%%% ");
+ if (dqsort[i] == TeXACTIVE)
+ printf( "!\" ");
+ else
+ printf( " ");
+
+ if (*subAptr[2][i] == '\0')
+ {
+ print_three(i, 1, 0, 3); /* (Vorname) (Nachname) (Rest) */
+ }
+ else
+ {
+ print_four(i);
+ }
+ printf("\n");
+}
+
+
+void printK(int i)
+{
+ printf("%%%% ");
+ if (dqsort[i] == TeXACTIVE)
+ printf( "!\" ");
+ else
+ printf( " ");
+
+ if (*subAptr[1][i] == '\0')
+ {
+ print_two(i, 0, 2);
+ }
+ else
+ {
+ print_three(i, 0, 1, 2);
+ }
+ printf("\n");
+}
+
+
+int checkifisfullcited(int i, int nlines, int ret)
+{
+ char *TheadA = subAptr[0][i];
+ char *TheadB = subAptr[1][i];
+ char *TheadC = subAptr[2][i];
+ char *TheadD = subAptr[3][i];
+ int Thint = dqsort[i], mem = i, j = i, cnt = 0, rest = nlines;
+
+
+
+
+ if ( leval[i] != REJECTLINE
+ && isvintroduced(i) == KENTRY
+ )
+ {
+ printf("%%%%\n%%%%> Info: Short-%s-title %s is NOT yet introduced.\n", subAptr[3][i], subRptr[LINECOL][i]);
+ printK(i);
+
+
+ while (++i < nlines)
+ {
+ if (leval[i] == REJECTLINE);
+ else
+ if ( texcmp(subAptr[0][i], TheadA, dqsort[i], Thint) != 0
+ || texcmp(subAptr[1][i], TheadB, dqsort[i], Thint) != 0
+ || texcmp(subAptr[2][i], TheadC, dqsort[i], Thint) != 0
+ || texcmp(subAptr[3][i], TheadD, dqsort[i], Thint) != 0
+ )
+ break;
+ else
+ if (isvintroduced(i) == VENTRY)
+ {
+ if (subRptr[FNTCOL][j] != nofnt && subRptr[FNTCOL][i] != nofnt && fntwgt[j] != fntwgt[i] && strcmp(subRptr[PAGECOL][j], subRptr[PAGECOL][i]) == 0)
+ printf("%%%% Full titel %s and short title in FNTs T%d T%d.\n", subRptr[LINECOL][i], fntwgt[i], fntwgt[j]);
+ else
+ printf("%%%% ... Exchange it with the full-title in %s.\n", subRptr[LINECOL][i]);
+ mem = i;
+
+ leval[j] = DOUBLELINE;
+ ++ret;
+
+ break;
+ }
+ else
+ {
+ leval[i] = DOUBLELINE;
+ ++ret;
+ }
+ }
+ if (mem == j)
+ {
+ if (findFEmale(subAptr[0][mem]) != 0 || findFEmale(subAptr[1][mem]) != 0 || findFEmale(subAptr[2][mem]) != 0)
+ printf("%%%% ... Delete misplaced cmd %s or %s.\n", FEMALE, MALE);
+ else
+ printf("%%%% ... Change that short-title into missing full-title (%s)\?\n", KTIT);
+ }
+
+ rest = i;
+ }
+
+ i = mem;
+ if ( leval[i] != REJECTLINE
+ && isvintroduced(i) == VENTRY
+ )
+ {
+ while (++i < nlines)
+ {
+ if (leval[i] == REJECTLINE);
+ else
+ if ( texcmp(subAptr[0][i], TheadA, dqsort[i], Thint) != 0
+ || texcmp(subAptr[1][i], TheadB, dqsort[i], Thint) != 0
+ || texcmp(subAptr[2][i], TheadC, dqsort[i], Thint) != 0
+ || texcmp(subAptr[3][i], TheadD, dqsort[i], Thint) != 0
+ )
+ break;
+ else
+ if (isvintroduced(i) == VENTRY)
+ {
+ ++cnt;
+ if (cnt == 1)
+ printf("%%%%\n%%%%> Info: ");
+ else if (cnt < MAXINFO)
+ printf("%%%%> ");
+ if (cnt < MAXINFO)
+ {
+ printf("Re-introduction of "); /* intro cnt+1 */
+ if (cnt > 1) printf("that ");
+ printf("short-%s-title in %s.\n", subAptr[3][i], subRptr[LINECOL][i]);
+ }
+ if (cnt == 1)
+ {
+ printK(i);
+ printf("%%%% First introduction has been in %s (%s).\n", subRptr[LINECOL][mem], KTIT);
+ }
+
+ leval[i] = REDEF1LINE;
+ ++ret;
+ }
+ else
+ {
+ leval[i] = DOUBLELINE;
+ ++ret;
+ }
+ }
+
+ if (cnt+1 > MAXINFO)
+ printf("%%%%> This have been the first %d (of %d) intros of that short-title.\n", MAXINFO, cnt+1);
+
+ rest = i;
+ }
+
+ i = rest;
+ while (++i < nlines)
+ {
+ if (leval[i] == REJECTLINE);
+ else
+ if ( texcmp(subAptr[0][i], TheadA, dqsort[i], Thint) == 0
+ && texcmp(subAptr[1][i], TheadB, dqsort[i], Thint) == 0
+ && texcmp(subAptr[2][i], TheadC, dqsort[i], Thint) == 0
+ && texcmp(subAptr[3][i], TheadD, dqsort[i], Thint) == 0
+ )
+ {
+ leval[i] = DOUBLELINE;
+ ++ret;
+ }
+ else break;
+ }
+
+ return ret;
+}
+
+
+void checkmanipulationk(int i)
+{
+
+ if ( leval[i] != REJECTLINE
+ && isvintroduced(i) == ERRENTRY
+ )
+ {
+ printf("%%%%\n%%%%> Warning: Reference %s has unknown status.\n", subRptr[LINECOL][i]);
+ printK(i);
+ }
+}
+
+
+void checkshortmismatch(int i, const int nlines, const int mem)
+{
+ while (i < nlines)
+ {
+ if ( texcmp(subAptr[0][i], subAptr[0][mem], dqsort[i], dqsort[mem]) == 0
+ && texcmp(subAptr[1][i], subAptr[1][mem], dqsort[i], dqsort[mem]) == 0
+ && texcmp(subAptr[2][i], subAptr[2][mem], dqsort[i], dqsort[mem]) == 0
+ && texcmp(subAptr[3][i], subAptr[3][mem], dqsort[i], dqsort[mem]) != 0
+ )
+ {
+ printf("%%%%\n%%%%> Warning: SAME short-title used for ...li and ...qu:\n");
+ printK(i);
+ printf("%%%% See %s in %s and %s in %s.\n", subAptr[3][i], subRptr[LINECOL][i], subAptr[3][mem], subRptr[LINECOL][mem]);
+ }
+ else break;
+
+ ++i;
+ }
+}
+
+
+int double_k(int nlines, int deepsort)
+{
+ int i, ret = 0, mem = 0;
+ char *TheadA = subAptr[0][0];
+ char *TheadB = subAptr[1][0];
+ char *TheadC = subAptr[2][0];
+ char *TheadD = subAptr[3][0];
+ int Thint = dqsort[0];
+
+
+ i = 0; while (i < nlines)
+ {
+ if ( findFEmale(subAptr[0][i]) != 0
+ || findFEmale(subAptr[1][i]) != 0
+ || findFEmale(subAptr[2][i]) != 0
+ )
+ {
+ printf("%%%%\n%%%%> Warning: %s or %s in short-%s-title %s:\n", FEMALE, MALE, subAptr[3][i], subRptr[LINECOL][i]);
+ printK(i);
+ if (isvintroduced(i) == VENTRY)
+ printf("%%%% ... That k-entry was generated automatically from a v-entry.\n");
+ }
+ ++i;
+ }
+
+ i = 0; while (i < nlines)
+ {
+ if (leval[i] == REJECTLINE)
+ {
+ ++ret; /* Anzahl bereits auskommentierter Zeilen */
+ }
+ ++i;
+ }
+
+ ret = checkifisfullcited(0, nlines, ret);
+ checkmanipulationk(0);
+
+ i = 1; while (i < nlines)
+ {
+ if ( leval[i-1] != REJECTLINE
+ && (
+ texcmp(subAptr[0][i], TheadA, dqsort[i], Thint) != 0
+ || texcmp(subAptr[1][i], TheadB, dqsort[i], Thint) != 0
+ || texcmp(subAptr[2][i], TheadC, dqsort[i], Thint) != 0
+ || texcmp(subAptr[3][i], TheadD, dqsort[i], Thint) != 0
+ )
+ )
+ {
+ TheadA = subAptr[0][i];
+ TheadB = subAptr[1][i];
+ TheadC = subAptr[2][i];
+ TheadD = subAptr[3][i];
+ Thint = dqsort[i];
+ ret = checkifisfullcited(i, nlines, ret);
+ checkshortmismatch(i, nlines, mem);
+ mem = i;
+ checkSTUFFblock("vkc-seps after", i, nlines, deepsort, deepsort);
+ }
+
+ checkmanipulationk(i);
+
+ ++i;
+ }
+
+ return ret;
+}
+
+
+int doubleventries(int nlines, int deepsort)
+{
+ int ret = 0, i = 1, alast = -1, ainfos = 0, aget = 0, mem = -1, difftitle = 0, shown = 0;
+
+ /* geht davon aus, dass count_rejected nur REJECTLINE behandelt */
+ /* und doubleauthor commentANDignlines unveraendert laesst! */
+
+ while (i < nlines)
+ {
+ if ( texcmp(subAptr[0][i], subAptr[0][i-1], dqsort[i], dqsort[i-1]) == 0
+ && texcmp(subAptr[1][i], subAptr[1][i-1], dqsort[i], dqsort[i-1]) == 0
+ && texcmp(subAptr[2][i], subAptr[2][i-1], dqsort[i], dqsort[i-1]) == 0
+ && texcmp(subAptr[3][i], subAptr[3][i-1], dqsort[i], dqsort[i-1]) == 0
+ )
+ {
+ if (mem < 0) mem = i-1;
+
+ if (alast < i-1)
+ {
+ if (ainfos < MAXINFO)
+ {
+ printf("%%%%\n%%%%> Info: Identical full-titles %s, %s:\n", subRptr[LINECOL][i-1], subRptr[LINECOL][i]);
+ printV(i);
+ ainfos+=2;
+ ++shown;
+ }
+ else
+ ++difftitle;
+ aget +=2;
+ }
+ else
+ {
+ if (ainfos < MAXINFO)
+ {
+ printf("%%%%> ... and the same entry again from %s.\n", subRptr[LINECOL][i]);
+ ainfos+=1;
+ }
+ aget +=1;
+ }
+ alast = i;
+
+
+ if ( leval[i] != REJECTLINE
+ && leval[i-1] != REJECTLINE
+ )
+ {
+ leval[i] = DOUBLELINE;
+ ++ret;
+
+ if (mem == i-1) checkSTUFFblock("v-seps after", mem, nlines, deepsort, deepsort);
+ }
+ }
+ else mem = -1;
+
+ ++i;
+ }
+
+ if (ainfos > 1)
+ {
+ printf("%%%%\n%%%%> This have been the first %d (of %d) entries", ainfos, aget);
+ if (shown > 1)
+ printf(" (%d different titles)", shown);
+ printf("\n%%%% which are repeatingly cited");
+ if (aget > MAXINFO)
+ printf(" (further %d different titles)", difftitle);
+ printf(".\n%%%%\n");
+ }
+
+ return ret;
+}
+
+
+int doubleauthor(const char *entry, int nlines)
+{
+ int i, num = 0, len = strlen(entry), killpos, hint, Adq;
+ char a[MAXLEN], *p, xx[1], *AAp, *ABp, *ACp;
+
+ strcpy(a, entry);
+
+ i = 0; while (i < nlines)
+ {
+ if (findFEmale(subAptr[0][i]) != 0)
+ { printf("%%%%\n%%%%> Warning: %s or %s in lastname instead firstname %s:\n", FEMALE, MALE, subRptr[LINECOL][i]);
+ printV(i);
+ }
+ if (findFEmale(subAptr[2][i]) != 0)
+ { printf("%%%%\n%%%%> Warning: %s or %s in OptArg %s:\n", FEMALE, MALE, subRptr[LINECOL][i]);
+ printV(i);
+ }
+ ++i;
+ }
+
+ while(--nlines > 0)
+ {
+ if (*subAptr[0][nlines] == '\0' && *subAptr[1][nlines] == '\0') continue;
+ if (leval[nlines] == REJECTLINE) continue;
+
+ hint = nlines-1;
+ while(hint >= 0 && leval[hint] == REJECTLINE) --hint;
+ if (hint < 0) break;
+ AAp = subAptr[0][hint];
+ ABp = subAptr[1][hint];
+ Adq = dqsort[hint];
+ ACp = subAptr[2][hint];
+
+ if ( authorcmp(subAptr[0][nlines], AAp, dqsort[nlines], Adq) == 0
+ && authorcmp(subAptr[1][nlines], ABp, dqsort[nlines], Adq) == 0
+ )
+ {
+ i = len; p = lineptr[nlines] + len;
+
+ while (*p == ' ') { a[i++] = ' '; ++p; }
+ a[i++] = '{'; a[i] = '\0';
+ p += nextbracket(p, '{', '}');
+ killpos = i + 1;
+ strcat(a, IKILLNAME); i = i + strlen(IKILLNAME);
+ a[i++] = '}';
+
+ while (*p == ' ') { a[i++] = ' '; ++p; }
+ a[i++] = '{';
+ p += nextbracket(p, '{', '}');
+ a[i++] = '}';
+
+ while (*p == ' ') { a[i++] = ' '; ++p; }
+ a[i++] = '{';
+ p += nextbracket(p, '{', '}');
+
+ if (findFEmale(ABp) == 0 && findFEmale(subAptr[1][nlines]) == 1)
+ { printf("%%%%\n%%%%> Warning: No %s or %s in firstname %s:\n", FEMALE, MALE, subRptr[LINECOL][hint]);
+ printV(hint);
+ }
+
+ xx[0] = '0';
+ i = subdoubleauthors(0, 0, a, i, i, ACp, subAptr[2][nlines], hint, nlines, findFEmale(ABp), xx);
+ if (i < 0)
+ { i = -i; a[killpos] = PLURALCHAR;
+ a[i++] = '}';
+ if (xx[0] != '0') i = insertfalse(p, a, i);
+ else while (*p != '\0' && i < MAXLEN) a[i++] = *p++;
+ }
+ else
+ { a[i++] = '}';
+ while (*p != '\0' && i < MAXLEN) a[i++] = *p++;
+ }
+
+
+ if (i < MAXLEN)
+ { ++num;
+ myfree(lineptr[nlines]);
+ lineptr[nlines] = strnmalloc(a, i+1);
+ }
+ else printf("%%%%\n%%%%> Error: Can\'t replace {%s}{%s} by %s (too long)\n", subAptr[0][nlines], subAptr[1][nlines], IKILLNAME);
+ }
+ }
+ return num;
+}
+
+
+void pauthorbrackwarn(int nline, const char *head)
+{
+ printf("%%%%\n%%%%> Warning outfile entry %d (in arg 3): Missing brackets as %s{..}{..}\n", nline+1, head);
+}
+
+
+const char *authortable[][2] = {
+ { "\\vauthor\t", "\\vauthor" },
+ { "\\midvauthor\t", "\\midvauthor" },
+ {NULL, NULL}};
+#define NAUTHOR 2
+
+
+int findauthor(const char *s)
+{
+ int r = 0;
+
+ while(*s != '\0')
+ {
+ if (*s == '\\')
+ {
+ if (*(s+1) == '\\')
+ {
+ ++s; ++r;
+ }
+ else if (texlistnum(s, NAUTHOR, authortable) > -1) break;
+ }
+ ++s; ++r;
+ }
+
+ if (*s == '\0') r = -1;
+
+ return r;
+}
+
+
+int subdoubleauthors(int found, int addtxt, char a[], int remi, int i, const char *q, const char *p, int qline, int pline, int fe, char xx[])
+{
+ int ql = 0, pl, len, haveto, havedone = 0, ntxt = 0, nn, j;
+ char qbuf[MAXLEN] = "", pbuf[MAXLEN] = "";
+ const char *pmem, *qin = q, *pin = p;
+ const char *head;
+
+ while(*q != '\0')
+ {
+ haveto = 0;
+ if ((j=texlistnum(q, NAUTHOR, authortable)) > -1)
+ {
+ head = authortable[j][1];
+ haveto = 1;
+ }
+ else if (*q != ' ') ntxt = 1;
+
+ if (haveto == 1)
+ {
+ q += llstrlen(authortable[j][0]);
+ while(*q == ' ') ++q;
+ if (*q == '{' && (ql = nextbracket(q, '{', '}')) > 1)
+ {
+ ql = mystrncpy(qbuf, q, ql);
+ q += ql;
+ while(*q == ' ') ++q;
+ ql = ql + (len=nextbracket(q, '{', '}'));
+ if (len > 1)
+ {
+ strncat(qbuf, q, len);
+ q += len;
+ }
+ }
+ break;
+ }
+ else
+ if (*q == '\\' && *(q+1) == '\\')
+ {
+ ntxt = 1;
+ q++;
+ }
+
+ q++;
+ }
+
+
+ while(*p != '\0' && i < MAXLEN-1)
+ {
+ haveto = 0;
+ if ((j=texlistnum(p, NAUTHOR, authortable)) > -1)
+ {
+ head = authortable[j][1];
+ haveto = 1;
+ }
+ else if (*p != ' ') ntxt = 1;
+
+ if (haveto == 1)
+ {
+ pmem = p;
+ p += llstrlen(authortable[j][0]);
+ while(*p == ' ') ++p;
+ if (*p == '{' && (pl = nextbracket(p, '{', '}')) > 1)
+ {
+ pl = mystrncpy(pbuf, p, pl);
+ p += pl;
+ while(*p == ' ') ++p;
+ pl = pl + (len=nextbracket(p, '{', '}'));
+ if (len > 1)
+ { strncat(pbuf, p, len);
+ p += len;
+ if ( authorcmp(qbuf, pbuf, dqsort[qline], dqsort[pline]) == 0
+ && strcmp(qbuf, "{}{}") != 0
+ && strcmp(qbuf, "{ }{ }") != 0
+ && i + strlen(head) + 4 + strlen(NKILLNAME) + 1 < MAXLEN
+ )
+ {
+ a[i] = '\0';
+ strcat(a, head); i += strlen(head);
+ strcat(a, " {}{"); i += 4;
+ strcat(a, NKILLNAME); i += strlen(NKILLNAME);
+ strcat(a, "}"); i += 1;
+ havedone = 1;
+ }
+ else
+ { p = pmem;
+ }
+ }
+ else
+ { p = pmem; pauthorbrackwarn(pline, head);
+ }
+ break;
+ }
+ else
+ { p = pmem; pauthorbrackwarn(pline, head);
+ }
+ }
+ else
+ if (*p == '\\' && *(p+1) == '\\')
+ {
+ ntxt = 1;
+ a[i++] = *p++;
+ }
+
+ a[i++] = *p++;
+ }
+
+
+ if (havedone == 0)
+ {
+ if (found > 0 && addtxt == 0 && fe == 1 && findauthor(qin) == -1)
+ { nn = 1; i = remi;
+ p = pin;
+ while (*p == ' ') ++p;
+ if (ntxt == 1) xx[0] = '1';
+ } else nn = 0;
+
+ while (*p != '\0' && i < MAXLEN) a[i++] = *p++;
+ if (nn == 1) i = -i;
+ }
+ else
+ { if (ntxt > 0) addtxt = ntxt;
+ i = subdoubleauthors(++found, addtxt, a, remi, i, q, p, qline, pline, fe, xx);
+ }
+
+ return i;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int readlines(int maxlines, int nlines, const char *head)
+{
+ int len, headlen = strlen(head);
+ char *p, linestr[MAXLEN];
+
+ while ((len = ignFRONTSPACESgetline(linestr, MAXLEN)) > 0)
+ {
+ if ( strncmp(linestr, head, headlen) == 0
+ && isLaTeXcmdletter(*(linestr+headlen)) == 0
+ )
+ {
+ if ( nlines >= maxlines
+ || (p = (char *) malloc(len)) == NULL
+ ) return -1;
+ else
+ { linestr[len-1] = '\0';
+ strcpy(p, linestr);
+ lineptr[nlines++] = p;
+ }
+ }
+ }
+ return nlines;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Kehrt mit -argc+1 zur"uck, wenn Option da ist. */
+
+int single_option(int argc, char *argv[], char a[], char b[])
+{
+
+ int l = 1, c;
+ int _found = 0;
+
+ while (l < argc)
+ {
+ if (strcmp(argv[l], a) == 0 || strcmp(argv[l], b) == 0)
+ { _found = 1;
+ /* myfree(argv[l]); */
+ --argc;
+ c = l;
+ while (c < argc)
+ { argv[c] = argv[c+1];
+ ++c;
+ }
+ --l;
+ }
+ ++l;
+ }
+ if (_found == 1) return -argc;
+ else return argc;
+}
+
+
+char *arg_option(int argc, char *argv[], char a[], char b[], char *info)
+{
+
+ int l = 1, c, found = 0;
+ char *p = NULL;
+
+ if (argc > 1 && (strcmp(argv[argc-1], a) == 0 || strcmp(argv[argc-1], b) == 0))
+ {
+ printf("%%%%\n%%%%> Error: %s is not followed by an argument %s.\n", b, info);
+ announceexit("get an arg option without arg");
+ exit(1);
+ }
+
+ while (l < argc-1)
+ {
+ if (strcmp(argv[l], a) == 0 || strcmp(argv[l], b) == 0)
+ {
+ /* myfree(argv[l]); */
+ p = argv[l+1];
+ ++found;
+ argc -= 2;
+ c = l;
+ while (c < argc)
+ {
+ argv[c] = argv[c+2];
+ ++c;
+ }
+ --l;
+ }
+ ++l;
+ }
+
+ if (found > 1)
+ {
+ printf("%%%%\n%%%%> Error: %s [arg] setted %d times.\n", a, found);
+ announceexit("do not accept multiple defined arg options");
+ exit(1);
+ }
+
+ return p;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Erkennt unbekannte Optionen. */
+
+int surp_option(int argc, char *argv[])
+{
+ int l = 1, c;
+
+ while (l < argc)
+ {
+ if (*argv[l] == '-')
+ { printf("%%%%\n%%%%> Error: Get unknown option \"%s\"!\n", argv[l]);
+ /* myfree(argv[l]); */
+ --argc;
+ c = l;
+ while (c < argc)
+ { argv[c] = argv[c+1];
+ ++c;
+ }
+ --l;
+ }
+ ++l;
+ }
+ return argc;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+char *makename(const char *prefix, const char *suffix)
+{
+ char fname[MAXFILENAMLEN];
+ int plen;
+
+ plen = mystrncpy(fname, prefix, MAXFILENAMLEN-1);
+ strncat(fname, suffix, MAXFILENAMLEN-plen-1);
+
+ if (plen + strlen(suffix) > MAXFILENAMLEN-1)
+ {
+ announceexit("get a too long path/file name");
+ printf("%%%%\n%%%% \"%s%s\"\n", prefix, suffix);
+ exit(1);
+ }
+
+ return strnmalloc(fname, strlen(fname)+1);
+}
+
+
+int dofile(int filenum, char *filenam, int nlines, const char *entry, const char *formO, int deep, int deepsort, int ventry)
+{
+ int alllines = nlines;
+
+ infile = fopen(filenam, "r");
+
+ if (infile != NULL)
+ {
+ printf("%%%%> Search *\"%s\"* in file \"%s\" ...\n", entry, filenam);
+
+ if ((alllines = readlines(MAXLINES, nlines, entry)) >= 0)
+ {
+ if (alllines-nlines > 0 && MAXLINES > 0)
+ {
+ printf("%%%% ^^^^^^^^^^^ ... get %d line(s)", alllines-nlines);
+ if (alllines*100/MAXLINES > 0)
+ printf(" [reach %d%% of capacity]", alllines*100/MAXLINES);
+ printf(".\n");
+ }
+ getbrackets(nlines, alllines, entry, deep, filenum, formO, ventry);
+ dopgfntnumberweight(nlines, alllines);
+ dodqdeepsort(nlines, alllines, deepsort);
+ vorbereiten(nlines, alllines, deepsort, ventry);
+ }
+ else printf("%%%%\n%%%%> Error: More than %d input entries.\n", MAXLINES); /* exit(1) bei dofile */
+ }
+ else
+ { printf("%%%%\n%%%%> Error: No file \"%s\".\n", filenam);
+ openfailed(filenam);
+ }
+
+ if (infile != NULL) fclose(infile);
+
+ return alllines;
+}
+
+
+char *switchtodospath(char s[])
+{
+ int i = 0;
+
+ while (s[i] != '\0')
+ {
+ if (s[i] == '/') s[i] = '\\';
+ ++i;
+ }
+
+ return s;
+}
+
+
+int getfilenames(int nlines, int usedospath)
+{
+ int i = 0, j = 0, len;
+ char *p;
+
+ while (i < nlines)
+ {
+ p = setptrtofirstbracket(lineptr[i]);
+ if (*p == '{' && (len=nextbracket(p, '{', '}')) > 2)
+ { filelist[j] = strnmalloc(p+1, len-1);
+ p += len;
+ if (usedospath == 1)
+ filelist[j] = switchtodospath(filelist[j]);
+ ignoreadditionaltext(p, "\\@input", filelist[j]);
+ ++j;
+ }
+ else printf("%%%%\n%%%%> Error after \\@input-cmd %d: Empty, or not matching brackets.\n", i+1);
+ myfree(lineptr[i]);
+ ++i;
+ }
+ if (i != j && i != 0) printf("%%%% %d input file(s) remain(s).\n", j);
+ return j;
+}
+
+
+int userusesdq(int deepsort, int linec)
+{
+ int i = 0;
+ char *p;
+
+ while (i < deepsort)
+ {
+ p = subAptr[i++][linec];
+ while (*p != '\0')
+ {
+ if (*p == '\"') return 1;
+ if (*p == '\\' && *(p+1) != '\0') ++p;
+ ++p;
+ }
+ }
+
+ return 0;
+}
+
+
+void freeall(int nlines, int deep, int deepsort)
+{
+ int linec = 0, i;
+
+ if (deepsort > deep) intern_err(22); /* deepsort > deep */
+
+ while(linec < nlines)
+ { myfree(lineptr[linec]);
+ i = 0; while (i < deep) myfree(subAptr[i++][linec]);
+ i = 0; while (i < deepsort) myfree(subBptr[i++][linec]);
+ while (i < deep ) if (subBptr[i++][linec] != mydefault) intern_err(23); /* FREEALL */
+ i = 0; while (i < deepsort) myfree(subCptr[i++][linec]);
+ while (i < deep ) if (subCptr[i++][linec] != mydefault) intern_err(24); /* FREEALL */
+ i = 0; while (i < BAALLRCOLS) myfree(subRptr[i++][linec]);
+ ++linec;
+ }
+}
+
+
+void testdrucken(int linec, int alllines, int deep, char *subptr[MAXBACOLS][MAXLINES])
+{
+ int i;
+
+ while (linec < alllines)
+ {
+ i = 0;
+ while (i < deep)
+ {
+ printf(" (%s)", subptr[i][linec]);
+ ++i;
+ }
+ printf(" [\"=%d, %d]", dqsort[linec], getarabicnum(subRptr[DQCOL][linec]));
+ printf("\n");
+ ++linec;
+ }
+}
+
+
+int check_kandk(int nlines)
+{
+ int i = 0;
+ int outkurz = 0;
+ int ktit = 0;
+
+ while (i < nlines)
+ {
+ outkurz += num_of_cmds_in_str(lineptr[i], KURZCMD);
+ ktit += num_of_cmds_in_str(lineptr[i], KTITCMD);
+ ++i;
+ }
+
+ if (outkurz > 0 && ktit > 0)
+ {
+ printf("%%%%\n%%%%> Warning: %d time(s) %s and %d time(s) %s found;\n", outkurz, KURZ, ktit, KTIT);
+ printf("%%%% see %s warnings in the output file.\n", KURZ);
+ }
+
+ if (outkurz > 0 && ktit > 0) return 1;
+ return 0;
+}
+
+
+int hasinnerentry(const char *p, const char *icmdlist[][2], const int num)
+{
+ int r = -1;
+
+ while (*p != '\0')
+ {
+ if (*p == '\\')
+ {
+ if (*(p+1) == '\\') ++p;
+ else
+ if ((r=innerentry(p, icmdlist, num)) > -1) break;
+ }
+ ++p;
+ }
+
+ return r;
+}
+
+
+int check_ktit(int nlines, int ventry)
+{
+ int i = 0, ohask = 0, ohasnok = 0, elsehask = 0, shadowedlines = 0, unshadnum = 0, l, ll, badlines = 0;
+ int ohk[MAXINFO];
+
+ if (ventry != IS_V) return 0;
+
+ while (i < nlines)
+ {
+ if (subAptr[VCOLS-1][i] == mydefault)
+ {
+ ++badlines;
+ }
+ else
+ {
+ l = num_of_cmds_in_str(subAptr[VCOLS-1][i], KTITCMD);
+ unshadnum += (ll=unshielded_cmds_in_str(subAptr[VCOLS-1][i], KTITCMD));
+
+ if (l > ll)
+ {
+ if (shadowedlines == 0)
+ printf("%%%%\n%%%%> Warning: { %s } is shadowed by brackets ...\n", KTIT);
+ printf("%%%% ... in entry from %s:\n", subRptr[LINECOL][i]);
+ printV(i);
+ ++shadowedlines;
+ }
+
+ if (hasinnerentry(subAptr[VCOLS-1][i], innerK_PER_ARQ_cmd, INNERTITLES) > -1)
+ {
+ if (l > 0)
+ {
+ ++ohask;
+ }
+ else
+ {
+ if (ohasnok < MAXINFO) ohk[ohasnok] = i;
+ ++ohasnok;
+ }
+ }
+ else
+ if (l > 0)
+ ++elsehask;
+ }
+ ++i;
+ }
+
+ if (shadowedlines > 0) printf("%%%%> A shadowed outer %s can not create %s in your text;\n%%%% a shadowed inner %s can not create a shortened reference in the list.\n%%%%\n", KTIT, ANNOUNCEKTIT, KTIT);
+
+ if (badlines > 0)
+ printf("%%%%> %s: Can\'t check all entries (%d are corrupt).\n", KTIT, badlines);
+
+
+ if (badlines < nlines)
+ {
+
+ if (ohask > 0 && ohasnok > 0)
+ {
+ printf("%%%%> Info: Items with inner title: %d with outer %s found, %d without.\n", ohask, KTIT, ohasnok);
+ }
+
+
+ if (ohasnok > 0)
+ {
+ printf("%%%%\n%%%%> Info: Entries with inner reference and no outer %s ...\n", KTIT);
+ i = 0;
+ while (i < MAXINFO && i < ohasnok)
+ {
+ l = ohk[i];
+ printf("%%%% ... from %s:\n", subRptr[LINECOL][l]);
+ printV(l);
+ ++i;
+ }
+ if (ohasnok > 0)
+ printf("%%%%> This have been the first %d (of %d) entries without outer %s.\n%%%%\n", i, ohasnok, KTIT);
+ }
+
+
+ if ( (shadowedlines == 0 && badlines == 0)
+ || (elsehask + ohask == 0 && badlines == 0)
+ )
+ printf("%%%%> Info: ");
+
+
+ if (shadowedlines == 0 && badlines == 0 && (ohask > 0 || elsehask > 0))
+ {
+ if (elsehask+ohask == nlines) printf("All");
+ else printf("NOT all");
+ printf(" v-entries have (outer) %s cmds in their last arg", KTIT); /* VCOLS */
+ if (elsehask+ohask == nlines) printf(".\n");
+ else printf(":\n%%%% In case of %s see messages in the output file.\n", ANNOUNCEKTIT);
+
+ if (nlines < unshadnum)
+ printf("%%%% I count %d unshadowed %s in %d entries (%d too much).\n", unshadnum, KTIT, nlines, unshadnum-nlines);
+ }
+ else if (elsehask + ohask == 0 && badlines == 0)
+ {
+ printf("You\'ve never used %s in last v-args:\n", KTIT);
+ printf("%%%% No info on outer %s in output file; no %s done.\n", KTIT, ANNOUNCEKTIT);
+ }
+ }
+
+
+ l = 1;
+ if (elsehask + ohask == 0) l += 4;
+ if (ohask > 0 && ohasnok > 0) l += 2;
+ if (shadowedlines > 0) ++l;
+ return l;
+}
+
+
+void prepareoutput(const char *entry, const char *suffix, int deep, int deepsort, int filec, char *arg_i, char *arg_o, int prep_kill, const char *formO, int ventry, int printsort)
+{
+ int nlines = 0, i = 0, extralines = 0, commentANDignlines = 0;
+ int filenum = -1, kandkused = 0, oktitused = 0;
+ char *outname = mydefault;
+
+ if (arg_o == NULL) outname = makename(arg_i, suffix);
+ else outname = makename(arg_o, suffix);
+
+ otherktiterr = 0;
+
+ while (i < filec)
+ {
+ if (filec > 0) filenum = i+1;
+ if ((nlines = dofile(filenum, filelist[i++], nlines, entry, formO, deep, deepsort, ventry)) < 0)
+ {
+ announceexit("get a too big list of entries");
+ exit(1);
+ }
+ }
+
+ if (MAXLINES > 0 && nlines*100/MAXLINES > 90)
+ printf("%%%% *** WARNING: Have capacity for only %d further entries! ***\n%%%%\n", MAXLINES-nlines);
+
+
+ /* printf("\nC: "); testdrucken(0, nlines, deep, subCptr); */
+ /* printf("\nB: "); testdrucken(0, nlines, deep, subBptr); */
+ /* printf("\nA: "); testdrucken(0, nlines, deep, subAptr); */
+ /* testdrucken(0, nlines, BAALLRCOLS, subRptr); */
+
+
+ if (nlines > 0)
+ {
+ if (nlines > 1) printf("%%%% Sort %d lines. Wait.\n", nlines);
+ QQsort(0, nlines-1, deep, deepsort);
+
+
+ if (prep_kill == DOKILLAUTHORS && nlines > 1)
+ { printf("%%%%> -k: Search multiply used authors ...\n");
+ printf("%%%%> -k: Authors in %d line(s) IDEMized [identical full-titles included].\n", doubleauthor(entry, nlines));
+ commentANDignlines = count_rejected(nlines);
+ }
+ else
+ if (prep_kill == DOKILLABBREVS && nlines > 0)
+ { printf("%%%% Search multiply used or empty abbreviations ...\n");
+ commentANDignlines = double_or_empty_abbreviation(nlines, deepsort, deep);
+ }
+ else
+ if (prep_kill == DOKILLREGISTS && nlines > 0)
+ { printf("%%%% Search multiply used or empty entries ...\n");
+ if (*suffix == '.')
+ commentANDignlines = double_or_empty_arqperregisters(nlines, ventry, suffix+1, deepsort, deep);
+ else intern_err(25); /* ERROR with \\fill... */
+ }
+ else
+ if (prep_kill == DOKILLK && nlines > 0)
+ { printf("%%%% Search multiply used short-titles ...\n");
+ commentANDignlines = double_k(nlines, deepsort);
+ }
+ else commentANDignlines = count_rejected(nlines);
+
+
+ if (prep_kill == DOKILLAUTHORS || prep_kill == NOKILLAUTHORS)
+ {
+ if (deep == VCOLS && ventry == IS_V)
+ commentANDignlines = commentANDignlines + doubleventries(nlines, deepsort);
+ else intern_err(26); /* ERROR with doubleventries */
+ }
+
+ kandkused = check_kandk(nlines);
+ oktitused = check_ktit(nlines, ventry);
+
+ if ((outfile = fopen(outname, "w")) == NULL)
+ {
+ printf("%%%%\n%%%%> Error: Can\'t write to file \"%s\".\n", outname);
+ openfailed(outname);
+ }
+ else
+ { printf("%%%%> Write %d item(s) to file \"%s\".\n", nlines-commentANDignlines, outname);
+ if ((extralines = writelines(nlines, DQCOL, LANCOL, commentANDignlines, deepsort, filec, printsort, kandkused, oktitused)) > 0)
+ printf("%%%% (Have added %d line(s) containing commands for LaTeX.)\n", extralines);
+ }
+
+ if (outfile != NULL) { fclose(outfile); fflush(outfile); }
+ freeall(nlines, deep, deepsort);
+ }
+ else
+ {
+ printf("%%%% No entries. ");
+ if ((outfile = fopen(outname, "r")) != NULL)
+ {
+ fclose(outfile); fflush(outfile);
+ if ((outfile = fopen(outname, "w")) != NULL)
+ {
+ fclose(outfile); fflush(outfile);
+ printf("*DELETE* old");
+ remove(outname);
+ }
+ else printf("CAN\'T delete");
+ }
+ else printf("Do NOT create");
+ printf(" file \"%s\".\n", outname);
+ }
+
+ outhline();
+
+ myfree(outname);
+}
+
+
+#define ALLWEIGHT ENDWEIGHT-2
+void setnewweight(const int pg, const char *p, const char *opt)
+{
+ int lauf = BEGINWEIGHT; /* 4 ... 7+2 */
+ int have_n = 0;
+ int have_R = 0, typed_R = 0;
+ int have_r = 0, typed_r = 0;
+ int have_A = 0, typed_A = 0;
+ int have_a = 0, typed_a = 0;
+ int have_s = 0;
+ int wrong_letter = 0;
+ const char *q = p;
+
+ while(*p != '\0' && lauf < ALLWEIGHT)
+ {
+ if (*p == 'n') { if (pg == 1) { pg_arabic = lauf; } else { fn_arabic = lauf; } ++have_n; }
+ else if (*p == 'R') { if (pg == 1) { pg_bigroman = lauf; get_R_pg = BA_TRUE; } else { fn_bigroman = lauf; get_R_fn = BA_TRUE; } ++have_R; ++have_A; ++typed_R; }
+ else if (*p == 'r') { if (pg == 1) { pg_smallroman = lauf; get_r_pg = BA_TRUE; } else { fn_smallroman = lauf; get_r_fn = BA_TRUE; } ++have_r; ++have_a; ++typed_r; }
+ else if (*p == 'A') { if (pg == 1) { pg_bigletter = lauf; get_A_pg = BA_TRUE; } else { fn_bigletter = lauf; get_A_fn = BA_TRUE; } ++have_A; ++have_R; ++typed_A; }
+ else if (*p == 'a') { if (pg == 1) { pg_smallletter = lauf; get_a_pg = BA_TRUE; } else { fn_smallletter = lauf; get_a_fn = BA_TRUE; } ++have_a; ++have_r; ++typed_a; }
+ else if (*p == 's') { if (pg == 1) { pg_symbol = lauf; } else { fn_symbol = lauf; } ++have_s; }
+ else { ++wrong_letter; break; }
+ ++lauf; ++p;
+ }
+
+
+ if ( *p != '\0'
+ || lauf != ALLWEIGHT
+ || have_n != 1
+ || have_R != 1
+ || have_r != 1
+ || have_A != 1
+ || have_a != 1
+ || have_s != 1
+ )
+ {
+ printf("%%%%\n%%%%> Error: Not the %d expected letters in \"%s %.29s\".\n", ALLWEIGHT-BEGINWEIGHT, opt, q);
+ if (strlen(q) <= ALLWEIGHT-BEGINWEIGHT)
+ {
+ printf("%%%% Missing:");
+ if ( have_n == 0) printf(" [n]");
+ if ( have_s == 0) printf(" [s]");
+ if (typed_R == 0 && typed_A == 0) printf(" [R *or* A]");
+ if (typed_r == 0 && typed_a == 0) printf(" [r *or* a]");
+ }
+ else
+ {
+ printf("%%%% Error: More than %d letters", ALLWEIGHT-BEGINWEIGHT);
+ }
+ printf(". E.g.: snRa, nArs, Rrns, naAs.\n");
+ if ( have_n > 1
+ || have_s > 1
+ || typed_R > 1
+ || typed_A > 1
+ || typed_r > 1
+ || typed_a > 1
+ )
+ {
+ printf("%%%% Error: You have setted");
+ if (typed_A > 1) printf(" [A]");
+ if (typed_a > 1) printf(" [a]");
+ if ( have_n > 1) printf(" [n]");
+ if (typed_R > 1) printf(" [R]");
+ if (typed_r > 1) printf(" [r]");
+ if ( have_s > 1) printf(" [s]");
+ printf(" more than once.\n");
+ }
+ if ( (typed_A > 0 && typed_R > 0)
+ || (typed_a > 0 && typed_r > 0)
+ )
+ {
+ printf("%%%% Error: You have setted");
+ if (typed_A > 0 && typed_R > 0) printf(" [R] *and* [A]");
+ if (typed_A > 0 && typed_R > 0 && typed_a > 0 && typed_r > 0)
+ printf(", and ");
+ if (typed_a > 0 && typed_r > 0) printf(" [r] *and* [a]");
+ printf(".\n");
+ if ( (typed_a > 0 && typed_r > 0)
+ || (typed_A > 0 && typed_R > 0)
+ )
+ {
+ printf("%%%% ** A number like 'i' could mean 9 (alph), and 1 (roman). In xxxx,\n");
+ printf("%%%% ** you can only choose R and a, or R and r, or A and a, or A and r.\n");
+ }
+ }
+ if (wrong_letter > 0) printf("%%%% Break: Unexpected character \'%c\'.\n", *p);
+ announceexit("did not get 4 out of nRrAas (R or A, r or a)");
+ exit(1);
+ }
+
+
+ if (pg == 1)
+ {
+ if (get_r_pg == BA_FALSE) pg_smallroman = ++lauf;
+ if (get_R_pg == BA_FALSE) pg_bigroman = ++lauf;
+ if (get_a_pg == BA_FALSE) pg_smallletter = ++lauf;
+ if (get_A_pg == BA_FALSE) pg_bigletter = ++lauf;
+ }
+ else
+ {
+ if (get_r_fn == BA_FALSE) fn_smallroman = ++lauf;
+ if (get_R_fn == BA_FALSE) fn_bigroman = ++lauf;
+ if (get_a_fn == BA_FALSE) fn_smallletter = ++lauf;
+ if (get_A_fn == BA_FALSE) fn_bigletter = ++lauf;
+ }
+
+ if ((pg == 0 || pg == 1) && lauf == ENDWEIGHT);
+ else intern_err(27); /* setnewweight */
+}
+
+
+void print_arg_list(char *argv[], int argc)
+{
+ int l = 1;
+ while (l < argc) printf("%%%% %d: \"%s\"\n", l, argv[l++]);
+}
+
+
+int main(int argc, char *argv[])
+{
+ int nlines = 0;
+ int usedospath = 0;
+ int filec = 0;
+ int get_g = 0;
+ int printsort = 0;
+ char *inname = mydefault, *arg_i = NULL, *arg_o = NULL;
+
+
+ printf("\n%%%%> This is bibsort 2.2 (for help: %s -\?)\n", getmyname(argv[0], 37));
+ fprintf(stderr, "%%%% bibsort 2.2 is part of BibArts 2.2 (C) Timo Baumann 2019.\n");
+
+
+ argc = single_option(argc, argv, "-B", "-b");
+ if (argc < 0)
+ {
+ bago = 1;
+ argc = -argc;
+ }
+
+ argc = single_option(argc, argv, "-N1", "-n1");
+ if (argc < 0)
+ {
+ FntIndexOverPages = 0;
+ argc = -argc;
+ }
+
+ argc = single_option(argc, argv, "-c", "-C");
+ if (argc < 0)
+ { argc = -argc;
+ notext = 1;
+ }
+
+ soptarg = arg_option(argc, argv, "-S2", "-s2", "[sorting key: 4 out of nRrAas]");
+ if (soptarg != NULL)
+ {
+ argc -= 2;
+ setnewweight(1, soptarg, "-s2");
+ }
+
+ argc = single_option(argc, argv, "-S1", "-s1");
+ if (argc < 0)
+ { argc = -argc;
+ if ( get_R_pg == BA_FALSE
+ && get_A_pg == BA_FALSE
+ && get_a_pg == BA_FALSE
+ && get_r_pg == BA_FALSE
+ )
+ {
+ EinlROEMseiten = 1;
+ }
+ else
+ {
+ announceexit("get opt -s1 *and* -s2");
+ exit(1);
+ }
+ }
+
+ foptarg = arg_option(argc, argv, "-F2", "-f2", "[sorting key: 4 out of nRrAas]");
+ if (foptarg != NULL)
+ {
+ argc -= 2;
+ setnewweight(0, foptarg, "-f2");
+ }
+
+ argc = single_option(argc, argv, "-F1", "-f1");
+ if (argc < 0)
+ { argc = -argc;
+ if ( get_R_fn == BA_FALSE
+ && get_A_fn == BA_FALSE
+ && get_a_fn == BA_FALSE
+ && get_r_fn == BA_FALSE
+ )
+ {
+ ALPHmpfootnotes = 1;
+ }
+ else
+ {
+ announceexit("get opt -f1 *and* -f2");
+ exit(1);
+ }
+ }
+
+ argc = single_option(argc, argv, "-i=j", "-I=J");
+ if (argc < 0)
+ { argc = -argc;
+ igleichj = 1;
+ }
+
+ argc = single_option(argc, argv, "-D", "-d");
+ if (argc < 0)
+ { argc = -argc;
+ usedospath = 1;
+ }
+
+ argc = single_option(argc, argv, "-K", "-k");
+ if (argc < 0)
+ { argc = -argc;
+ kill = DOKILLAUTHORS;
+ }
+
+ argc = single_option(argc, argv, "-L", "-l");
+ if (argc < 0)
+ { argc = -argc;
+ ignorespaces = 1;
+ }
+
+ argc = single_option(argc, argv, "-H", "-h");
+ if (argc < 0)
+ { argc = -argc;
+ hy_as_space = 1;
+ }
+
+ argc = single_option(argc, argv, "-P", "-p");
+ if (argc < 0)
+ { argc = -argc;
+ registpoints = 1;
+ }
+
+ argc = single_option(argc, argv, "-T1", "-t1");
+ if (argc < 0)
+ { argc = -argc;
+ encode = 1;
+ }
+
+ argc = single_option(argc, argv, "-X", "-x");
+ if (argc < 0)
+ { argc = -argc;
+ nogsty = 1;
+ }
+
+ argc = single_option(argc, argv, "-M", "-m");
+ if (argc < 0)
+ { argc = -argc;
+ printsort = 1;
+ }
+
+ argc = single_option(argc, argv, "-G1", "-g1");
+ if (argc < 0)
+ { argc = -argc;
+ ++get_g;
+ german = 1;
+ }
+
+ argc = single_option(argc, argv, "-G2", "-g2");
+ if (argc < 0)
+ { argc = -argc;
+ if (get_g == 0) german = 2;
+ ++get_g;
+ }
+
+ if (get_g > 1)
+ {
+ announceexit("get opt -g1 *and* -g2");
+ exit(1);
+ }
+
+ argc = single_option(argc, argv, "-\?", "-h1"); /* 2.2: -h => hyphen */
+ if (argc < 0)
+ {
+ argc = -argc;
+ maininfo(argv[0]);
+ announceexit("get your question for help");
+ exit(1);
+ }
+
+ argc = single_option(argc, argv, "-\?\?", "-h2"); /* 2.2: -hh => -h2 */
+ if (argc < 0)
+ {
+ argc = -argc;
+ moreinfo();
+ announceexit("get your question for more help");
+ exit(1);
+ }
+
+ argc = single_option(argc, argv, "-R", "-r");
+ if (argc < 0)
+ {
+ argc = -argc;
+ licenseinfo();
+ announceexit("get your question for license informations");
+ exit(1);
+ }
+
+ if (argc < 2)
+ { if (argc == 1) maininfo(argv[0]);
+ announceexit("get no <FileNamePrefix> of an auxiliary file");
+ exit(1);
+ }
+
+ arg_i = arg_option(argc, argv, "-I", "-i", "<InputFilenamePrefix>");
+ if (arg_i != NULL)
+ {
+ argc -= 2;
+ }
+
+ arg_o = arg_option(argc, argv, "-O", "-o", "<OutputFilenamesPrefix>");
+ if (arg_o != NULL)
+ {
+ argc -= 2;
+ }
+
+ if (argc != surp_option(argc, argv))
+ {
+ announceexit("get an unknown -[option]");
+ exit(1);
+ }
+
+
+ if ( (argc == 2 && arg_i == NULL)
+ || (argc == 1 && arg_i != NULL)
+ )
+ {
+ if (argc == 2) { arg_i = argv[1]; --argc; }
+ inname = makename(arg_i, AUX_SUFFIX);
+ infile = fopen(inname, "r");
+ }
+ else
+ { printf("%%%%\n%%%%> Error: Too many arguments:\n");
+ print_arg_list(argv, argc);
+ printf("%%%% Since vers 2.1, you have to use -o <OutputFileNamesPrefix>.\n");
+ announceexit("get more than one file name in command line");
+ exit(1);
+ }
+
+ if (infile == NULL)
+ {
+ printf("%%%%\n%%%%> Error: No file \"%s\".\n", inname);
+ openfailed(inname);
+ announceexit("did not get the name of an existing file");
+ exit(0); /* damit TeXnicCenter danach trotzdem LaTeX startet */
+ }
+
+ if ((nlines = readlines(MAXFILES, 0, "\\@input")) == 0)
+ {
+ printf("%%%%> No \\@input cmds in \"%s\":\n", inname);
+ filelist[0] = inname;
+ filec = 1;
+ }
+ else
+ if (nlines < 0)
+ {
+ printf("%%%%> Error: To many \\@input cmds in \"%s\".\n", inname);
+ announceexit("can not handle such a big list of files");
+ exit(1);
+ }
+ else
+ {
+ printf("%%%%> Try to work list of %d \\@input files in \"%s\":\n", nlines, inname);
+ nlines = getfilenames(nlines, usedospath);
+ if (nlines < 1)
+ {
+ announceexit("get a too big input file");
+ exit(1);
+ }
+ filec = nlines;
+ }
+
+ if (infile != NULL) fclose(infile);
+
+ printfilelist( stdout, filec, 0, "%% ", "");
+
+
+
+ /* changed in 2.2 => inner \\printonlyvli \\printonlyvqu */
+ /* l = loeschen */
+ /* e = entkernen */
+ /* X = weder loeschen noch entkernen */
+ /* "----" KHVONUM Positionen: \\onlykurz \\onlyhere \\onlyvoll \\onlyout */
+
+ prepareoutput("%\\literentry", VLI_SUFFIX, VCOLS, VCOLS, filec, arg_i, arg_o, kill, "llee", IS_V, printsort);
+ prepareoutput("%\\quellentry", VQU_SUFFIX, VCOLS, VCOLS, filec, arg_i, arg_o, kill, "llee", IS_V, printsort);
+ prepareoutput("%\\vkcitentry", VKC_SUFFIX, KCOLS, KCOLS, filec, arg_i, arg_o, DOKILLK, "elle", NO_V, printsort);
+
+ prepareoutput("%\\abkrzentry", ABK_SUFFIX, ACOLS, ACOLSSORT, filec, arg_i, arg_o, DOKILLABBREVS, "llee", NO_V, printsort);
+ prepareoutput("%\\perioentry", PER_SUFFIX, PCOLS, PCOLSSORT, filec, arg_i, arg_o, DOKILLREGISTS, "llee", NO_V, printsort);
+ prepareoutput("%\\archqentry", ARQ_SUFFIX, PCOLS, PCOLSSORT, filec, arg_i, arg_o, DOKILLREGISTS, "llee", IS_Q, printsort);
+
+ prepareoutput("%\\geogrentry", GRR_SUFFIX, PCOLS, PCOLSSORT, filec, arg_i, arg_o, DOKILLREGISTS, "llee", NO_V, printsort);
+ prepareoutput("%\\persrentry", PRR_SUFFIX, PCOLS, PCOLSSORT, filec, arg_i, arg_o, DOKILLREGISTS, "llee", NO_V, printsort);
+ prepareoutput("%\\subjrentry", SRR_SUFFIX, PCOLS, PCOLSSORT, filec, arg_i, arg_o, DOKILLREGISTS, "llee", NO_V, printsort);
+
+
+
+ if (upperascii < 0)
+ {
+ if (encode == 1)
+ {
+ printf("%%%%\n%%%%> -t1: Gave 8-bit character %d sorting weight \"%s\" ....\n", ((unsigned char)upperascii), getTONEenc(upperascii));
+ fprintf(stderr, "%%%% Did NOT ignore upper ascii characters ({T1} and no {inputenc} assumed).\n");
+ }
+ else
+ {
+ printf("%%%%\n%%%%> Info: Gave 8-bit character %d NO sorting weight. Use -t1\?\n", ((unsigned char)upperascii));
+ fprintf(stderr, "%%%% Did ignore all upper ascii characters ({OT1} and no {inputenc} assumed).\n");
+ }
+ }
+ else if (encode == 1)
+ printf("%%%%\n%%%%> -t1 is unnecessary: No upper ascii characters found.\n");
+
+ return 0;
+}
+
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/