summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bibarts
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:51:13 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:51:13 +0000
commit2cbb1807e982c72d8cad8f3f83f27ff4565a9e9e (patch)
tree0c32d4eb673fe5f571a2bbc90b42f68ac7592588 /Master/texmf-dist/source/latex/bibarts
parent49110d0df1b2a5e1e4d88f22fb3e691ad679a63a (diff)
trunk/Master/texmf-dist/source/latex/bibarts
git-svn-id: svn://tug.org/texlive/trunk@159 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bibarts')
-rw-r--r--Master/texmf-dist/source/latex/bibarts/bibarts.bar100
-rw-r--r--Master/texmf-dist/source/latex/bibarts/gbib209.bat68
-rw-r--r--Master/texmf-dist/source/latex/bibarts/gbib2e.bat68
-rw-r--r--Master/texmf-dist/source/latex/bibarts/gbibsort.c623
-rw-r--r--Master/texmf-dist/source/latex/bibarts/gbibsort.exebin0 -> 96768 bytes
5 files changed, 859 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/bibarts/bibarts.bar b/Master/texmf-dist/source/latex/bibarts/bibarts.bar
new file mode 100644
index 00000000000..4830c117ad8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibarts/bibarts.bar
@@ -0,0 +1,100 @@
+\indexentry{a -- --@ \bibVkapit {\KapSchr A} \bibAkapit |x{1}{1}}{5001}
+\indexentry{b -- --@ \bibVkapit {\KapSchr B} \bibAkapit |x{1}{1}}{5002}
+\indexentry{f -- --@ \bibVkapit {\KapSchr F} \bibAkapit |x{1}{1}}{5003}
+\indexentry{g -- --@ \bibVkapit {\KapSchr G} \bibAkapit |x{1}{1}}{5004}
+\indexentry{k -- --@ \bibVkapit {\KapSchr K} \bibAkapit |x{1}{1}}{5005}
+\indexentry{m -- --@ \bibVkapit {\KapSchr M} \bibAkapit |x{1}{1}}{5006}
+\indexentry{p -- --@ \bibVkapit {\KapSchr P} \bibAkapit |x{1}{1}}{5007}
+\indexentry{s -- --@ \bibVkapit {\KapSchr S} \bibAkapit |x{1}{1}}{5008}
+\indexentry{v -- --@ \bibVkapit {\KapSchr V} \bibAkapit |x{1}{1}}{5009}
+\indexentry{x -- --@ \bibVkapit {\KapSchr X} \bibAkapit |x{1}{1}}{5010}
+\indexentry{makebar@\Befehl {makebar}:|x{1}{1}}{5011}
+\indexentry{vqu@\Befehl {vqu}:|x{1}{1}}{5012}
+\indexentry{vqu@\Befehl {vqu}:|x{2}{2}}{5013}
+\indexentry{addtovli@\Befehl {addtovli}:|x{2}{2}}{5014}
+\indexentry{addtovqu@\Befehl {addtovqu}:|x{2}{2}}{5015}
+\indexentry{printonlyvli@\Befehl {printonlyvli}:|x{2}{2}}{5016}
+\indexentry{printonlyvqu@\Befehl {printonlyvqu}:|x{2}{2}}{5017}
+\indexentry{makereportbar@\Befehl {makereportbar}:|x{2}{2}}{5018}
+\indexentry{makebar@\Befehl {makebar}:|x{2}{2}}{5019}
+\indexentry{makebar@\Befehl {makebar}:|x{2}{2}}{5020}
+\indexentry{makebar@\Befehl {makebar}:|x{3}{3}}{5021}
+\indexentry{female@\Befehl {female}:|x{3}{3}}{5022}
+\indexentry{male@\Befehl {male}:|x{3}{3}}{5023}
+\indexentry{sort@\Befehl {sort}:|x{4}{4}}{5024}
+\indexentry{MakeIndex@{\sc MakeIndex}!\Klammeraffe :|X{}{4}}{7}
+\indexentry{gbibsort@{\tt gbibsort}!\Klammeraffe :|X{}{4}}{7}
+\indexentry{printonlybib@\Befehl {printonlybib}:|X{}{4}}{7}
+\indexentry{Maskierungszeichen:|X{}{4}}{7}
+\indexentry{sort@\Befehl {sort}:|X{}{4}}{7}
+\indexentry{makebar@\Befehl {makebar}:|x{5}{5}}{5030}
+\indexentry{makebar@\Befehl {makebar}:|x{5}{5}}{5031}
+\indexentry{makebar@\Befehl {makebar}:|x{5}{5}}{5032}
+\indexentry{gbibsort@{\tt gbibsort}!author killing ({\tt -K}):|x{5}{5}}{5033}
+\indexentry{killname@\Befehl {killname}:|x{5}{5}}{5034}
+\indexentry{killname@\Befehl {killname}:|x{5}{5}}{5035}
+\indexentry{female@\Befehl {female}:|x{6}{6}}{5036}
+\indexentry{male@\Befehl {male}:|x{6}{6}}{5037}
+\indexentry{femalename@\Befehl {femalename}:|x{6}{6}}{5038}
+\indexentry{malename@\Befehl {malename}:|x{6}{6}}{5039}
+\indexentry{sort@\Befehl {sort}:|x{6}{6}}{5040}
+\indexentry{vli@\Befehl {vli}:|x{6}{6}}{5041}
+\indexentry{addtovli@\Befehl {addtovli}:|x{6}{6}}{5042}
+\indexentry{printonlyvli@\Befehl {printonlyvli}:|x{7}{7}}{5043}
+\indexentry{printonlyvli@\Befehl {printonlyvli}:|x{7}{7}}{5044}
+\indexentry{addtovli@\Befehl {addtovli}:|x{7}{7}}{5045}
+\indexentry{addtovli@\Befehl {addtovli}:|x{7}{7}}{5046}
+\indexentry{addtovli@\Befehl {addtovli}:|x{7}{7}}{5047}
+\indexentry{vqu@\Befehl {vqu}:|x{8}{8}}{5048}
+\indexentry{vqu@\Befehl {vqu}:|x{8}{8}}{5049}
+\indexentry{addtovqu@\Befehl {addtovqu}:|x{8}{8}}{5050}
+\indexentry{vqu@\Befehl {vqu}:|x{8}{8}}{5051}
+\indexentry{printonlyvqu@\Befehl {printonlyvqu}:|x{8}{8}}{5052}
+\indexentry{printonlyvqu@\Befehl {printonlyvqu}:|x{8}{8}}{5053}
+\indexentry{addtovqu@\Befehl {addtovqu}:|x{8}{8}}{5054}
+\indexentry{addtovqu@\Befehl {addtovqu}:|x{8}{8}}{5055}
+\indexentry{vqu@\Befehl {vqu}:|x{9}{9}}{5056}
+\indexentry{addtovqu@\Befehl {addtovqu}:|x{9}{9}}{5057}
+\indexentry{makebar@\Befehl {makebar}:|x{9}{9}}{5058}
+\indexentry{Maskierungszeichen:|y{10}{10}}{5059}
+\indexentry{Maskierungszeichen:|y{10}{10}}{5060}
+\indexentry{MakeIndex@{\sc MakeIndex}!\senkrecht :|y{10}{10}}{5061}
+\indexentry{MakeIndex@{\sc MakeIndex}!\Ausrufezeichen :|Y{}{10}}{10}
+\indexentry{kurz@\Befehl {kurz}:|y{11}{11}}{5063}
+\indexentry{bibmark@\Befehl {bibmark}:|y{11}{11}}{5065}
+\indexentry{bibmark@\Befehl {bibmark}:|y{11}{11}}{5066}
+\indexentry{MakeIndex@{\sc MakeIndex}!\Ausrufezeichen :|Y{}{11}}{11}
+\indexentry{bibref@\Befehl {bibref}:|y{11}{11}}{5067}
+\indexentry{bibref@\Befehl {bibref}:|y{12}{12}}{5068}
+\indexentry{bibmark@\Befehl {bibmark}:|y{12}{12}}{5069}
+\indexentry{xbibmark@\Befehl {xbibmark}:|y{12}{12}}{5070}
+\indexentry{xbibmark@\Befehl {xbibmark}:|y{12}{12}}{5071}
+\indexentry{xbibref@\Befehl {xbibref}:|y{12}{12}}{5072}
+\indexentry{xbibref@\Befehl {xbibref}:|y{12}{12}}{5073}
+\indexentry{go32:|y{12}{12}}{5074}
+\indexentry{stressing@\Befehl {stressing}:|y{13}{13}}{5075}
+\indexentry{punctuation@\Befehl {punctuation}:|y{13}{13}}{5076}
+\indexentry{stressing@\Befehl {stressing}:|y{13}{13}}{5077}
+\indexentry{stressing@\Befehl {stressing}:|y{13}{13}}{5078}
+\indexentry{punctuation@\Befehl {punctuation}:|y{13}{13}}{5079}
+\indexentry{vli@\Befehl {vli}:|y{13}{13}}{5080}
+\literentry{{\authorstress{Kopka}}, {Helmut}{:} {\LaTeX{} -- Eine Einf"uhrung, Bonn 1993}\Y{}{13}}{\F{}{12}}
+\indexentry{vli@\Befehl {vli}:|Y{}{13}}{12}
+\indexentry{vli@\Befehl {vli}:|y{14}{14}}{5083}
+\literentry{{\authorstress{Schwarz}}, {Norbert}{:} {Einf"uhrung in \TeX , Bonn 1988{} [Schwarz]}\Y{}{14}}{\E{}{5084}}
+\indexentry{Schwarz:|y{14}{14}}{5085}
+\indexentry{vli@\Befehl {vli}:|y{14}{14}}{5086}
+\indexentry{kurz@\Befehl {kurz}:|y{14}{14}}{5087}
+\indexentry{verw@\Befehl {verw}:|y{14}{14}}{5088}
+\indexentry{verw@\Befehl {verw}:|y{14}{14}}{5089}
+\indexentry{bibref@\Befehl {bibref}:|y{15}{15}}{5090}
+\indexentry{bibmark@\Befehl {bibmark}:|y{15}{15}}{5091}
+\indexentry{bibmark@\Befehl {bibmark}:|Y{}{15}}{13}
+\indexentry{bibref@\Befehl {bibref}:|Y{}{15}}{14}
+\indexentry{bibmark@\Befehl {bibmark}:|y{15}{15}}{5094}
+\indexentry{vqu@\Befehl {vqu}:|y{17}{17}}{5095}
+\indexentry{addtovli@\Befehl {addtovli}:|y{17}{17}}{5096}
+\indexentry{addtovqu@\Befehl {addtovqu}:|y{17}{17}}{5097}
+\indexentry{vqu@\Befehl {vqu}:|y{17}{17}}{5098}
+\indexentry{addtovli@\Befehl {addtovli}:|y{17}{17}}{5099}
+\indexentry{addtovqu@\Befehl {addtovqu}:|y{17}{17}}{5100}
diff --git a/Master/texmf-dist/source/latex/bibarts/gbib209.bat b/Master/texmf-dist/source/latex/bibarts/gbib209.bat
new file mode 100644
index 00000000000..c21c987cdce
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibarts/gbib209.bat
@@ -0,0 +1,68 @@
+@echo off
+
+REM See english abstract on the first lines of bibarts.tex.
+
+REM Zur Bearbeitung von bibarts.tex soll dreimal
+REM gbib209 bibarts
+REM eingegeben werden, falls LaTeX mit glatex gestartet werden soll und
+REM gbib2e bibarts
+REM soll dreimal eingegeben werden, falls LaTeX mit gltx2e gestartet
+REM werden soll.
+
+REM bibarts 1.3, Timo Baumann, 28.Mar.1998; keinerlei Haftung!
+
+
+if "%1"=="" goto INFO
+
+if not exist %1.tex goto TEXT_EXISTIERT_NICHT
+
+if exist %1.bar GBIBSORT %1.bar %1.phy -k
+
+if exist C:\EMTEX\IDXSTYLE\GBIBARTS.IST goto GBIBARTS_IST_IST_DA
+if exist GBIBARTS.IST goto HIER
+
+echo Die Datei GBIBARTS.IST konnte nicht unter C:\EMTEX\IDXSTYLE\GBIBARTS.IST
+echo gefunden werden.
+echo .
+echo "%1.bar" wird jetzt bearbeitet mit den Kommandos in der Befehls-Zeile:
+echo MAKEINDX -l %1.bar
+if exist %1.bar MAKEINDX -l %1.bar
+goto WEITER
+
+:GBIBARTS_IST_IST_DA
+if exist %1.bar MAKEINDX -s C:\EMTEX\IDXSTYLE\GBIBARTS.IST -g -l %1.bar
+goto WEITER
+
+:HIER
+if exist %1.bar MAKEINDX -s GBIBARTS.IST -g -l %1.bar
+goto WEITER
+
+:WEITER
+
+call GLATEX %1.tex
+
+goto ENDE
+
+:INFO
+echo -------------------------------------------------------------------------
+echo BIBARTS 1.3: %0 = Start von LaTeX mit GLATEX.BAT.
+echo Zur Bearbeitung von BIBARTS.TEX soll dreimal eingegeben werden:
+echo gbib209 bibarts
+echo Hiermit werden GLATEX.BAT, GBIBSORT.EXE und MAKEINDX.EXE
+echo (mit Index-STyle File GBIBARTS.IST) aufgerufen.
+echo GBIBARTS.IST soll nach C:\EMTEX\IDXSTYLE kopiert werden.
+echo Allgemein k"onnen Texte bearbeitet werden durch Eingabe von
+echo gbib209 [ LaTeX-File.TEX [ ohne .TEX angeben ] ]
+echo .
+echo gbib2e.bat, gbib209.BAT und GBIBSORT.EXE sollten in ein Verzeich-
+echo nis kopiert werden, das sich im PATH des Betriebsystems befindet.
+echo -------------------------------------------------------------------------
+
+goto ENDE
+
+:TEXT_EXISTIERT_NICHT
+echo Eine Datei "%1.tex" existiert nicht. Bearbeitet werden k"onnen:
+dir *.tex /B
+
+
+:ENDE
diff --git a/Master/texmf-dist/source/latex/bibarts/gbib2e.bat b/Master/texmf-dist/source/latex/bibarts/gbib2e.bat
new file mode 100644
index 00000000000..cc5790fcd94
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibarts/gbib2e.bat
@@ -0,0 +1,68 @@
+@echo off
+
+REM See english abstract on the first lines of bibarts.tex.
+
+REM Zur Bearbeitung von bibarts.tex soll dreimal
+REM gbib209 bibarts
+REM eingegeben werden, falls LaTeX mit glatex gestartet werden soll und
+REM gbib2e bibarts
+REM soll dreimal eingegeben werden, falls LaTeX mit gltx2e gestartet
+REM werden soll.
+
+REM bibarts 1.3, Timo Baumann, 28.Mar.1998; keinerlei Haftung!
+
+
+if "%1"=="" goto INFO
+
+if not exist %1.tex goto TEXT_EXISTIERT_NICHT
+
+if exist %1.bar GBIBSORT %1.bar %1.phy -k
+
+if exist C:\EMTEX\IDXSTYLE\GBIBARTS.IST goto GBIBARTS_IST_IST_DA
+if exist GBIBARTS.IST goto HIER
+
+echo Die Datei GBIBARTS.IST konnte nicht unter C:\EMTEX\IDXSTYLE\GBIBARTS.IST
+echo gefunden werden.
+echo .
+echo "%1.bar" wird jetzt bearbeitet mit den Kommandos in der Befehls-Zeile:
+echo MAKEINDX -l %1.bar
+if exist %1.bar MAKEINDX -l %1.bar
+goto WEITER
+
+:GBIBARTS_IST_IST_DA
+if exist %1.bar MAKEINDX -s C:\EMTEX\IDXSTYLE\GBIBARTS.IST -g -l %1.bar
+goto WEITER
+
+:HIER
+if exist %1.bar MAKEINDX -s GBIBARTS.IST -g -l %1.bar
+goto WEITER
+
+:WEITER
+
+call gltx2e %1.tex
+
+goto ENDE
+
+:INFO
+echo -------------------------------------------------------------------------
+echo BIBARTS 1.3: %0 = Start von LaTeX mit GLATEX.BAT.
+echo Zur Bearbeitung von BIBARTS.TEX soll dreimal eingegeben werden:
+echo gbib2e bibarts
+echo Hiermit werden gltx2e.BAT, GBIBSORT.EXE und MAKEINDX.EXE
+echo (mit Index-STyle File GBIBARTS.IST) aufgerufen.
+echo GBIBARTS.IST soll nach C:\EMTEX\IDXSTYLE kopiert werden.
+echo Allgemein k"onnen Texte bearbeitet werden durch Eingabe von
+echo gbib2e [ LaTeX-File.TEX [ ohne .TEX angeben ] ]
+echo .
+echo gbib2e.bat, gbib2e.BAT und GBIBSORT.EXE sollten in ein Verzeich-
+echo nis kopiert werden, das sich im PATH des Betriebsystems befindet.
+echo -------------------------------------------------------------------------
+
+goto ENDE
+
+:TEXT_EXISTIERT_NICHT
+echo Eine Datei "%1.tex" existiert nicht. Bearbeitet werden k"onnen:
+dir *.tex /B
+
+
+:ENDE
diff --git a/Master/texmf-dist/source/latex/bibarts/gbibsort.c b/Master/texmf-dist/source/latex/bibarts/gbibsort.c
new file mode 100644
index 00000000000..b0de041d69c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibarts/gbibsort.c
@@ -0,0 +1,623 @@
+#include <stdio.h>
+#include <string.h>
+
+
+#define MAXLINES 10000
+#define MAXLEN 1024
+
+#define LEVE_OPEN 1
+
+#define INDEXNAME "\\indexentry" /* Zeilen mit diesem Kopf "ubergehen. */
+#define INDEXNAMELEN 11 /* L"ange von INDEXNAME. */
+ /* F"ur solche Zeilen ist MakeIndex */
+ /* zust"andig. */
+
+#define KILLNAME "\\Ikillname{}" /* -K: Damit wird ARG1 und ARG2 einer */
+ /* Zeile ersetzt, falls diese in der */
+ /* vorausgehenden Zeile gleich sind. */
+
+char *lineptr[MAXLINES];
+FILE *infile, *outfile;
+
+
+/*--------------------------------------------------------------------------*/
+
+
+
+void info(){ char p[]="%";
+printf(" %s%s +-----------------------------------------------------------------+\n", p, p);
+printf(" %s%s | GBIBSORT sorts the lines of a file following german rules. |\n", p, p);
+printf(" %s%s | GBIBSORT is part of BIBARTS, Version 1.3. |\n", p, p);
+printf(" %s%s | (c) Timo Baumann <28.Mar.1998> |\n", p, p);
+printf(" %s%s | |\n", p, p);
+printf(" %s%s | BIBARTS.STY ist eine LaTeX-Dokumenten-Stil-Option; siehe dazu |\n", p, p);
+printf(" %s%s | BIBARTS.TEX. (LaTeX erzeugt mit BIBARTS.STY ein [File].BAR.) |\n", p, p);
+printf(" %s%s | |\n", p, p);
+printf(" %s%s | GBIBSORT sortiert zeilenweise: Es liest das angegebene File und |\n", p, p);
+printf(" %s%s | sortiert Zeichen vor Buchstaben (a vor A ...), dann Zahlen. |\n", p, p);
+printf(" %s%s | ABER: Die LaTeX-Sonderzeichen \\\"a und \"a werden als ae usw. |\n", p, p);
+printf(" %s%s | sortiert und \'\\\', \'{\', \'}\', \'^\', \'`\', \'-\', \' \' nicht gewichtet. |\n", p, p);
+printf(" %s%s | {RELEVANT}@ wird wie RELEVANT sortiert, aber nicht ausgegeben. |\n", p, p);
+printf(" %s%s | Option -K ersetzt mehrfach genannte Autoren ab dem 2. Mal. |\n", p, p);
+printf(" %s%s | |\n", p, p);
+printf(" %s%s | BENUTZUNG: gbibsort [File].BAR [[Schreib-File].PHY] |\n", p, p);
+printf(" %s%s | Autor Killing: gbibsort [File].BAR [[Schreib-File].PHY] -k |\n", p, p);
+printf(" %s%s | |\n", p, p);
+printf(" %s%s | Falls GBIB209.BAT oder GBIB2E.BAT fehlen --- sie enthalten: |\n", p, p);
+printf(" %s%s | IF EXIST %s1.bar GBIBSORT %s1.bar %s1.phy |\n", p, p, p, p, p);
+printf(" %s%s | IF EXIST %s1.bar MAKEINDX %s1.bar |\n", p, p, p, p);
+printf(" %s%s | IF EXIST %s1.tex CALL [LaTeX] %s1 |\n", p, p, p, p);
+printf(" %s%s +-----------------------------------------------------------------+\n", p, p);
+ }
+
+
+/*--------------------------------------------------------------------------*/
+
+
+/* CopyLeft: a) Verantwortung - b) Benutzung - c) Distribuntion */
+
+/* a) Keinerlei Haftung ! */
+/* b) Keine Funktions-Garantie ! */
+/* Der Anwender erkennt die Punkte a) - c) an. */
+/* c) GBIBSORT.C und damit erstellte ausf"uhrbare */
+/* Dateien d"urfen nur weitergegeben werden, wenn */
+/* 1. daf"ur keine Kosten erhoben werden, */
+/* die "uber diejenigen f"ur ihren */
+/* Transfer hinausgehen ! */
+/* 2. vorgenommene "Anderungen */
+/* kommentiert sind ! */
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Neugewichtung der Zeichen 48 - 126 des ASCII-Codes. */
+ /* 1-47 [und ggf. 127-254] bleiben gleich! -> default. */
+ /* 127-254 kommen in FILE.bar aber auch niemals vor! */
+
+ /* Im Deutschen werden Zeichen vor Buchstaben und */
+ /* Buchstaben vor Zahlen einsortiert. */
+ /* Im Konfliktfall stehen Kleinbuchstaben vor grossen. */
+
+ /* Da der ASCII-Code eine andere Reihenfolge hat, */
+ /* muss den Zeichen innerhalb des angegebenen Bereichs */
+ /* eine neue INTEGER-Zahl zugeordnet werden. */
+
+int bewerten(char zz)
+{
+ switch(zz)
+ {
+ case ':': return 48; /* ASCII 58 \ */
+ case ';': return 49; /* ASCII 59 | */
+ case '<': return 50; /* ASCII 60 | */
+ case '=': return 51; /* ASCII 61 | */
+ case '>': return 52; /* ASCII 62 | */
+ case '?': return 53; /* ASCII 63 | */
+ case '@': return 54; /* ASCII 64 | */
+ /* | */
+ case '[': return 55; /* ASCII 91 \ */
+ case '\\':return 56; /* ASCII 92 > Zeichen vor Buchstaben */
+ case ']': return 57; /* ASCII 93 / */
+ 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 '~': return 64; /* ASCII 126 / */
+
+ case 'a': return 65; /* ASCII 97 \ */
+ case 'A': return 66; /* ASCII 65 | */
+ case 'b': return 67; /* ASCII 98 | */
+ case 'B': return 68; /* ASCII 66 | */
+ case 'c': return 69; /* ASCII 99 | */
+ case 'C': return 70; /* ASCII 67 | */
+ case 'd': return 71; /* ASCII 100 | */
+ case 'D': return 72; /* ASCII 68 | */
+ case 'e': return 73; /* ASCII 101 | */
+ case 'E': return 74; /* ASCII 69 | */
+ case 'f': return 75; /* ASCII 102 | */
+ case 'F': return 76; /* ASCII 70 | */
+ case 'g': return 77; /* ASCII 103 | */
+ case 'G': return 78; /* ASCII 71 | */
+ case 'h': return 79; /* ASCII 104 | */
+ case 'H': return 80; /* ASCII 72 | */
+ case 'i': return 81; /* ASCII 105 | */
+ case 'I': return 82; /* ASCII 73 | */
+ case 'j': return 83; /* ASCII 106 | */
+ case 'J': return 84; /* ASCII 74 | */
+ case 'k': return 85; /* ASCII 107 | */
+ case 'K': return 86; /* ASCII 75 | */
+ case 'l': return 87; /* ASCII 108 | */
+ case 'L': return 88; /* ASCII 76 | */
+ case 'm': return 89; /* ASCII 109 | */
+ case 'M': return 90; /* ASCII 77 | */
+ case 'n': return 91; /* ASCII 110 | */
+ case 'N': return 92; /* ASCII 78 | */
+ case 'o': return 93; /* ASCII 111 | */
+ case 'O': return 94; /* ASCII 79 | */
+ case 'p': return 95; /* ASCII 112 \ */
+ case 'P': return 96; /* ASCII 80 > Buchstaben: a, A, ... */
+ case 'q': return 97; /* ASCII 113 / */
+ case 'Q': return 98; /* ASCII 81 | */
+ case 'r': return 99; /* ASCII 114 | */
+ case 'R': return 100; /* ASCII 82 | */
+ case 's': return 101; /* ASCII 115 | */
+ case 'S': return 102; /* ASCII 83 | */
+ case 't': return 103; /* ASCII 116 | */
+ case 'T': return 104; /* ASCII 84 | */
+ case 'u': return 105; /* ASCII 117 | */
+ case 'U': return 106; /* ASCII 85 | */
+ case 'v': return 107; /* ASCII 118 | */
+ case 'V': return 108; /* ASCII 86 | */
+ case 'w': return 109; /* ASCII 119 | */
+ case 'W': return 110; /* ASCII 87 | */
+ case 'x': return 111; /* ASCII 120 | */
+ case 'X': return 112; /* ASCII 88 | */
+ case 'y': return 113; /* ASCII 121 | */
+ case 'Y': return 114; /* ASCII 89 | */
+ case 'z': return 115; /* ASCII 122 | */
+ case 'Z': return 116; /* ASCII 90 / */
+
+ case '0': return 117; /* ASCII 48 \ */
+ case '1': return 118; /* ASCII 49 | */
+ case '2': return 119; /* ASCII 50 | */
+ case '3': return 120; /* ASCII 51 | */
+ case '4': return 121; /* ASCII 52 \ */
+ case '5': return 122; /* ASCII 53 > Zahlen */
+ case '6': return 123; /* ASCII 54 / */
+ case '7': return 124; /* ASCII 55 | */
+ case '8': return 125; /* ASCII 56 | */
+ case '9': return 126; /* ASCII 57 / */
+
+ default : return zz;
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Dies ist die eigentliche Sortier-Funktion. */
+ /* Sie zerteilt das Sortierproblem in viele triviale: */
+ /* Wie sind z w e i Eintr"age zu sortieren? */
+
+void QQsort(void *v[], int left, int right, int (*comp)(void *, void *))
+{
+ int i, last;
+ void swap (void *v[], int, int);
+ if (left >= right) return;
+ swap(v, left, (left + right)/2);
+ last = left;
+ for (i = left + 1; i <= right; i++)
+ if ((*comp)(v[i], v[left]) < 0)
+ swap(v, ++last, i);
+ swap(v, left, last);
+ QQsort(v, left, last - 1, comp);
+ QQsort(v, last + 1, right, comp);
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Wenn zwei Eintr"age in der falschen Reihenfolge */
+ /* sortiert sind, werden die Zeiger, die auf sie */
+ /* weisen, ausgetauscht. */
+
+void swap(void *v[], int i, int j)
+{
+ void *temp;
+ temp = v[i];
+ v[i] = v[j];
+ v[j] = temp;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Hier werden Leerzeichen, Backslash, geschweifte */
+ /* Klammern, Tilden und Minus-Zeichen gleich "uber- */
+ /* gangen, um \"a und "a, \ss und \ss{}, a~b und a b, */
+ /* Info und In\-fo gleich gewichtet zu bekommen. */
+ /* \ss und "s werden als ss, "[x] und \"[x] als [x]e */
+ /* sortiert, aber original ausgedruckt. */
+ /* `[x], ^[x] und '[x] werden als [x] gewichtet. */
+
+ /* \newumlaut muss nicht beachtet werden, denn mit */
+ /* dem GBIBARTS.STY-Makro \@sIcHerUnG konnte es unter- */
+ /* dr"uckt werden, dass dies in [File].BAR erscheint. */
+
+ /* Da in [File].BAR die Umlaute und "s immer expan- */
+ /* diert sind, muss auf die Ein-Zeichen-Umlaute, wie */
+ /* sie im erweiterten ASCII-Code definiert sind, */
+ /* keine R"ucksicht genommen werden. */
+
+int vergleich(const void *s1,const void *s2)
+{
+ int a1=1, b1=1, a2=1, b2=1, a3=1, b3=1, a=1, b=1;
+
+ while (a == b)
+ {
+ while (overjump(*((char *)s1)) > 0) s1 = (char *)s1 + 1;
+ while (overjump(*((char *)s2)) > 0) s2 = (char *)s2 + 1;
+
+ a3 = a2; b3 = b2;
+ a2 = a1; b2 = b1;
+ a1 = bewerten(*((char *)s1)); b1 = bewerten(*((char *)s2));
+ s1 = (char *)s1 + 1; s2 = (char *)s2 + 1;
+
+ a = a2 ; b = b2 ;
+
+ if ( /* Abpr"ufen, ob ein Um- */
+ ( a2 == bewerten('\"') ) /* laut vorhanden ist */
+ )
+ { a = a1; }
+
+ if (
+ ( b2 == bewerten('\"') )
+ )
+ { b = b1; }
+
+ if (
+ ( a3 == bewerten('\"') )
+ && ( a2 != bewerten('s') ) /* "s ist kein Umlaut */
+ )
+ { a = bewerten('e'); } /* "a als ae etc. */
+
+ if (
+ ( b3 == bewerten('\"') )
+ && ( b2 != bewerten('s') )
+ )
+ { b = bewerten('e'); }
+
+ }
+
+ if (a > b ) {return 1;}
+ else {return -1;}
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int getline(char s[], int lim)
+{
+ int c,i;
+ i=0;
+ while(--lim > 0 && (c=fgetc(infile)) != EOF && c != '\n')
+ s[i++] = c;
+ if (c == '\n') s[i++] = c;
+ s[i] = '\0';
+ return i;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Definiert f"ur vergleich, welche Zeichen "uber- */
+ /* gangen werden sollen in der Frage, ob zwei */
+ /* Zeilen gleich sind. */
+
+int overjump(int a)
+{
+ if ( a == ' ' /* Leerzeichen */
+ || a == '\\' /* Backslash */
+ || a == '{' /* { */
+ || a == '}' /* } */
+ || a == '~' /* Tilde */
+ || a == '-' /* \- */
+ || a == '\'' /* \' */
+ || a == '`' /* \` */
+ || a == '^' /* \^ */
+ || a == '@' /* {...}@ */
+ )
+ return 1;
+ else return -1;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Definiert f"ur TeXvergleich, welche Zeichen */
+ /* nicht gewichtet werden sollen in der Frage, ob */
+ /* zwei Zeilen gleich sind. */
+
+int vergljump(int a)
+{
+ if ( a == ' ' /* Leerzeichen */
+ || a == '\\' /* Backslash */
+ || a == '~' /* Tilde */
+ || a == '-' /* \- */
+ || a == '\'' /* \' */
+ || a == '`' /* \` */
+ || a == '^' /* \^ */
+ || a == '@' /* {...}@ */
+ )
+ return 1;
+ else return -1;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* {...}@ wird aus der Zeile gel"oscht. */
+
+void killsort(char *lineptr[], int nlines)
+{
+ char a[MAXLEN], b[MAXLEN];
+ int i, j, m;
+
+ while(nlines-- > 0)
+ { strcpy(a, *lineptr);
+ i = 0; j = 0; m = 0;
+ while(a[i]!='\0')
+ {
+ if (a[i] == '{') m = j;
+ if (a[i] == '}' && a[i+1] == '@' && a[i+2] != '\0')
+ { j = m; ++i; ++i; }
+ b[j] = a[i];
+ ++i; ++j;
+ }
+ b[j++] = '\0';
+ free(*lineptr);
+ *lineptr = (char *)malloc(j*sizeof(char));
+ strcpy(*lineptr++, b);
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+void writelines(char *lineptr[], int nlines)
+{
+ while(nlines-- > 0)
+ fprintf(outfile,"%s\n", *lineptr++);
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Hier wird f"ur doubleauthor bestimmt, ob Name */
+ /* und Vorname zweier Zeilen gleich sind. */
+
+int TeXvergleich(const void *s1,const void *s2)
+{ int i = 0, j = 0, k = 0, l = 0;
+
+ while(1)
+ {
+ while (vergljump(*((char *)s1)) > 0) ++s1;
+ while (vergljump(*((char *)s2)) > 0) ++s2;
+
+ if (*(char *)s1 == '{') ++i;
+ else if (*(char *)s1 == '}') { --i; if (i==LEVE_OPEN) ++j; }
+ if (*(char *)s1 == '{') ++k;
+ else if (*(char *)s1 == '}') { --k; if (k==LEVE_OPEN) ++l; }
+
+ if (*(char *)s1 == '\0' && *(char *)s2 == '\0') return 0;
+ else if (j == 2 && l == 2) return 2;
+
+ if (*(char *)s1 == '\0') return 1;
+ else if (*(char *)s2 == '\0') return -1;
+
+ if (*(char *)s1 == *(char *)s2) { ++s1; ++s2; }
+ else if (*(char *)s1 > *(char *)s2) return 1;
+ else if (*(char *)s1 < *(char *)s2) return -1;
+
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Autoren, die mehrfach vorkommen, werden einmal */
+ /* genannt, und dann durch KILLNAME ersetzt. */
+
+void doubleauthor(char *lineptr[], int nlines)
+{
+ int j, i, h;
+ char a[MAXLEN];
+
+ while(--nlines > 0)
+ { if (TeXvergleich(lineptr[nlines], lineptr[nlines-1]) == 2)
+ {
+ strcpy(a, lineptr[nlines]);
+ j = 0; h = 0; i = 0;
+ while(1)
+ { if(a[j]=='{') ++i;
+ else if(a[j]=='}') { --i; if (i==LEVE_OPEN) ++h; }
+ ++j;
+ if (h==2 || a[j]=='\0') break;
+ }
+ if (h==2)
+ { i = 0;
+ while(a[i]!='\0' && a[i]!='{') ++i;
+ a[i+1]='\0'; /* '{' soll bleiben! */
+ strcat(a, KILLNAME);
+ i = i + strlen(KILLNAME);
+ while(a[j]!='\0') a[++i] = a[j++];
+ a[++i] = '\0';
+ free(lineptr[nlines]);
+ lineptr[nlines] = (char *)malloc((++i)*sizeof(char));
+ strcpy(lineptr[nlines], a);
+ }
+ }
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Zeilen, die mit INDEXNAME beginnen, werden */
+ /* nicht aufgenommen. */
+
+int readlines(char *Lineptr[], int maxlines)
+{
+ int len, nlines;
+ char *p, line[MAXLEN];
+ nlines = 0;
+ while ((len = getline(line,MAXLEN)) > 0)
+ if (strncmp(line, INDEXNAME, INDEXNAMELEN)==0) continue;
+ else if (nlines >= maxlines ||
+ (p = (char *)malloc(len*sizeof(char))) == NULL)
+ return -1;
+ else {
+ line[len-1] = '\0';
+ strcpy(p, line);
+ Lineptr[nlines++] = p;
+ }
+ return nlines;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Kehrt mit -argc+1 zur"uck, wenn Option da ist. */
+
+int single_option(int argc, char *argv[], char a[])
+{
+
+ int l = 1, c;
+ int _found = 0;
+
+ while (l < argc)
+ {
+ if (strcmp(argv[l], a) == 0)
+ { _found = 1;
+ /* free(argv[l]); */
+ --argc;
+ c = l;
+ while (c < argc)
+ { argv[c] = argv[c+1];
+ ++c;
+ }
+ --l;
+ }
+ ++l;
+ }
+ if (_found == 1) return -argc;
+ else return argc;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+ /* Erkennt unbekannte Optionen. */
+
+int surp_option(int argc, char *argv[])
+{
+
+ char p[]=" %% ";
+ int l = 1, c;
+ char a[2];
+
+ while (l < argc)
+ {
+ strncpy(a, argv[l], 1);
+ if (a[0] == '-')
+ { printf("\n%s *** BREAK: Get unknown option \"%s\"!\n", p, argv[l]);
+ /* free(argv[l]); */
+ --argc;
+ c = l;
+ while (c < argc)
+ { argv[c] = argv[c+1];
+ ++c;
+ }
+ --l;
+ }
+ ++l;
+ }
+ return argc;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
+int main(int argc, char *argv[])
+{
+ char p[]=" %% ";
+ int nlines=0;
+ int i;
+ int kill = 0;
+
+ argc = single_option(argc, argv, "-K");
+ if (argc < 0)
+ { argc = -argc;
+ kill = 1;
+ }
+
+ argc = single_option(argc, argv, "-k");
+ if (argc < 0)
+ { argc = -argc;
+ kill = 1;
+ }
+
+ if (argc == 1) {
+ info();
+ exit(1);
+ }
+
+ if (argc != surp_option(argc, argv)) exit(1);
+
+ if (argc == 2)
+ {
+ infile = fopen(argv[1],"r");
+ outfile = stdout;
+ }
+ else if (argc == 3)
+ {
+ if (strcmp(argv[1], argv[2]) == 0)
+ {
+ printf("\n%s Quelle und Ziel d\"urfen nicht identisch sein.\n", p);
+ exit(1);
+ }
+ infile = fopen(argv[1],"r");
+ outfile = fopen(argv[2],"w");
+ }
+ else {
+ printf("\n%s Zu viele Argumente.\n", p);
+ exit(1);
+ }
+
+ if (infile == NULL)
+ {
+ printf("\n%s \"%s\" kann nicht gelesen werden.\n", p, argv[1]);
+ exit(1);
+ }
+ if (outfile == NULL)
+ {
+ printf("\n%s Betriebsystem verhindert Ausgabe in \"%s\".\n", p, argv[2]);
+ printf("%s Gegebenenfalls Schutz gegen \"Uberschreiben entfernen.\n", p);
+ exit(1);
+ }
+
+
+ if ((nlines = readlines(lineptr, MAXLINES)) >= 0)
+ {
+ printf("\n%s GBIBSORT sortiert \"%s\" alphabetisch", p, argv[1]);
+ QQsort((void **) lineptr, 0, nlines-1,
+ (int (*)(void*,void*))(vergleich));
+ killsort(lineptr, nlines);
+ if (kill == 1)
+ { printf("\n%s --- wobei mehrfach genannte Autoren bei wiederholter Nennung\n", p, KILLNAME);
+ printf("%s durch %s ersetzt werden", p, KILLNAME);
+ doubleauthor(lineptr, nlines);
+ }
+ printf(".\n");
+ printf("%s Ausgabe ", p);
+ if (argc == 2) printf("auf die Standard-Ausgabe.\n");
+ else printf("in \"%s\".\n", argv[2]);
+ writelines(lineptr, nlines);
+ return 0;
+ }
+ else
+ {
+ printf("Fehler: Datei zu gross.\n");
+ return 1;
+ }
+
+}
+
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
diff --git a/Master/texmf-dist/source/latex/bibarts/gbibsort.exe b/Master/texmf-dist/source/latex/bibarts/gbibsort.exe
new file mode 100644
index 00000000000..8c01b858433
--- /dev/null
+++ b/Master/texmf-dist/source/latex/bibarts/gbibsort.exe
Binary files differ