BibTeX-Literaturlisten

Aus SDQ-Wiki
Zur Navigation springen Zur Suche springen

Bei SDQ werden zentrale BibTeX-Dateien mit Literaturlisten gepflegt. Diese dienen zum Schreiben von Publikationen und der Erzeugung von Publikationslisten auf der Homepage.

Die BibTeX-Dateien liegen grundsätzlich anonym lesend zugreifbar im SVN unter https://svnserver.informatik.kit.edu/i43/svn/palladio_bib/trunk/; Benutzer: anonymous, Passwort: anonymous:

  • palladio.bib: Gesamtliste aller fremden Publikationen, die von SDQ/ARE/Descartes referenziert wurden, keinen eigenen Publikation.
  • sdq_publications.bib: Gesamtliste aller Publikationen von Mitgliedern von SDQ/ARE/Descartes selbst.

Aus diesen Datein wurden früher die Literaturlisten auf den Homepages generiert. Mittlerweile werden die Listen dort über KITopen erzeugt.

Integration der Literaturlisten in eigenes LaTeX-Projekt

Um die Literaturlisten bequem in ein eigenes LaTeX-Projekt zu integrieren, kann man die Externals-Funktion von SVN verwenden. Dabei wird der Arbeitskopie ein Ordner aus einem externen Repository hinzugefügt.

Um die SDQ-Literaturdatenbank zu integrieren, aktiviert man auf dem Wurzelordner der SVN-Arbeitskopie folgende Eigenschaft (meist unter "SVN properties" zu finden):

svn:externals=https://svnserver.informatik.kit.edu/i43/svn/palladio_bib/trunk sdqbib

Danach setzt macht man die Checkout-Tiefe der Arbeitskopie auf fully recursive. Beim nächsten Checkout wird ein Ordner sdqbib erzeugt, in dem die .bib-Dateien liegen. Falls man Mitarbeiter ist und Schreibrechte auf dem Palladio-Bib-Repository hat, kann man Änderungen an der palladio.bib und sdq_publications.bib sogar direkt mit einbuchen, wenn man die Dateien des Publikationsprojekts einbucht.

biblatex/biber

Die "klassische" Einbindung von BibTeX erfolgt über das Kommandozeilenprogramm bibtex. Dies bringt einige Nachteile mit sich:

  • BibTeX versteht kein UTF-8; Umlaute müssen in BibTeX-Dateien umständlich kodiert werden, z.B. ä als {\"{a}}
  • BibTeX gestattet keine Unterstriche in URLs, diese müssen ebenfalls escaped werden
  • BibTeX verwendet eine eigene komplizierte Sprache für seine Templates

Die modernere Variante ist daher, stattdessen Biblatex im Zusammenhang mit Biber zu verwenden, das die oben genannten Nachteile beseitigt und stattdessen viele Vorteile hat:

  • Verwendung von UTF-8 in den .bib-Dateien
  • Steuerung des Literaturstils über Parameter, z.B.:
    • Anzahl Autorennamen
    • Sortierung/Abkürzung
    • Ausblendung von ISBN, DOI, URLs ohne Änderungen an den bib-Dateien
  • einfache Erstellung mehrerer (getrennter) Literaturverzeichnisse

Beispiel für eine Einbindung von Biblatex:

\usepackage[citestyle=numeric,style=numeric,backend=biber]{biblatex}
\addbibresource{resources/ebdiss.bib}\printbibliography

Im Build-Skript dann einfach BibTeX durch Biber ersetzen:

pdflatex document
biber document
pdflatex document
pdflatex document
Konfigurationsbeispiele

für das Anpassen des Stils, der Ausgabe, Platzoptimierungen und Verlinkte Literatureinträge im PDF: biblatex_config_templates.txt (user:anonymous, password:anonymous)

Weitere Informationen

Intergration von biblatex/biber in LaTeX-IDEs

TeXlipse

  • Der Aufruf des biblatex-Paketes muß in der Haupt-Datei des Projektes erfolgen, damit TeXlipse zum erstellen der Literaturliste biber und biblatex statt bibtex verwendet.
  • Wird biblatex in einer .sty/.cls-Datei aufgerufen, erkennt TeXlipse u.U. nicht, daß biber verwendet werden soll.

Auf Windows mit TeXnicCenter und MiKTeX

  • Entweder latexmk verwenden oder Bibtex im Projekt aktiviert haben und Ausagabeprofil korrekt auf Biber einstellen.

Troubleshooting

Auf Windows mit TeXnicCenter und MiKTeX

  • Beste Lösung: TeXlive statt MikTeX verwenden. :-)
  • Projekt aufräumen und manuell restliche temporäre Dateien aus dem Verzeichnis entfernen.
  • Entweder latexmk verwenden oder Bibtex im Projekt aktiviert haben und Ausagabeprofil korrekt auf Biber einstellen.
  • Packages (mehrfach) updaten. Dies ist besonders nach einer frischen Installation nötig.
  • Teilweise installiert MiKTeX zwar die aktuelle Version von Biber aber eine veraltete Version von Biblatex (gibt aber vor, die aktuelle installiert zu haben).
    • Die Biblatex-Version wird beim Compilieren der .tex-Datei in der Console bzw. in die .log-Datei geschrieben.
    • Die Biber-Version erhält man:
      • Über die Kommandozeile. Z.B. mit: C:\Program Files (x86)\MiKTeX 2.9\miktex\bin>biber --version
      • über die .blg-Datei, welche beim Kompilieren generiert wird (wird bei Fehlern nicht generiert)
    • Hier [1] kann die Kompatible Biber-Version ermittelt werden. Siehe "Biber/Biblatex compatibility matrix".
    • Option 1: korrektes Biblatex installieren
      • Biblatex hier herunterladen [2]
      • Für die Installation der README folgen (FNDB Refresh nicht vergessen)
      • Momentaner Stand: Biblatex 3.4 läuft mit Biber 2.5
    • Option 2: altes Biber verwenden (einfacher)
      • Die entsprechende Biber Version kann hier [3] heruntergeladen werden.
      • Die biber.exe kommt dann z.B. nach: C:\Program Files (x86)\MiKTeX 2.9\miktex\bin
      • Danach unbedingt die temporären Dateien im Projekt löschen.
      • Momentaner veralteter Stand von Miktex: Biblatex 2.9a wird verwendet, dies benötigt Biber 1.9

BibTeX-Tipps

Avoid dashed lines in author field in IEEEtran, IEEEtranSA, etc.

In IEEE bibtex styles, dashed lines are inserted in the author field if the same author (or combination of authors) appears multiple times in a bibliography list. This is default behaviour of the IEEE styles, but can be turned off.

To turn this behaviour of, insert the following code at the beginning of the bib files:

@IEEEtranBSTCTL{myctlfullname,
CTLdash_repeated_names = "no"
};

With this command, special IEEEtran options can be set.

In your latex file, put the following code before the

\begin{document}

instruction:

\makeatletter
\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
\def\@bstctlcite[#1]#2{\@bsphack
  \@for\@citeb:=#2\do{%
    \edef\@citeb{\expandafter\@firstofone\@citeb}%
    \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
  \@esphack}
\makeatother

In your latex file, put the following code after the

\begin{document}

instruction:

\bstctlcite{myctlfullname}

The code in the latex file enables the IEEE options to be regarded when parsing the bib file.

For more details, see http://mirrors.ctan.org/macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdf.

Multiple Bibliographies

If you want to have multiple bibliographies, e.g. scientific publications separated from online resources, you will find this comparison of packages for multiple bibliographies useful. If differencing by entry type is sufficient, you might want to use \printbibliography[title={Book references},type=book] etc. to have multiple bibliographies with biblatex.

If you need to combine numeric and author-year styles in multiple bibliographies using bibtex, this minimal example adapted from fix #70 for biblatex should do the trick:

\usepackage[citestyle=authoryear,bibstyle=authortitle,backend=biber,labelnumber,defernumbers]{biblatex}
\DeclareCiteCommand{\citemisc}[\mkbibbrackets]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{%
     \printfield{prefixnumber}%
     \printfield{labelnumber}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
\defbibenvironment{online}
  {\list
     {\printtext[labelnumberwidth]{%
  \iffieldundef{shorthand}
    {\printfield{prefixnumber}%
     \printfield{labelnumber}}
    {\printfield{shorthand}}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}
% ...
\printbibliography[nottype=misc]
\printbibliography[env=online,sorting=none,title=Miscellaneous,type=misc]

Take care to define the numeric citation command using DeclareCiteCommand instead of the standard newcommand. Furthermore, you might consider to omit the sorting=none option.

Troubleshooting

  • In general, if something bibtex-related causes errors or does not look as intended, make sure to inspect the Bibtex warnings and errors at the end of the log when creating your PS/PDF. Look for the line "This is BibTeX, version ..." and go through all items. An error message with something like "',' expected" indicates that one of your BibTeX entries misses commas to separate fields.
  • In some cases, BibTeX or biber may cause the LaTeX build to hang, especially when executed in "nonstop" (non-interactive) mode. The errors may not point to a BibTeX-related error.
  • Un-escaped "%" or "&" symbols in BibTeX entries can cause errors in connection with biber.
  • If your numbered references are suddenly all printed out as "[0]", check your BibTeX file for incorrectly formatted author fields, e.g., containing "and and".
  • Error message about LaTeX sources being older than 5 years when using Miktex: Use the Miktex Update function to update all packages (or all packages that are older than 5 years). Even if your Miktex distribution is newer (e.g. Miktex 2.8), it came with older source files that will be outdated earlier than the whole distribution.
  • Zur Verwendung des Packages "ulem": ulem verändert es den Befehl "emph{}", was im Literaturverzeichnis zu unerwünschten Nebeneffekten führt. (Bspw. Autoren werden unterstrichen und können nicht ins korrekte Format gebrochen werden.) Verwendet das Package dann mit folgendem Befehl: "\usepackage[normalem]{ulem}". Dann verändert "ulem" den Befehl "emph{}" nicht mehr.

Weitere Links

Siehe auch