! Misplaced alignment tab character &.\namepartfamiliy

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


Heisenberg
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mo 26. Apr 2021, 20:56

! Misplaced alignment tab character &.\namepartfamiliy

Beitrag von Heisenberg »

Hallo in die Runde,
ich bin noch recht neu bei Latex und habe gerade ein Problem. Wenn ich kompilieren möchte kommt diese Fehlermeldung mit Referenz auf eine Zeile in meiner Master-Datei. In der Zeile ist aber bestimmt nichts falsch. Ich habe einmal eine Website in biblatex eingefügt, in der ein &-Zeichen war. Später habe ich \ davor gemacht, dann die Quelle wieder gelöscht, \addbibresource auskommentiert etc...jedes Mal kommt diese Fehlermeldung:
! Misplaced alignment tab character &.\namepartfamily ...namedelimb GmbH\bibnamedelimb &\bibnamedelimb Co.\bibname... \end

Hier der Code:

\documentclass[listof=totocnumbered]{scrartcl}

\usepackage{hyperref}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{mathptmx}
\usepackage[printonlyused]{acronym}
\usepackage[german=guillemets]{csquotes}
\usepackage[doublespacing]{setspace}
\usepackage[backend=biber,
language=ngerman,
style=authoryear,
maxcitenames=3]{biblatex}
\usepackage[paper=a4paper,
left=25mm,right=25mm,
top=30mm,bottom=35mm]{geometry}
\usepackage[printonlyused]{acronym}

\KOMAoptions{%
fontsize=12pt,
parskip=off}

\renewcommand*{\nameyeardelim}{\addcomma\space}
\newcommand{\sectionnumbering}[1]{%
  \setcounter{section}{0}%
   \renewcommand{\thesection}{\csname #1\endcsname{section}}}

\addbibresource{Literatur/Literatur.bib}

\begin{titlepage}
\title{Bachelorarbeit}
\author{Michel Gundlach}
\end{titlepage}

\begin{document}
\pagenumbering{Roman}
\sectionnumbering{Roman}
\begin{onehalfspace}
		\tableofcontents
\clearpage
		\listoffigures
\clearpage
		\section{Tabellenverzeichnis}
\clearpage
		\include{Abkürzungen/abkuerzungen}
\end{onehalfspace}

\pagenumbering{arabic}
\sectionnumbering{arabic}
\newpage
\include{Einleitung/einleitung}
\include{Unternehmensvorstellung/Uvorstellung}

\newpage
\pagenumbering{Roman}
\begin{onehalfspace}
\printbibliography		
\end{onehalfspace}

\end{document}

Ich hoffe, ich habe genug Infos zur Fehlerbeschreibung gegeben.
Ich bedanke mich im Voraus für jede Unterstützung.


Grummelgast

Re: ! Misplaced alignment tab character &.\namepartfamiliy

Beitrag von Grummelgast »

biblatex liest nicht direkt die bib-Datei. Wenn man in dieser etwas ändert und dabei einen Fehler einbaut, sollte man daher nach Korrektur der bib-Datei die Hilfsdateien *.bbl und *.bcf löschen und dann erneut LaTeX, Biber, LaTeX, LaTeX aufrufen.

Experten probieren nach der Korrektur der bib-Datei stattdessen LaTeX, Biber, LaTeX, Biber, LaTeX, LaTeX oder auch intelligenten Verkürzungen davon, wobei sie Fehlermeldungen beim jeweils ersten Aufruf von LaTeX bzw. Biber ggf. ignorieren. :wink:


Grummelgast

Off-Topic: Bitte echte vollständige Minimalbeispiele angebem

Beitrag von Grummelgast »

PS: Warum wir mit deinem Code wenig anfangen können, kannst du nicht nur selbst mit dem LaTeX-Ausgabe-Knopf testen, sondern erfährst das auch aus der Minimalbeispiel-Anleitung.


Grummelgast

Achte auf Pakete und deren Reihenfolge

Beitrag von Grummelgast »

Dennoch sei darauf hingewiesen, dass hyperref viel zu früh geladen wird (entsprechende Hinweise finden sich im Forum massenhaft) und inputenc überflüssig sein sollte (dito).


MoeWe
Forum-Guru
Forum-Guru
Beiträge: 461
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: ! Misplaced alignment tab character &.\namepartfamiliy

Beitrag von MoeWe »

Dass es hier notwendig ist, die temporäre .bbl-Datei zu löschen oder Biber auszuführen, liegt daran, dass LaTeX die .bib-Datei nicht direkt einliest, sondern sie von Biber einlesen und in ein LaTeX-lesbares Format bringen lässt. Daher ist auch die Kompilationssequenz LaTeX, Biber, LaTeX, LaTeX notwendig.

Grob passiert dabei Folgendes: Im ersten LaTeX-Lauf schreibt LaTeX in die .bcf-Datei, welche Einträge aus der .bib-Datei benötigt werden und sagt Biber, wie sie sortiert werden sollen. Biber liest dann die von LaTeX geschriebene .bcf-Datei ein und findet darauf basierend die passenden Einträge in der .bib-Datei, sortiert sie, bereitet sie für LaTeX auf und schreibt die Daten in die .bbl-Datei. Im nächsten LaTeX-Lauf kann LaTeX dann die Daten aus der .bbl-Datei lesen. Ganz wunderbar erklärt ist das in https://tex.stackexchange.com/q/63852/35864.

Mit diesem Schema im Hinterkopf sollte klar sein, dass es nach der Korrektur der .bib-Datei nicht ausreicht, LaTeX neu laufen zu lassen. Es muss auch zwingend Biber ausgeführt werden, damit die aktualisierte .bib-Datei neu eingelesen wird. Sonst bleiben in der .bbl-Datei einfach die alten, fehlerhaften Daten stehen. Erst nach einem Biber-Lauf mit der korrigierten .bib-Datei kann ein weiterer LaTeX-Lauf Erfolg haben.

Manchmal ist es so, dass ein zu früh durch einen Fehler abgebrochener LaTeX-Lauf zu einer kaputten .bcf-Datei führt, mit der Biber nichts anfangen kann. Dann läuft Biber nicht. Solche Probleme lassen sich meist gut dadurch umgehen, dass man einfach alle temporären Dateien (.aux, .bbl und .bcf) löscht und den gesamten Zyklus LaTeX, Biber, LaTeX, LaTeX laufen lässt. Sollten dabei Fehler auftreten, sollten sie dann aber sofort behoben werden (und nach der Fehlerkorrektur wieder alle temporären Dateien gelöscht werden). Dieses Verfahren kann zwar etwas länger dauern als die Optimalstrategie, ist aber einfacher durchzuführen, da es ganz mechanisch ist, und klappt eigentlich immer.


Wenn ein Autor bei Dir GmbH \& Co. beinhaltet, denk daran, den ganzen Firmennamen in ein zusätzliches Paar Klammern zu setzen, damit Biber nicht versucht, ihn als Personennamen mit Vor- und Nachname zu verstehen.
Also

author = {{Acme GmbH \& Co. KG}},

statt {Acme GmbH \& Co. KG},


Die Option language=ngerman, tut wahrscheinlich nicht, was Du erwartest. Sie hat nur in Verbindung mit autolang eine Wirkung. Höchstwahrscheinlich brauchst Du die Option aber eh nicht: biblatex passt sich automatisch an die Dokumentensprache (das ist bei Dir ngerman) an.

Da nameyeardelim seit gut fünf Jahren ein context-sensitive delimiter ist, sollte \renewcommand*{\nameyeardelim}{\addcomma\space} durch

\DeclareDelimFormat{nameyeardelim}{\addcomma\space}

ersetzt werden.


Antworten