From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/bibarts/COPYING | 339 ++ macros/latex/contrib/bibarts/README.txt | 159 + macros/latex/contrib/bibarts/ba-short.pdf | Bin 0 -> 310457 bytes macros/latex/contrib/bibarts/ba-short.tex | 762 +++ macros/latex/contrib/bibarts/bibarts.pdf | Bin 0 -> 997855 bytes macros/latex/contrib/bibarts/bibarts.sty | 3991 ++++++++++++++++ macros/latex/contrib/bibarts/bibarts.tex | 6267 +++++++++++++++++++++++++ macros/latex/contrib/bibarts/bibsort.c | 7173 +++++++++++++++++++++++++++++ 8 files changed, 18691 insertions(+) create mode 100644 macros/latex/contrib/bibarts/COPYING create mode 100644 macros/latex/contrib/bibarts/README.txt create mode 100644 macros/latex/contrib/bibarts/ba-short.pdf create mode 100644 macros/latex/contrib/bibarts/ba-short.tex create mode 100644 macros/latex/contrib/bibarts/bibarts.pdf create mode 100644 macros/latex/contrib/bibarts/bibarts.sty create mode 100644 macros/latex/contrib/bibarts/bibarts.tex create mode 100644 macros/latex/contrib/bibarts/bibsort.c (limited to 'macros/latex/contrib/bibarts') 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. + + + Copyright (C) 19yy + + 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. + + , 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 now. And you may type bibsort , +*or* bibsort -i (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 Binary files /dev/null and b/macros/latex/contrib/bibarts/ba-short.pdf 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 Binary files /dev/null and b/macros/latex/contrib/bibarts/bibarts.pdf 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 \space for immediate help, + ^^J \space \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. 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 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: .^^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]. + for immediate help, + 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 [-o ] [-g1 [OR] -g2] [] + %% + %% 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 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 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{"\demotext{ \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 +#include +#include +#include +#include +#include + + + + +#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 Page number style: -f2 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 , 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 [-o ] [-g1 [OR] -g2] []\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 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 of an auxiliary file"); + exit(1); + } + + arg_i = arg_option(argc, argv, "-I", "-i", ""); + if (arg_i != NULL) + { + argc -= 2; + } + + arg_o = arg_option(argc, argv, "-O", "-o", ""); + 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 .\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; +} + + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ -- cgit v1.2.3