Text einfügen in das Literaturverzeichnis

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Text einfügen in das Literaturverzeichnis

Re: Text einfügen in das Literaturverzeichnis

von dumpfschlumpf » Mo 5. Jul 2021, 20:38

Funktioniert!

Super, vielen dank!
Ich war echt kurz vor dem Aufgeben. Du hast mir den Abend gerettet und vermutlich mindestens eine Note der Abschlussarbeit.

Re: Text einfügen in das Literaturverzeichnis

von MoeWe » Mo 5. Jul 2021, 20:02

Ach so, das ist mein Fehler. In Deinem oben gezeigten Code gab es den Befehl \xfootcite, der Autor, Jahr und Titel ausgab. Da habe ich gedacht, das sei die Ausgabe, die Du gerne hättest, und hab das gebastelt. Wenn Du einfach nur Autor-Jahr möchtest, geht das wesentlich einfacher.

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear,
  giveninits=true,
  uniquename=init,
  autocite=footnote,
]{biblatex}

\DeclareDelimFormat{nameyeardelim}{\addcomma\space}

\renewcommand*{\newunitpunct}{\addcomma\space}

\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{labelname}{sortname}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat{issuetitle}{#1}
\DeclareFieldFormat{maintitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{journaltitle}{#1\isdot}

\renewbibmacro*{in:}{%
  \setunit{\addspace}%
  \bibncpstring{in}%
  \printunit{\intitlepunct}}

\renewcommand*{\jourvoldelim}{\addcomma\space}
\DeclareFieldFormat[article,periodical]{volume}{\bibstring{jourvol}~#1}
\renewcommand*{\volnumdelim}{\addcomma\space}
\NewBibliographyString{journum}
\DefineBibliographyStrings{german}{
  journum = {Heft},
}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{journum}~#1}

\DeclareFieldFormat[article,periodical]{pages}{#1}

\renewcommand*{\finentrypunct}{}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem\autocite[380]{sigfridsson}
ipsum\autocite{worman,nussbaum,geer}
dolor\autocite{knuth:ct:b,knuth:ct:c}

\printbibliography
\end{document}

Re: Text einfügen in das Literaturverzeichnis

von dumpfschlumpf » Mo 5. Jul 2021, 19:15

@MoeWe Also, ich hab jetzt nochmal eine Stunde investiert, ich krieg deinen Code tatsächlich auch in meiner Vorlage zum Laufen. Aber: Jetzt stimmen die Fußnoten nicht mehr.

Das heißt für mich:

\DeclareFieldInputHandler{extradate}{\def\NewValue{}}

muss raus.
Dann erhalte ich allerdings nach dem Autorennamen einen Punkt und immer noch den Titel.

Ich brauche Nachname, V., Jahr, Seite. Beim Jahr eine Durchnummerierung 2013, 2013a usw...
Alle Autoren, auch der letzte, müssen mit Komma getrennt sein.
Also zum Beispiel: Pindyck, R.S., 2013a, S.17

Das ist eben der Grund, warum ich mittlerweile ehrlich gesagt kurz vor dem Aufgeben bin: Immer wenn eine Baustelle zu geht, reißt das eine neue auf. Ich hab mit eigener Recherche, rumprobieren etc. mindestens 30h, eher mehr, in diese Anpassung der Zitierung verwendet und selbst nichts, absolut nichts hinbekommen. Bis auf die Fußnoten und da blicke in deinem Code selbst wieder überhaupt nicht mehr durch.

Re: Text einfügen in das Literaturverzeichnis

von MoeWe » Mo 5. Jul 2021, 14:39

Was genau passt Dir den bei der Ausgabe von @book nicht? Unter Umständen sind die nötigen Anpassungen im Code gar nicht so aufwändig.

Wenn Du keine Lust hast, ein Beispiel zu geben und die gewünschte Ausgabe zu erklären, dann ist das natürlich OK, wenn Du auch ohne die passende Ausgabe klar kommst. Aber ich würde die implizite Annahme, dass biblatex-Anpassungen durch die Bank weg einen großen und ungerechtfertigten Mehraufwand bedeuten, ungern stehen lassen, damit sich Mitleser*innen hier nicht unnötig demotiviert fühlen. Das soll nicht heißen, dass es nicht sein kann, dass das schwierig wird und ich innerlich fluche, wenn ich höre, was da wieder verlangt wird, aber ohne zu wissen, was gefordert ist, kann man das nur schwerlich sagen.

Re: Text einfügen in das Literaturverzeichnis

von dumpfschlumpf » Mo 5. Jul 2021, 12:34

Hallo Gast: Der Hinweis, die Kompilationen nacheinander durchzuführen hat mir sehr weitergeholfen. Danke!

@MoeWe Ganz lieben Dank für deine Hilfe! Deine Formatierungen haben mir enorm geholfen und ich wäre ohne deine Unterstützung aufgeschmissen gewesen.
Für alle Literaturquellen, die als @article bezeichnet sind, läuft es exakt so, wie ich es umsetzen muss.
Ich habe eine Quelle, die als @book formatiert ist und diese ist verzichtbar. Deswegen habe ich mich dafür entschieden, sie einfach rauszunehmen. Das ist schade, aber der Mehraufwand, den das beheben des letzten Problems macht, ist einfach nicht gerechtfertigt für mich.

Re: Text einfügen in das Literaturverzeichnis

von MoeWe » Mo 5. Jul 2021, 10:52

Die Meldung in der .blg-Datei deutet für mich eher darauf hin, dass der Biber-Aufruf falsch ist (ich gehe jetzt mal davon aus, dass Dein .tex-Dokument nicht Literature.tex heißt, sondern dass Du eine Literature.bib hast, die Deine Quellen beherbergt). Biber wird nicht auf der .bib-Datei aufgerufen. Sowohl LaTeX als auch Biber werden idealerweise auf dem Basename (also dem Dateinamen ohne Dateiendung) der Haupt-.tex-Datei aufgerufen. Der Biber-Lauf muss dabei zwangsläufig nach einem vorherigen LaTeX-Lauf, der keine Fehler gemeldet haben sollte (Warnungen können OK sein), geschehen. Unter der Annahme, dass Dein Dokument mydoc.tex und Deine Literaturdatei lit.bib heißt, führst Du pdflatex mydoc, biber mydoc, pdflatex mydoc, pdflatex mydoc aus: der Name lit.bib kommt bei keinem Aufruf vor. In einem Editor bedeutet das, dass Du wahrscheinlich immer mit der Hauptdatei im Fokus/im Fenster der Haupt-.tex-Datei auf den Kompilierknopf drücken solltest und nicht mit der .bib-Datei im Fokus.

Wenn Du die Buchstaben möchtest, dann entferne die Zeile nach dem Kommentar. (Es wird dann aber nur nach dem Jahr gegangen. Die Titel werden nicht mit einbezogen.) In dem Fall ist Dein \xfootcite aber nicht geeignet, die gewünschte Ausgabe zu erzeugen, da dort der Buchstabe niemals angezeigt wird. Den Unterschied sieht man im Beispiel bei den beiden Knuth-Einträgen.

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear,
  giveninits=true,
  uniquename=init,
  autocite=footnote,
]{biblatex}

\renewcommand*{\newunitpunct}{\addcomma\space}

\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{labelname}{sortname}
\DeclareDelimAlias[bib,biblist]{finalnamedelim}{multinamedelim}

\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat{issuetitle}{#1}
\DeclareFieldFormat{maintitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{journaltitle}{#1\isdot}

\renewbibmacro*{in:}{%
  \setunit{\addspace}%
  \bibncpstring{in}%
  \printunit{\intitlepunct}}

\renewcommand*{\jourvoldelim}{\addcomma\space}
\DeclareFieldFormat[article,periodical]{volume}{\bibstring{jourvol}~#1}
\renewcommand*{\volnumdelim}{\addcomma\space}
\NewBibliographyString{journum}
\DefineBibliographyStrings{german}{
  journum = {Heft},
}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{journum}~#1}

\DeclareFieldFormat[article,periodical]{pages}{#1}

\renewcommand*{\finentrypunct}{}

% da wir mit Jahr UND Titel zitieren,
% können wir davaon ausgehen, dass wir
% keine Buchstaben nach den Jahren
% brauchen, um die Dinge eindeutig zu machen
\DeclareFieldInputHandler{extradate}{\def\NewValue{}}

\DeclareInnerCiteDelims{footcite}{\bibopenparen}{\bibcloseparen}

\newbibmacro*{cite:title}{%
  \printtext[bibhyperref]{%
    \printfield[citetitle]{labeltitle}}}

\renewbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}
       {\printnames{labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
     \usebibmacro{cite:labeldate+extradate}%
     \setunit{\printdelim{nametitledelim}}%
     \usebibmacro{cite:title}}
    {\usebibmacro{cite:shorthand}}}

\begin{filecontents}{\jobname.bib}
@book{elke,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
@book{elka,
  author    = {Anna Elk},
  title     = {A Theory on Stegosauruses},
  year      = {1973},
  publisher = {Monthy \& Co.},
  location  = {London},
}
@book{elkb,
  author    = {Anna Elk},
  title     = {A Theory on Stegosauruses},
  year      = {1973},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem\autocite{sigfridsson,elke,elka,knuth:ct:b,knuth:ct:c,worman,nussbaum,geer}

\printbibliography
\end{document}

Re: Text einfügen in das Literaturverzeichnis

von Gute*r Gȧst*in » Mo 5. Jul 2021, 10:51

dumpfschlumpf hat geschrieben:
Mo 5. Jul 2021, 10:24

[591] Utils.pm:411> ERROR - Cannot find 'Literature.bcf'!
[591] Biber.pm:132> INFO - ERRORS: 1

Die *.bcf-Datei ist das biber configuration file und wird von biblatex während des LaTeX-Laufs erzeugt. Wenn die Datei nicht existiert, wurde entweder kein LaTeX vor dem biber-Aufruf aufgerufen oder dabei ist etwas dermaßen fürchterlich schief gelaufen, dass biblatex die Datei nicht erzeugen konnte. Dann sollten aber auch entsprechende Fehlermeldungen in der log-Datei des LaTeX-Laufs zu finden sein.

Manchmal hilft es, wenn man die Hilfsdateien löscht. Das sind im Zusammenhang mit biblatex und biber die Dateien mit den Endungen .bcf und .bbl (nicht die Datei mit der Endung .bib!). Danach wieder LaTeX, biber, LaTeX, LaTeX aufrufen. LaTeX dürfte in deinem Fall vermutlich PDFLaTeX sein (kann in anderen Fällen aber auch XeLaTeX oder LuaLaTeX sein). Die Aufrufe können in TeXstudio über Tools → Befehle auch ganz gezielt einzeln nacheinander ausgeführt werden, statt sich auf Erstellen & Anzeigen zu verlassen. Letzteres hängt nämlich sehr davon ab, wie man Erstellen & Anzeigen konfiguriert hat.

Re: Text einfügen in das Literaturverzeichnis

von dumpfschlumpf » Mo 5. Jul 2021, 10:24

Moin!

Also, ich habe keine Ahnung, aber selbst ich würde sagen, dass die .bib kaputt ist:

[0] Config.pm:311> INFO - This is Biber 2.16
[0] Config.pm:314> INFO - Logfile is 'Literature.blg'
[127] biber-MSWIN32:340> INFO - ===
[591] Utils.pm:411> ERROR - Cannot find 'Literature.bcf'!
[591] Biber.pm:132> INFO - ERRORS: 1

Ich kompiliere über den "Erstellen und Anzeigen"-Button in TeX-Studio bzw. F5.
Das Kompilieren über die Eingabeaufforderung hat nichts geändert.

Dass es nicht funktioniert, äußert sich in der authoryear-Version darin, dass kein Literaturverzeichnis erstellt wird und der cite-Code fettgedruckt stehen bleibt, also z.B. als Pindyck2013
Bei der apa-Version greifen die Änderungen für @Book-Quellen nicht, der Rest wird vernünftig dargestellt.

Zu deinen anderen Änderungsvorschlägen:

% da wir mit Jahr UND Titel zitieren,
% können wir davaon ausgehen, dass wir
% keine Buchstaben nach den Jahren
% brauchen, um die Dinge eindeutig zu machen

Wenn sich auf Schreibweisen wie 2013, 2013a und 2013b bezieht - doch, das brauche ich zwingend. Andernfalls verstehe ich die Anmerkung nicht.

Und ich muss ehrlicherweise sagen, dass ich keine Zeit und Energie (weder deine noch meine) in die Lösung von Problemen stecken mag, die sich für mich nicht auftun. Ich werde nach Abgabe meiner Arbeit nie wieder mit dieser Vorlage arbeiten müssen. Und mein Prof hat so wenig Interesse daran, die Vorlage zu aktualisieren, dass er eine verbesserte Version wahrscheinlich in der Schublade liegen lassen würde und damit nicht einmal Studenten nach mir etwas davon hätten.

Re: Text einfügen in das Literaturverzeichnis

von MoeWe » Mo 5. Jul 2021, 09:26

Zunächst zum Code. Den Block

\renewcommand*{\multinamedelim}{\addnbspace\komma\space}
\DeclareNameFormat{labelname}{
	\ifnum\value{uniquename}<2
	\ifuseprefix
	{\usebibmacro{name:family-given}
		{\namepartfamily}
		{\namepartgiveni}
		{\namepartprefixi}
		{\namepartsuffixi}}
	\fi
	\usebibmacro{name:andothers}}

%%% Zitationsstil - \footcite{•} %%%
\DeclareCiteCommand{\xfootcite}[\mkbibfootnote] 
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}
	\setunit{\addnbspace}
	\printnames{labelname}
	\printfield[parens]{year}
	\setunit{\addcolon\space}
	\printfield[citetitle]{title}
	\newunit}
{\addsemicolon\space}
{\usebibmacro{postnote}}


\renewcommand*{\labelnamepunct}{\addcomma\space}
%Italic weg
\DeclareFieldFormat[article, book]{title}{#1}
\DeclareFieldFormat{journaltitle}{#1}

kann man noch erheblich vereinfachen. Außerdem sind da ein paar Probleme drin.

  • Den Befehl \komma gibt es nicht.
  • Die Definition von labelname kann zu einem ungewollten Leerzeichen führen (das durch das % in \DeclareNameFormat{labelname}{% verhindert werden könnte). Ferner ist der Code so gebaut, dass er in bestimmten Situationen gar keine Namen ausgibt. Nämlich dann, wenn Du zwei Autor*innen mit demselben Nachnamen und demselben Vornamensinitial aber unterschiedlichen Vornamen hast (Anne Elk und Anna Elk zum Beispiel).

Ich würde

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear,
  giveninits=true,
  uniquename=init,
  autocite=footnote,
]{biblatex}

\renewcommand*{\newunitpunct}{\addcomma\space}

\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{labelname}{sortname}
\DeclareDelimAlias[bib,biblist]{finalnamedelim}{multinamedelim}

\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat{issuetitle}{#1}
\DeclareFieldFormat{maintitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{journaltitle}{#1\isdot}

\renewbibmacro*{in:}{%
  \setunit{\addspace}%
  \bibncpstring{in}%
  \printunit{\intitlepunct}}

\renewcommand*{\jourvoldelim}{\addcomma\space}
\DeclareFieldFormat[article,periodical]{volume}{\bibstring{jourvol}~#1}
\renewcommand*{\volnumdelim}{\addcomma\space}
\NewBibliographyString{journum}
\DefineBibliographyStrings{german}{
  journum = {Heft},
}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{journum}~#1}

\DeclareFieldFormat[article,periodical]{pages}{#1}

\renewcommand*{\finentrypunct}{}

% da wir mit Jahr UND Titel zitieren,
% können wir davaon ausgehen, dass wir
% keine Buchstaben nach den Jahren
% brauchen, um die Dinge eindeutig zu machen
\DeclareFieldInputHandler{extradate}{\def\NewValue{}}

\DeclareInnerCiteDelims{footcite}{\bibopenparen}{\bibcloseparen}

\newbibmacro*{cite:title}{%
  \printtext[bibhyperref]{%
    \printfield[citetitle]{labeltitle}}}

\renewbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}
       {\printnames{labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
     \usebibmacro{cite:labeldate+extradate}%
     \setunit{\printdelim{nametitledelim}}%
     \usebibmacro{cite:title}}
    {\usebibmacro{cite:shorthand}}}

\begin{filecontents}[overwrite]{\jobname.bib}
@book{elke,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
@book{elka,
  author    = {Anna Elk},
  title     = {A Theory on Stegosauruses},
  year      = {1973},
  publisher = {Monthy \& Co.},
  location  = {London},
}
@book{elkb,
  author    = {Anna Elk},
  title     = {A Theory on Stegosauruses},
  year      = {1973},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem\autocite{sigfridsson,elke,elka,knuth:ct:b,knuth:ct:c,worman,nussbaum,geer}

\printbibliography
\end{document}

vorschlagen.

----

Aber nun dazu, dass Du den Code nicht zum Laufen bekommst.

Wie genau kompilierst Du Deinen Code? Welchen Editor nutzt Du, welche Knöpfe drückst Du? Bist Du sicher, dass Du nach jeder Stiländerung und jeder Änderung der .bib-Datei den ganzen Zyklus LaTeX, Biber, LaTeX, LaTeX hast laufen lassen? (Nicht nach jeder Änderung muss man den vollen Zyklus durchlaufen. Aber wenn man sicher sein will, dass alles so ist, wie es sein soll, ist es eine gute Idee, den ganzen Zyklus laufen zu lassen.) Manche Editoren haben eine Heuristik, mit der sie selbst bestimmen, wann welches Programm läuft. Diese Heuristik liegt nicht immer goldrichtig. Mit latexmk habe ich hingegen durchweg positive Erfahrungen.

Wie genau äußert es sich, dass "es nicht funktioniert"? Kannst Du uns bitte die .blg-Datei (das ist die Log-Datei von Biber, es ist eine einfache Text-Datei, auch wenn Windows bisweilen sagt, es sei eine "Leistungsüberwachungsdatei") hier in Gänze als Text einfügen (die Datei sollte recht kurz sein). Was sagt LaTeX in der .log-Datei (die ist i.Allg. etwas länger, daher würde ich mich erst auf Warnung und Fehler konzentrieren).

Ich weiß nicht ganz, was Du in Schritt 1 und 3 mit einem neuen Literaturverzeichnis meinst. Meinst Du eine .bib-Datei?

Von der Beschreibung her hätte ich gesagt, dass es zwei wahrscheinliche Problemherde gibt.

  • Deine .bib-Datei hat ein Problem. Das sollte man in der .blg-Datei herausfinden können. Wenn Biber mit der .bib-Datei nicht klar kommt und sich weigert, die Datei zu kompilieren, dann sollte das in der .blg-Datei erklärt sein. Die Frage wäre nur, warum das vorher nicht aufgefallen ist.
  • Dein Editor (oder Du) lässt den Kompilierzyklus nicht immer richtig laufen. Das könnte man rausfinden, wenn man mal aus der Kommandozeile kompiliert und genau nachvollzieht, welches Programm wann läuft. https://texwelt.de/fragen/3461/wie-komp ... m-terminal

Re: Text einfügen in das Literaturverzeichnis

von dumpfschlumpf » So 4. Jul 2021, 20:32

Hallo Gast!
Danke für die Hinweise bezüglich des restlichen Codes.
Mein Problem ist genau darin begründet, dass ich von Seiten des Lehrstuhls diese Vorlage verwenden muss. Und die tut es an allen Ecken und Enden nicht mehr richtig. Ursprünglich war dort bibtex mit jurabib vorgesehen und nur weil dieses Package gar nicht mehr läuft, bin ich überhaupt in der Situation, irgendetwas an dieser Vorlage ändern zu müssen.

Ich habe nämlich in der Tat keine Ahnung, was die meisten der von dir zitierten Codezeilen bewirken. Und da ich keine Ahnung habe, weiß ich auch nicht, ob ich damit sichtbar etwas an der Vorlage verändere. Daher habe ich beschlossen, vom restlichen Code so wenig wie irgendmöglich anzufassen.


Nach oben