Eigener Zitierstil hat Kommafehler

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


kla4dj
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 92
Registriert: Mo 12. Sep 2011, 14:36

Eigener Zitierstil hat Kommafehler

Beitrag von kla4dj »

Hallo,

ich habe einen veralteten Zitierstil von meinem Lehrstuhl vorgegeben bekommen, der mir jedoch fälschlicherweise statt (ROTH 2005, S. 7) alle indirekten Zitate mit (ROTH, 2005, S. 7) ausgibt. Leider finde ich auch nach mehrmaligen drüberschauen nicht den Fehler. Vielleicht hängt das auch damit zusammen, dass ich ein absoluter TeX-Noob bin. Könnte mir da vielleicht jemand bitte den entscheidenen Tipp geben ;-)

Hier mal meine Zitations.tex

Autorstil.tex
\usepackage%
[%
	style = authoryear-comp,		% authoryear-comp oder 
	backend = biber,
	natbib = true,
	hyperref = true,
	maxnames = 2,
	isbn = true,
	doi = true, 			% DOIs im LitVZ
	language = german,
	texencoding=utf8,
%	bibencoding=utf8,
	firstinits = true,		% Vornamen abkürzen
	uniquename = init,
	%backref = true,		% Seitenzahlen der Verweise im LitVZ
	dashed = false, 		% Falls mehrere gleiche Autoren auftauchen, werden die Einträge mit 
							% einem Strich abgekürzt. S.a. http://projekte.dante.de/DanteFAQ/BiblatexStile --> autoryear
]{biblatex}


\setcounter{secnumdepth}{3}							%	Kapitelnummerierung mit fünf Ebenen ermöglichen
\setcounter{tocdepth}{3}								%	Eintrag ins Inhaltsverzeichnis bis Ebene 4

% Nachnames-Formatierung (im Text) anpassen
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}

% Im Literaturverzeichnis immer nach "Nachname, Vorname" formatieren. Siehe auch
% http://projekte.dante.de/DanteFAQ/BiblatexReihenfolgeAutoren
% \DeclareNameAlias{sortname}{last-first}	% Einfache Variante, formatiert allerdings nicht den Herausgeber!
\DeclareNameFormat{default}{%
\iffirstinits
{\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}}			% Wenn Vorname nur mit Initialien, dann dieses Makro ansonsten
{\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}%		% dieses (mit Initialien). s.a. Link oben.
\usebibmacro{name:andothers}}

\input{01_Header/Zitate_und_Literaturverzeichnis/biblatex_Jahreszahl_Anpassungen.tex}
\input{01_Header/Zitate_und_Literaturverzeichnis/biblatex_article_Anpassungen.tex}
\input{01_Header/Zitate_und_Literaturverzeichnis/biblatex_patent_Anpassungen.tex}
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
\AtEveryBibitem{%
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
% Ursprüngliche Formatierung von Zitaten verwenden (lokal für Kopf der Einträge)
\let\multinamedelim\myOriginalMultiNameDelim
\let\finalnamedelim\myOriginalFinalNameDelim

\cite{\thefield{entrykey}}\\
\renewcommand*{\mkbibnamelast}[1]{#1}
% Die neue Formatierung wieder aktivieren -> siehe Hook "\AtBeginBibliography{"
  \let\multinamedelim\myBibMultiNameDelim				% \let heißt renewcommand (multiNameDelim) --> (eignenen Stil)
  \let\finalnamedelim\myBibFinalNameDelim
}%

\AtBeginBibliography{%
\setcounter{maxnames}{99}
\renewcommand*{\mkbibnamelast}[1]{#1}
}

% Zwischen zwei Autoren als Begrenzung einen Semikolon anstatt Komma:
\newcommand*{\myBibMultiNameDelim}{\addsemicolon\space} % Eigenen Stil definieren und weiter unten zuweisen
\newcommand*{\myBibFinalNameDelim}{\addsemicolon\space} %
\renewcommand*{\labelnamepunct}{\addcolon\space} %

\AtBeginBibliography{%
% In neuen Befehl speichern bevor überschrieben
\let\myOriginalMultiNameDelim\multinamedelim
% In neuen Befehl speichern bevor überschrieben
\let\myOriginalFinalNameDelim\finalnamedelim
% Neuen Befehl zuordnen - wurde mit newcommand etwas weiter oben definiert
  \let\multinamedelim\myBibMultiNameDelim				% \let heißt renewcommand (multiNameDelim) --> (eignenen Stil)
  \let\finalnamedelim\myBibFinalNameDelim
}
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

biblatex_Jahreszahl_Anpassungen.tex
% Quick Solution: Wir hängen die Jahreszahl vor die Ausgabe der Notizen / Seitenzahlen.
\renewbibmacro*{note+pages}{%
  \printfield{year}%
  \newunit
  \printfield{note}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \newunit}

\renewbibmacro*{chapter+pages}{%
  \printfield{year}%
  \newunit
  \printfield{chapter}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \newunit}
  
biblatex_article_Anpassungen.tex
\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  %\usebibmacro{in:}%
  \usebibmacro{journal+issuetitle-mod}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit
  \usebibmacro{note+pages-mod}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\usebibmacro{bbx:savehash}%
        \printnames{author}%
	\iffieldundef{authortype}
	  {\setunit{\addspace}}
	  {\setunit{\addcomma\space}}}%
     \iffieldundef{authortype}
       {}
       {\usebibmacro{authorstrg}%
	\setunit{\addspace}}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\addspace}}%
  %\usebibmacro{date+extrayear}%
  }
    
    
\newbibmacro*{journal+issuetitle-mod}{%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid-mod}%
  \setunit{\addspace}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}
  
\newbibmacro*{volume+number+eid-mod}{%
  \printfield{volume}%
  %\setunit*{\adddot}%
  %\printfield{number}%
  \addspace
  \printtext{(}%
   	\printfield{year}%
  \printtext{)}%
  \addspace
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}
  
% Jahreszahl wurde schon ausgegeben, muss nicht nochmal passieren.  
\newbibmacro*{note+pages-mod}{%
  \printfield{note}%
  \setunit{\bibpagespunct}%
  \printfield{pages}%
  \newunit}


biblatex_patent_Anpassungen.tex
%MA

\DeclareBibliographyDriver{patent}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  Schutzrecht:\addspace%
  \printfield{number}\addspace%
  \printfield{type}\addspace%
  \printtext[parens]{%
  	\printfield{note}% veroffentlichungsdatum
}%
  \newunit\newblock
  \usebibmacro{byholder}%
  \newunit\newblock
  \printfield{year}% anmeldedatum
  \newunit\newblock
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \setunit*{\addspace}%
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
     %\printtext[parens]{%
       \printlist[][-\value{listtotal}]{location}}%
	 %  }%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


nixversteh
Forum-Meister
Forum-Meister
Beiträge: 561
Registriert: Di 10. Aug 2010, 09:47
Wohnort: Wrestedt

...

Beitrag von nixversteh »

Hallo kla4dj,

liefre bitte ein lauffähiges Beispiel, Mini wird das wohl eher nicht sein ;-)

Gruß

Martin
Absence of evidence is not evidence of absence

Gast

Beitrag von Gast »

Bei mir tritt mit dem von Dir oben gezeigten Code-Schnipseln das Problem nicht auf, gibt es noch mehr Code, der biblatex beeinflussen könnte?

Du solltest dabei besonders auf \nameyeardelim achten, vielleicht hilft auch einfach
\renewcommand*{\nameyeardelim}{\addspace}
weiter (wenn Dein Stil nicht zu viele Veränderungen vorgenommen hat, ist das der relevante Befehl).

Gast

Beitrag von Gast »

Nach kurzer weiterer Betrachtung fällt mir auf, dass das Problem bei der natbib-Option liegt, wird natbib=true als Option übergeben, so lädt biblatex blx-natbib.def und die ändert den \nameyeardelim zu \addcomma\space.

Wenn Du die natbib-Option nicht brauchst, kannst Du sie ausschalten, oder einfach
\renewcommand*{\nameyeardelim}{\addspace}
nutzen.

PS: Sorry, dass mir die Idee erst kam, nachdem ich oben schon etwas geschrieben hatte ...

kla4dj
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 92
Registriert: Mo 12. Sep 2011, 14:36

Beitrag von kla4dj »

Die Lösung mit der Codezeile hat das erwünschte Ergebnis gebracht. Vielen Dank dafür!

Nur erzeugt mir das jetzt aber das Problem, wenn ich zwei Autoren mit Seitenangabe zitiere, dass kein Semikolon mehr gesetzt wird. :lol:


\cites[S. 5]{A_01}{B_01} führt zu HANSMANN 2001, S. 5 YOOMEL 2002

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Lies dir am besten mal durch, wie man das richtig macht, und erstelle dann eien ordentlichen Stil. Bei diesen ganzen Schnipseln kann doch kein Mensch mehr durchblicken. Das würde auch euren Nutzern dieArbeit mehr als erleichtern.

Modifizieren eines biblatex-Stils
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Gast

Beitrag von Gast »

Für das Semikolon zwischen den Zitaten ist \multicitedelim zuständig.

Soweit ich sehen kann, ändert Dein Code den Standard
\newcommand*{\multicitedelim}{\addsemicolon\space}
nicht, Du kannst es natürlich trotzdem mit
\renewcommand*{\multicitedelim}{\addsemicolon\space}
versuchen, um den Standard wiederherzustellen, sollte er geändert worden sein.

Besonders am Anfang deines Codes geschehen aber einige Dinge, über deren Sinn und Zweck ich mir nicht ganz im klaren bin und obwohl da eigentlich nichts mit \multicitedelim passieren sollte, kann ich nicht ausschließen, dass dort oder sonstwo die Funktion von \multicitedelim ausgehebelt wird.

Antworten