Biblatex-Modifikation: U.a. kein Journal/Seitenzahl etc Thema ist als GELÖST markiert

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


vaskui

Biblatex-Modifikation: U.a. kein Journal/Seitenzahl etc

Beitrag von vaskui »

Hallo,

ich benötige mal wieder Eure Hilfe. Mein Betreuer meiner Abschlussarbeit möchte im Literaturverzeichnis:

- keine Journalangabe
- Titel nicht in Anführungsstrichen
- keine Seitenzahl vom Journal

In meiner Vorlage ist das natürlich nicht berücksichtigt. Leider weiß ich auch nicht so recht, wie ich das umsetzen soll.

Kann mir da jemand helfen?

Hier mal das Minimalbeispiel
\documentclass[a4paper,oneside,12pt]{article}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
 

\usepackage[
backend=bibtex,natbib=true,style=authoryear,isbn=false,  
pagetracker=true,maxbibnames=50,maxcitenames=2,autocite=inline,           
block=space,backref=false,backrefstyle=three+,date=short,                
]{biblatex}
\bibliography{litera}

\begin{document}  
  Toller Text, siehe \citet{literatur}.

\printbibliography
\end{document}

Literatur (Dateiname litera):
@Article{literatur,
  Title                    = {Wichtige Eigenschaften},
  Author                   = {Autor, A and Autor, B and Autor, C},
  Journal                  = {Tolles Journal},
  Year                     = {2022},
  Pages                    = {429--438},
  Volume                   = {190},

  Publisher                = {Publisher}
}

Gast

Beitrag von Gast »

Grundsätzlich kann man bestimmte Felder mit \clearfield unterdrücken. Soll das in der Bibliographie geschehen, packt man das in ein \AtEveryBibitem, für die Zitate ist dann \AtEveryCitekey zuständig.
Hier also
\AtEveryBibitem{\clearfield{journaltitle}}
Das würde zwar reichen, um die Journalangabe zu unterdrücken, aber Du würdest dann immer noch ein "in:" und die Heftangaben sehen. Das sähe wohl sehr merkwürdig aus.
Wir können also auch gleich zu
\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {}
    {\printtext{%
       \bibstring{in}\intitlepunct}}}

\renewbibmacro*{journal+issuetitle}{\usebibmacro{date}}
\renewbibmacro*{note+pages}{\printfield{note}}
übergehen. Das wird auch gleich dafür sorgen, dass auch die Seitenzahlen bei @articles verschwinden.

Sonst kann man Seitenzahlen für Artikel mit \AtEveryBibitem{\ifentrytype{article}{\clearfield{pages}}{}} unterdrücken.

Nachfrage zwei kann mit
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibemph{#1}}
oder
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1}
nachgekommen werden.
Dabei werden nur die Anführungszeichen geändert, alles andere bleibt gleich, für einen Rundumschlag ist
\DeclareFieldFormat*{title}{#1}
da.

\documentclass[ngerman,a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
backend=bibtex, natbib=true, style=authoryear, isbn=false,  
pagetracker=true, maxbibnames=50, maxcitenames=2, autocite=inline,          
backref=false, date=short,                
]{biblatex}
\addbibresource{biblatex-examples.bib}

\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {}
    {\printtext{%
       \bibstring{in}\intitlepunct}}}

\renewbibmacro*{journal+issuetitle}{\usebibmacro{date}}
\renewbibmacro*{note+pages}{\printfield{note}}

\begin{document}  
  Toller Text, siehe \citet{sigfridsson,baez/article}.

  \printbibliography
\end{document}
Zum Abschluss möchte ich noch anmerken, dass ich Punkt 1 für absoluten Käse halte und Punkt 3 zumindest für nicht so klug. Du entfernst für den Leser sehr wichtige Informationen, die es ermöglichen die Quelle zu lokalisieren. Jemand ohne Internetzugang in einer Bibliothek ist mit diesen Änderungen garantiert aufgeschmissen und wird nichts finden.
Vielleicht hast Du ja die Möglichkeit, deinem Betreuer subtil anzudeuten, dass das hier Quark ist (und zumindest für alle Fachbereiche, die mir so über den Weg gelaufen sind, auch noch unglaublich unüblich).

Gast

Beitrag von Gast »

Noch ein paar Anmerkungen zu der Antwort oben. Das Feld, das wir hier löschen müssen heißt intern für biblatex journaltitle. Wenn man in der Datei journal nutzt, wird das automatisch zum Feld journaltitle umgebogen (siehe die Driver Sourcemaps in biblatex.def).

Außerdem unterscheidet biblatex zwischen verschiedenen Feldtypen, wichtig sind für uns field, literal list und name list. Je nach Typ muss entweder \clearfield, \clearlist oder \clearname verwendet werden. Die Feldtypen sind in §2.2.2 Data Fields, S. 15-24, der [d]biblatex[/d]-Dokumentation gelistet.
Da journaltitle ein (literal) field ist, benötigen wird \clearfield{journaltitle}; für editor, eine (name) list, wäre \clearname{editor} notwendig; eine (literal) list ist publisher, hier wir also \clearlist{publisher} genutzt.

Wenn Du biber nutzt gibt es noch eine weitere Möglichkeit, Felder zu unterdrücken.
Hier wird das Sourcemapping gebraucht, dort werden die Felder gelöscht, ehe sie verarbeitet werden. Das hat den Vorteil, dass Felder, die zum Sortieren herangezogen werden, auch wirklich gelöscht werden und nicht nur ihre Ausgabe unterdrückt wird, außerdem spielt der Feldtyp hier keine Rolle.

Um das journal- bzw. journaltitle-Feld zu löschen (hier kommt es auf den Feldnamen in der .bib-Datei an), wäre
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=journal, null]
      \step[fieldset=journaltitle, null]
    }
  }
}
sinnvoll. Diese Mappings können auf bestimmte Typen beschränkt sein, wir können also nur die Seitenzahlen von @articles löschen
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=journal, null]
      \step[fieldset=journaltitle, null]
    }
  }
}
Es ist hier zu beachten, dass es immer nur ein \DeclareSourcemap geben darf, mehrere müssen also zu einer kombiniert werden.
\documentclass[ngerman,a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
backend=biber, natbib=true, style=authoryear, isbn=false,  
pagetracker=true, maxbibnames=50, maxcitenames=2, autocite=inline,          
backref=false, date=short,                
]{biblatex}
\addbibresource{biblatex-examples.bib}



\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=journal, null]
      \step[fieldset=journaltitle, null]
    }
    \map{
      \pertype{article}
      \step[fieldset=pages, null]
    }
  }
}

\begin{document}  
  Toller Text, siehe \citet{sigfridsson,baez/article,sarfraz,brandt}.

  \printbibliography
\end{document}

vaskui

Beitrag von vaskui »

Vielen Dank für die ausführliche Antwort.

Ich habe nun nochmal Rücksprache gehalten, und es sollen (neben den Anführungszeichen) nur die Abkürzungen der Seiten (S.), und das "in" entfallen.

Also:

155-165 statt S. 155-165
Tolles Journal statt in: Tolles Journal

Das "in:" soll aber nur für ein Journal, nicht für ein Buch entfallen.

Ich hangele mich mal durch Deine Erläuterungen und schaue, ob ich das so hinbekomme.

Gast

Beitrag von Gast »

Das klingt ja schon viel sinnvoller und ist obendrein noch leichter zu erreichen.

Für das "in" hatten wir ja oben schon
\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {}
    {\printtext{%
       \bibstring{in}\intitlepunct}}}
und für den Titel
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1}
(oder eine der anderen Methoden).

Das "S" bei den Seiten verschwindet mit
\DeclareFieldFormat{pages}{#1}
oder nur für @article mit
\DeclareFieldFormat{pages}{\ifentrytype{article}{#1}{\mkpageprefix[bookpagination]{#1}}}
Zusammen dann
\documentclass[ngerman,a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
backend=biber, natbib=true, style=authoryear, isbn=false,  
pagetracker=true, maxbibnames=50, maxcitenames=2, autocite=inline,          
backref=false, date=short,                
]{biblatex}
\addbibresource{biblatex-examples.bib}

\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {}
    {\printtext{%
       \bibstring{in}\intitlepunct}}}

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1}

\DeclareFieldFormat{pages}{#1}

\begin{document}  
  Toller Text, siehe \citet{sigfridsson,baez/article,sarfraz,brandt}.

  \printbibliography
\end{document}

vaskui

Beitrag von vaskui »

Wow vielen Dank. Das sieht sehr gut aus!

Echt vielen Dank für Deine Bemühungen.

Antworten