Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Nachteile von bibtex

10 views
Skip to first unread message

Matthias Pospiech

unread,
Sep 6, 2011, 8:35:52 AM9/6/11
to
Ich bastle derzeit an einem Vortrag ï¿œber bibtex, biber, biblatex
und wï¿œsste gerne ein paar Punkte mit Beispielen zu den Nachteilen von
bibtex. Gefunden habe ich

* Zitat und Bibliographiestile schlecht anpassbar
* keine Unterstï¿œtzung von Unicode (Sonderzeichnen)

hierzu fehlt mir ein passendes Beispiel. Ich habe in utf8 einfach mal
mï¿œglichen Umlaute ausprobiert und alles was ich im editor als utf8
speichern konnte, war auch im LaTeX Dokument nachher.

Nur am \textmu (ᅵ) Zeichen hat sich LaTeX verschluckt.

getestet mit
---->
@MISC{sonderzeichen,
author = {TeX Code},
title = {\'{o}\"{o}\.{o}\`{o}\~{o}\^{o}\c{o}\textmu\ss},
}

@MISC{sonderzeichenb,
author = {Zeichen im Text},
title = {ᅵᅵᅵᅵᅵᅵ},
}
<----

nun wï¿œsste ich gerne, was mit der Aussage konkret gemeint ist.
Und welchen Vorteil bibtex8 zusï¿œtzlich bietet.

* Encoding von bib-Datei muss mit LaTeX Datei ï¿œbereinstimmen
* Speicher limitiert (stï¿œrzt bei zu vielen Eintrï¿œgen ab)

Mal abgesehen davon, dass mir dafï¿œr konktrete Zahlen fehlen
verstehe ich die Optionen bei bibtex8 wie --huge / --wolfgang
nicht (wofï¿œr braucht man sie, warum ist nicht gleich das Maximum
eingestell).

Philipp Lehman

unread,
Sep 6, 2011, 10:36:15 AM9/6/11
to
Matthias Pospiech wrote:
> Ich bastle derzeit an einem Vortrag über bibtex, biber, biblatex
> und wüsste gerne ein paar Punkte mit Beispielen zu den Nachteilen

> von bibtex. Gefunden habe ich
>
> * Zitat und Bibliographiestile schlecht anpassbar
> * keine Unterstützung von Unicode (Sonderzeichnen)

>
> hierzu fehlt mir ein passendes Beispiel. Ich habe in utf8 einfach
> mal möglichen Umlaute ausprobiert und alles was ich im editor als

> utf8 speichern konnte, war auch im LaTeX Dokument nachher.

Dann probier mal das hier:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@misc{test,
author = {Stürmer, Hans},
title = {Titel},
year = {1995},
}
\end{filecontents}
\begin{document}
\cite{test}
\bibliographystyle{alpha}
\bibliography{test}
\end{document}

Zur Erklärung siehe:

http://groups.google.com/group/comp.text.tex/msg/8aefd925c735c842

> nun wüsste ich gerne, was mit der Aussage konkret gemeint ist.
> Und welchen Vorteil bibtex8 zusätzlich bietet.

Es geht allgemein um zwei Punkte:

1) BibTeX (und auch bibtex8) beruht auf der Annahme, das ein Zeichen
von einem Byte repräsentiert wird. Das trifft auf UTF-8 aber nicht zu.
Siehe dazu obiges Beispiel und evtl. auch den Thread "Von Bibtex auf
Biblatex" (kürzlich hier im Forum).

2) Es geht nicht nur um UTF-8, sondern vor allem um Unicode als
umfassenden Standard zur Kodierung von Text sowie von verschiedenen
anderen Dingen, die damit zusammenhängen, zum Beispiel Sortierung.
Siehe dazu z.B.:

http://unicode.org/reports/tr10/#Common_Misperceptions

BibTeX beruht auf Ascii und unterstellt damit in gewisser Hinsicht
impizit, dass das englische Alphabet ein universeller Standard sei.
Aus diesem Standard wird gleich noch die Sortierwertigkeit der Zeichen
abgeleitet, BibTeX gewichtet Zeichen nämlich nach ihrer Ascii-
Position. Um zu verstehen, was das bedeutet, empfiehlt sich ein Bilck
auf eine Ascii-Codetabelle:

http://aspell.net/charsets/iso646-us.gif

Wenn du dir diese Tabelle genau anschaust (die Reihenfolge versteht
sich von links nach rechts und von oben nach unten), kannst du
feststellen, dass der Buchstabe "Z" vor "a" kommt. Und tatsächlich
sortiert BibTeX Zeichen in der Reihenfolge 0-9,A-Z,a-z. Um diesen
Designfehler zu kaschieren, konvertieren alle bst-Dateien die Zeichen
vor dem Sortieren in Kleinbuchstaben, sonst würde ein "a" hinter "Z"
landen.

Schwieriger wird es bei Zeichen mit Umlauten, die in Ascii nicht
kodiert sind. Man schreibt dann statt "ä" "{\"a}", BibTeX sieht eine
öffnende Klammer gefolgt von \ und ignoriert dann \". Aus Ä Á À Â usw.
wird beim Sortieren entsprechend A, aus Ö Ó Ò Ô Ø wird O, aus Æ wird
AE usw. Das entspricht zufällig den Gepflogenheiten im englischen
Sprachraum, funktioniert bei anderen Sprachen aber nicht. Im Dänischen
z.B. ist Å der letzte Buchstabe des Alphabets, Z ist der viertletzte.
Die Sortierreihenfolge lautet: A-Z Æ Ø Å. Im Schwedischen ist Ö der
letzte Buchstabe des Alphabets und Ä der vorletzte. Das kann man vom
Deutschen nun wieder nicht behaupten. Dieser gesamte Komplex der
Sprachabhängigkeit der Sortierung von Text wird von BibTeX komplett
ignoriert.

Um ein Ø richtig zu sorieren, benötigt man eben nicht nur die
Möglichkeit, das Zeichen kodierungstechnisch zu verarbeiten, sondern
auch eine Regel, die angibt, welche Stellung das Zeichen im Alphabet
einer bestimmten Sprache hat. BibTeX verfügt über beides nicht.
bibtex8 deckt zumindest den kodierungstechnischen Aspekt soweit ab,
wie die Regel "1 Zeichen = 1 Byte" trägt. In den csf-Dateien kann man
die Reihenfolge beliebiger 8-Bit-Zeichen frei festlegen. Das dient in
erster Linie dazu, verschiedene 8-Bit-Kodierungen zu unterstützten,
man kann es aber auch nutzen, um eine sprachspezifische Sortierung der
zeichen zu erhalten, indem man eine csf-Datei für jeder Kombination
aus Sprache/Kodierung erstellt.

Auch das hat Grenzen, weil es beim Sortieren auch zu Ersetzungen
kommt, d.h. es erforderlich sein, ein Zeichen in mehrere Zeichen
aufzulösen. Im Französischen ist zum Beispiel Œ eine Ligatur, die beim
Sortierung in OE aufgetrennt wird, im Deutschen wird ß als "ss"
sortiert. Im Dänischen ist Æ hingegen ein eigenständiger Buchstabe,
keine Ligatur. Mit bibtex8 kann man zwar ein Æ im Dänischen richtig
sortieren, nicht aber ein Œ im Französischen oder ein ß im Deutschen.
BibTeX wiederum kann Πrichtig verarbeiten, sofern es als {\OE}
notiert ist (was mit bibtex8 dank Rückwärtskompatibilität natürlich
auch geht), scheitert aber an Æ = {\AE}, weil "AE" natürlich nicht
hinter "Z" landet.

Das ist immer noch nicht alles. Es gibt auch innerhalb einer Sprache
bzw. eines Landes teilweise verschiedene Sortierstandards, im
Deutschen z.B. DIN 5007-1 und DIN 5007-2 ('Telefonbuchsortierung'):

http://de.wikipedia.org/wiki/Alphabetische_Sortierung

Bei DIN 5007-2 werden Umlaute aufgelöst, aus "Ö" wird beim
Sortieren "Oe", aus "Ä" wird "Ae" usw. Das ist weder mit BibTeX noch
mit bibtex8 möglich, weil beide auf der Annahme beruhen, dass sich die
Zeichenlänge bei der Sortierung nicht verändert (und auch bei
Operationen wird Konvertierung zwischen Groß- und Kleinschreibung, im
Dt. z.B. "ß" -> "SS"). Das heißt konkret: BibTeX wäre nicht imstande,
ein deutsches Telefonbuch korrent zu sortieren. Mit Biblatex+Biber ist
das durch Wahl der sog. "locale" möglich:

\usepackage[backend=biber,sortlocale=de_DE_phonebook]{biblatex}

Hier geht es wohlgemerkt um die Abhängigkeit der Sortierung von
Sprache, Region und weiteren Regeln (hier deutsch/Deutschland/
DIN5007-2), nicht um die Kodierung der Zeichen in der bib-Datei (z.B.
UTF-8), die natürlich auch noch zu berücksichtigen ist.

Ganz ähnliche Probleme gibt es übrigends auch bei Index-Prozessoren.

> Mal abgesehen davon, dass mir dafür konktrete Zahlen fehlen


> verstehe ich die Optionen bei bibtex8 wie --huge / --wolfgang

> nicht (wofür braucht man sie, warum ist nicht gleich das Maximum
> eingestell).

Du darfst nicht vergessen, dass auch bibtex8 seit geschlagenen 15
Jahren nicht mehr aktiv weiterentwickelt wurde. Da es keine dynamische
Speicherallokation beherrscht, wurden die Standardwerte an die damals
übliche Hardware angepasst. Wieviel RAM hatten PCs 1996 denn so?

--
Sender address blackholed, reply to: lehman gmx net

Matthias Pospiech

unread,
Sep 7, 2011, 9:21:10 AM9/7/11
to
Am 06.09.2011 16:36, schrieb Philipp Lehman:
...

Danke für die sehr umfassende Erläuterung.
Deinen Text könntest du direkt in einem Blog
veröffentlichen falls du so etwas hast.

Leider werden wir im Institut auf absehbare Zeit nicht
vollständig auf biblatex und utf8 umsteigen können.
Unser bibtex4word plugin unterstützt es (noch?)nicht und die Verlage
arbeiten wahrscheinlich bis in alle Ewigkeit mit ihren 10-15 Jahre
alten .sty und .bst Dateien.

Daher wüsste ich gerne ob wir die alten .bib Dateien mit den typischen
TeX-Code Sonderzeichen, d.h. ascii-encoding und Umlaute als
\"{o}, \'{o}, \`{o}, \c{o}, \ss usw. auch mit biber und biblatex
weiterverwenden können?

Philipp Lehman

unread,
Sep 7, 2011, 10:25:42 AM9/7/11
to
Matthias Pospiech wrote:
> Daher wüsste ich gerne ob wir die alten .bib Dateien mit den
> typischen TeX-Code Sonderzeichen, d.h. ascii-encoding und Umlaute
> als \"{o}, \'{o}, \`{o}, \c{o}, \ss usw. auch mit biber und biblatex
> weiterverwenden können?

Das ist kein Problem, die Notation muss aber unbedingt dem BibTeX-
Standard entsprechen: {\"o}, {\'o}, {\`o}, {\c{o}}, {\ss} usw.

Biber arbeitet beim Sortieren intern immer mit Unicode. Text in einer
anderen Kodierung wird bei Bedarf automatisch in UTF-8 konvertiert.
Die automatische Konvertierung unterstützt auch die Ascii-Notation von
BibTeX, Biber konvertiert z.B. {\"o} beim Sortieren in ö. Zur
Illustration hier mal das Beispiel von
http://de.wikipedia.org/wiki/Alphabetische_Sortierung:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage[ngerman]{babel}
\usepackage[
backend=biber,
sortlocale=de_DE,
% sortlocale=de_DE_phonebook,
]{biblatex}
\usepackage{csquotes}


\usepackage{filecontents}
\begin{filecontents}{test.bib}

@misc{test1a,
author = {G{\"o}bel},
title = {Titel},
}
@misc{test1b,
author = {Göbel},
title = {Titel},
}
@misc{test2,
author = {Goldmann},
title = {Titel},
}
@misc{test3,
author = {Goethe},
title = {Titel},
}
@misc{test4a,
author = {G{\"o}the},
title = {Titel},
}
@misc{test4b,
author = {Göthe},
title = {Titel},
}
@misc{test5a,
author = {G{\"o}tz},
title = {Titel},
}
@misc{test5b,
author = {Götz},
title = {Titel},
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

Wie du siehst, werden ö und {\"o} gleich behandelt. Das würde ebenso
mit latin1 statt utf8 funktionieren. Es funktioniert selbst dann, wenn
die Kodierung der bib-Datei von der Kodierung der tex-Datei abweicht.
Du kannst theoretisch Latin1 einspeisen und CP1252 ausgeben lassen,
wobei die Sortierung trotzdem auf der Grundlage von Unicode erfolgt.

Bei Kodierungsdifferenzen zwischen Ein- und Ausgabe musst du natürlich
mit bibencoding=<Kodierung> den richtigen Wert vorgeben, aber alles
andere geht automatisch. Wenn in der bib-Datei ausschließlich Ascii
verwendet wird, stellst du einfach bibencoding=ascii ein. Die Option
"safeinputenc" kann in diesem Zusammenhang auch hilfreich sein.

Stephan Hennig

unread,
Sep 8, 2011, 6:01:56 PM9/8/11
to
schrieb Philipp Lehman:

> Im Dänischen z.B. ist Å der letzte Buchstabe des Alphabets, Z ist
> der viertletzte. Die Sortierreihenfolge lautet: A-Z Æ Ø Å. Im
> Schwedischen ist Ö der letzte Buchstabe des Alphabets und Ä der
> vorletzte. Das kann man vom Deutschen nun wieder nicht behaupten.
>
> [...]
>
> Auch das hat Grenzen, weil es beim Sortieren auch zu Ersetzungen
> kommt, d.h. es erforderlich sein, ein Zeichen in mehrere Zeichen
> aufzulösen. Im Französischen ist zum Beispiel Œ eine Ligatur, die
> beim Sortierung in OE aufgetrennt wird, im Deutschen wird ß als "ss"
> sortiert. Im Dänischen ist Æ hingegen ein eigenständiger Buchstabe,
> keine Ligatur.
>
> [...]
>
> Das ist immer noch nicht alles. Es gibt auch innerhalb einer Sprache
> bzw. eines Landes teilweise verschiedene Sortierstandards, im
> Deutschen z.B. DIN 5007-1 und DIN 5007-2 ('Telefonbuchsortierung'):
>
> http://de.wikipedia.org/wiki/Alphabetische_Sortierung

Wie geht denn die DIN mit Æ, Œ und Ø um? Werden diese als Ae bzw. Oe
einsortiert? In dem Wikipedia-Artikel finde ich leider nur diesen Hinweis:

> Für alle sonstigen (fremdsprachigen) diakritischen Zeichen gilt im
> deutschsprachigen Raum, dass sie einheitlich weggelassen werden; so
> auch alle Akzente, Tilde, Makron: é und e, ç und c, ñ und n, Č und C,
> ō und o sind gleich.


Und wie sieht es mit dem langen S in der Theorie und in der Praxis aus?

Viele Grüße
Stephan Hennig

Philipp Lehman

unread,
Sep 9, 2011, 5:32:52 AM9/9/11
to
Stephan Hennig wrote:

>> http://de.wikipedia.org/wiki/Alphabetische_Sortierung
>
> Wie geht denn die DIN mit Æ, Œ und Ø um? Werden diese als Ae bzw.
> Oe einsortiert? In dem Wikipedia-Artikel finde ich leider nur
> diesen Hinweis:
>
>> Für alle sonstigen (fremdsprachigen) diakritischen Zeichen gilt im
>> deutschsprachigen Raum, dass sie einheitlich weggelassen werden; so
>> auch alle Akzente, Tilde, Makron: é und e, ç und c, ñ und n, Č und
>> C, ō und o sind gleich.

Ich habe keine Ahnung, ob das in irgendeiner DIN ausdrücklich geregelt
ist, würde aber folgendes erwarten:

Ø -> O
Æ -> Ae
Π-> Oe

Im Deutschen sind Æ und Œ einfach Ligaturen und werden entsprechend
aufgelöst. Ø würde ich analog zu Ó Ò Ô usw. behandeln.

> Und wie sieht es mit dem langen S in der Theorie und in der Praxis
> aus?

Mit Unicode ist das lange S ein Zeichen wie jedes andere. Du gibst den
Buchstaben als "ſ" ein und er wird wie "s" sortiert. Ein Unicode-
fähiger Sortieralgorithmus weiß, dass ſ und s beim Sortieren gleich
gewichtet werden. Mit XeTeX/LuaTeX + Biber ist das komplett
transparent.

Mit BibTeX könnte man das lange S evtl. als \s definieren, dann müsste
es mit dem Sortieren auch klappen. Schwierig wird es, wenn der
Buchstabe z.B. als \longs zu Verfügung gestellt wird, dann wird er
natürlich als "longs" einsortiert, also unter L.

Stephan Hennig

unread,
Sep 9, 2011, 12:17:57 PM9/9/11
to
schrieb Philipp Lehman:
> Stephan Hennig wrote:
>
>> Wie geht denn die DIN mit Æ, Œ und Ø um? Werden diese als Ae bzw.
>> Oe einsortiert? In dem Wikipedia-Artikel finde ich leider nur
>> diesen Hinweis:
>>
>>> Für alle sonstigen (fremdsprachigen) diakritischen Zeichen gilt im
>>> deutschsprachigen Raum, dass sie einheitlich weggelassen werden; so
>>> auch alle Akzente, Tilde, Makron: é und e, ç und c, ñ und n, Č und
>>> C, ō und o sind gleich.
>
> Ich habe keine Ahnung, ob das in irgendeiner DIN ausdrücklich geregelt
> ist,

OK, die Frage merke ich mir für den nächsten Bibliotheksbesuch.


> würde aber folgendes erwarten:
>
> Ø -> O
> Æ -> Ae
> Π-> Oe
>
> Im Deutschen sind Æ und Œ einfach Ligaturen und werden entsprechend
> aufgelöst.

Das scheint so zu sein.


> Ø würde ich analog zu Ó Ò Ô usw. behandeln.

In der englischen Wikipedia, <URL:http://en.wikipedia.org/wiki/%C3%98>,
findet man

> Though not its native name, among English-speaking typographers the
> symbol may be called a "slashed o" or "o with stroke". Although
> these names suggest it is a ligature or a diacritical variant of the
> letter o, speakers of languages which use the letter ø hold that it
> is not.[citation needed] That is, emically they perceive it as a
> different letter entirely. In Norwegian and Danish, it is
> alphabetized after "z" -- thus z æ ø and å

Der deutsche Wikipediaartikel zum Ø geht auf DIN-Sortierung leider nicht
ein. Den Schrägstrich als diakritisches Zeichen zu behandeln und
einfach wegzulassen, wie im Artikel zur alphabetischen Sortierung
beschrieben, scheint zumindest fragwürdig. Wo das ß nicht bekannt ist,
wird es auch gern zum B gemacht ...


>> Und wie sieht es mit dem langen S in der Theorie und in der Praxis
>> aus?
>
> Mit Unicode ist das lange S ein Zeichen wie jedes andere. Du gibst den
> Buchstaben als "ſ" ein und er wird wie "s" sortiert. Ein Unicode-
> fähiger Sortieralgorithmus weiß, dass ſ und s beim Sortieren gleich
> gewichtet werden. Mit XeTeX/LuaTeX + Biber ist das komplett
> transparent.

Danke. Ich weiß, dass andere Gruppen und Listen dafür passender sind,
aber das Thema ist sicher auch hier von Interesse. Welche Möglichkeiten
gibt es in Lua (vorzugsweise mit dem texlua-Interpreter), UTF-8-kodierte
Strings gemäß DIN zu sortieren? table.sort sortiert ja byteweise.
Selber schreiben oder existiert da etwas? Es geht mir nur um
lateinische Schriftzeichen mit Diakritika, Ligatures usw.

Viele Grüße
Stephan Hennig
0 new messages