Wie keinen Titel bei bestimmten Dokumententypen einfügen?

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: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von Zoid » So 1. Nov 2020, 18:16

Danke für den reichhaltigen Input. Im Moment läuft es zwar bei mir, aber durch deine Infos kann da nochmal ordentlich was optimiert werden :D

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von MoeWe » Do 29. Okt 2020, 07:56

Die Makros

\newbibmacro*{usera}{%
\iffieldundef{usera}%
{}
{\printfield[]{usera}}}

\newbibmacro*{userb}{%
\iffieldundef{userb}%
{}
{\printfield[]{userb}}}

kann man zu

\newbibmacro*{usera}{%
  \printfield{usera}}

\newbibmacro*{userb}{%
  \printfield{userb}}

vereinfachen. \printfield ist von sich aus schlau genug, nichts zu tun, wenn das Feld leer ist. Daher ist es nie notwendig, ein einfaches \printfield{<feld>} mit \iffieldundef{<feld>} zu schützen. (Wenn gewisse Formatierung nicht von \setunit und \printfield kommt, kann es aber sehr wohl sinnvoll sein, \iffieldundef zu nutzen. Oder wenn mehrere Felder ausgegeben werden sollen. Es gibt also durchaus viele gute Anwendungen für \iffieldundef, nur dieses Idiom hier gehört nicht dazu.)

Es ist übrigens nicht zwingend notwendig, ein Bibmakro zu definieren, um etwas in dem driver asuzugeben. Du kannst \printfield auch direkt reinschreiben. Ich finde es sinnvoll, zusammengehörige "Blöcke" zu einem Bibmakro zusammenzufassen, da käme man dann eher bei

\newbibmacro*{patent:inst+loc}{%
  \printfield{userb}%
  \setunit*{\addcolon\space}%
  \printfield{usera}%
}

raus, das man dann im driver einsetzen kann.

In der Eingabe etwas schöner ist es natürlich, wenn man statt der nichtssagenden Namen usera und userb sprechende Namen verwenden kann. Das kann am schönsten dadurch erreichen, dass man die neuen Felder bei biblatex mit einem data model anmeldet. Das ist aber auch etwas Aufwand. Man kann aber auch sprechende Namen mit einer Sourcemap zu usera und userb abbilden lassen. Dann nutzt Du beim Programmieren der Ausgabe usera und userb und musst die neuen Felder nicht groß anmelden, kannst in der Eingabe aber dennoch die sprechenden Namen nutzen. Ein paar Details dazu findet sich bei https://tex.stackexchange.com/q/163303/35864.

Beim TeX-Programmieren solltest Du immer im Hinterkopf behalten, dass das Zeilenende im Code wie ein Leerzeichen gelesen wird. Das bedeutet, dass man in einigen Kontexten ein % hinter das letzte Zeichen der Zeile schreiben muss, um ein Leerzeichen in der Ausgabe zu verhindern.
Vergleiche

A
B

und

A%
B

Das ist insbesondere bei im Kontext von biblatex wichtig, da Du dort Leerzeichen nicht einfach so einfügen solltest. Stattdessen sollte man dafür field formats (\DeclareFieldFormat) oder den punctuation buffer (\setunit) verwenden.

Daher sollte

  \printfield{usera}
  \newunit\newblock 

  \usebibmacro{finentry}
  }

eigentlich

  \printfield{usera}%
  \newunit\newblock
  \usebibmacro{finentry}%
}

sein, um keine ungewollten Leerzeichen und Leerzeilen zu erzeugen. (Es ist durchaus möglich, dass Du nach dieser Anpassung keine Änderung in der Ausgabe siehst, das hat damit zu tun, dass einige dieser Dinge Kontextabhängig sind und dass biblatex so gut wie möglich versucht, ungewollte Leerzeichen zu unterdrücken. Darauf kann man sich aber nicht in allen Lagen verlassen, daher sollte man von vornherein so programmieren, dass keine ungewollten Leerzeichen impliziert sind). Mehr zu % bei TeX.SX: https://tex.stackexchange.com/q/7453/35864

Wie bereits angesprochen, sollte Zeichensetzung in biblatex nie einfach so in einem driver oder Bibmakro erfolgen. Ein nacktes \addspace direkt im driver ist selten eine gute Idee. Stattdessen sollte man den punctuation buffer und \setunit verwenden. Warum das sinnvoll ist, habe ich in https://tex.stackexchange.com/q/409148/35864 erklärt. Zeichensetzung kann auch innerhalb von field formats (nicht aber zu Beginn oder am Ende!) zum Einsatz kommen.
So wäre z.B.

  \printfield{userb}
  \addcolon\addspace
  \printfield{usera}

durch

  \printfield{userb}%
  \setunit*{\addcolon\space}%
  \printfield{usera}%

zu ersetzen. Ich habe hier \setunit* statt \setunit* genommen. Warum kannst Du sehen, wenn Du Dir einen Eintrag mit userb und einen ohne userb (beide sollten usera haben) vergleichst. Was \setunit* macht, ist in dem Link von eben erklärt (es fügt die Zeichensetzung nur in den buffer ein, wenn der vorherige Befehl etwas ausgegeben hat).

Text wie "Patent Nr." sollte man idealerweise nicht hard-codieren sondern mit bibliography strings erledeigen lassen. Ferner ist es hier schöner, die Ausgabe durch ein field format erledigen zu lassen.

Dazu definiert man zunächst

\NewBibliographyString{patentnr}
\DefineBibliographyStrings{german}{
  patentnr = {Patent Nr\adddot},
}
\DeclareFieldFormat[patent]{number}{\bibstring{patentnr}\addspace#1}

und ersetzt dann

  \printlist{location}%
  \addspace
  \printtext{Patent Nr.}%
  \addspace
  \printfield{number}
  \newunit\newblock

durch

  \printlist{location}%
  \setunit*{addspace}%
  \printfield{number}%
  \newunit\newblock

In der Tat ist die Sourcemap jetzt nicht mehr nötig, da Du die Ausgabe des Titels durch Änderung des drivers schon selbst erledigt hast.

Du kannst Deinen biblatex-Code wie jeden anderen Präambelcode auch auslagern. Wenn der Code komplex genug ist, kannst Du aber auch einen eigenen biblatex-Stil erstellen. Mehr dazu bei https://tex.stackexchange.com/q/296732/35864

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von Zoid » Di 27. Okt 2020, 12:14

MoeWe hat geschrieben:
Di 27. Okt 2020, 08:29

Für einen Einstieg in biblatex-Progammierung empfehle ich (im deutschsprachigen Raum) die zwei Artikel von Dominik Waßenhoven in der TeXnischen Komödie 2/2008 https://archiv.dante.de/DTK/PDF/komoedie_2008_2.pdf und 4/2008 https://archiv.dante.de/DTK/PDF/komoedie_2008_4.pdf (englischsprachig kenne ich nichts dergleichen). Die sind zwar inzwischen deutlich mehr als 10 Jahre alt und in der Zeit hat sich einiges geändert (einige Dinge gehen heute einfacher, andere einfach nur anders), aber die Grundideen sind immernoch die gleichen.

Das werd ich mir mals Abendlektüre abspeichern.
Soweit habe ich gestern Nacht noch lange gesucht und gearbeitet und bin auch weiter gekommen.
Erst mal eine Anleitung, die mir geholfen hat:
http://mirror.physik-pool.tu-berlin.de/ ... blatex.pdf

Daraus habe ich meinen Code angepasst:

\documentclass[12pt,a4paper,toc=listof,parskip=full]{scrreprt}

\usepackage[backend=biber,
	style=authoryear,
	maxcitenames=2,
	isbn=false,
	giveninits=true,
	uniquename=false]{biblatex}	% Literaturverzeichnis mit Datei
				
\DeclareFieldFormat[article]{title}{{#1}}		% entfernt `` bei Titel von Artikel

\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}	% tauscht ``und'' gegen ``&'' im Literaturverzeichnis
\DefineBibliographyStrings{ngerman}{andothers = {{et\,al\adddot}},}	% ersetzen von u.a. zu et al.

\DeclareSourcemap{	% entfernt Einträge bei Patenten
  \maps{
    \map{
      \pertype{patent}
      \step[fieldset=title, null]
      \step[fieldset=subtitle, null]
      \step[fieldset=titleaddon, null]
    }
  }
}

\newbibmacro*{usera}{%
\iffieldundef{usera}%
{}
{\printfield[]{usera}}}

\newbibmacro*{userb}{%
\iffieldundef{userb}%
{}
{\printfield[]{userb}}}

\DeclareBibliographyDriver{patent}{%
  \printnames{author}%
  \newunit\newblock
  \printfield[parens]{year}%
  \newunit\newblock
  \printlist{location}%
  \addspace
  \printtext{Patent Nr.}%
  \addspace
  \printfield{number}
  \newunit\newblock
  \printfield{userb}
  \addcolon\addspace
  \printfield{usera}
  \newunit\newblock  
\usebibmacro{finentry} } \addbibresource{literatur2.bib} \begin{document} \nocite{*} \printbibliography \end{document}

Auch der .bib-Eintrag wurde modernisiert, indem ich zwei individuelle Felder eingefügt habe (usera, userb):

@patent{Herrmann.6262018,
 author = {Herrmann, Anna and R{\"o}diger, Stefan and Schedler, Uwe and Schierack, Peter and Haag, Rainer},
 year = {2020},
 title = {Assay, Verfahren zu seiner Herstellung sowie seine Verwendung},
 number = {102018115391 (A1)},
 abstract = {Die Erfindung betrifft einen Assay f{\"u}r die Analyse eines komplexen Analysats. Der Assay (1) umfasst zumindest eine Schicht (10), welche umfasst:• ein por{\"o}ses dreidimensionales Polymernetzwerk (11) mit einer vorbestimmten Maschenweite, und• zumindest eine Population von in dem dreidimensionalen Polymernetzwerk (11) eingebetteten und immobilisierten Partikeln (12), jeweils umfassend einen Tr{\"a}gerpartikel (13) und eine an dem Tr{\"a}gerpartikel (13) gebundene F{\"a}ngersonde (14), die eine Targetspezies (15, 17) des Analysats zu binden vermag.Die Immobilisierung der Partikel (12) mittels des Polymernetzwerks (11) erlaubt, die Spezifit{\"a}t des Assays zu erh{\"o}hen, und erleichtert die Anwendung. In bevorzugter Ausf{\"u}hrung sind mehrere solcher Schichten aufeinander gestapelt angeordnet, wodurch der Assay (1) eine Vielzahl von Targetspezies (15, 17) in einer einzigen Messung analysieren kann.},
 holder = {{BRANDENBURGISCHE TECHNISCHE UNIV COTTBUS SENFTENBERG} and {POLYAN GES ZUR HERSTELLUNG VON POLYMEREN FUER SPEZIELLE ANWENDUNGEN UND ANALYTIK MBH}},
 usera = {Deutsches Patent- und Markenamt},
 userb = {M{\"u}nchen},
 file = {http://worldwide.espacenet.com/publicationDetails/biblio?FT=D&CC=DE&NR=102018115391A1&KC=A1},
 location = {DE},
 version = {DE201810115391 20180626},
 subtitle = {DE201810115391},
 titleaddon = {G01N33/531;C12Q1/68;G01N21/64}
}

Und bekomme somit das Ergebnis, welches ich angestrebt habe:

Unbenannt.PNG

Jetzt habe ich noch ein paar Fragen zu meinem Code:
Ist der Eintrag \DeclareSourcemap{ % entfernt Einträge bei Patenten noch relevant oder kann der auch gelöscht werden?
Lassen sich alle Einstellungen von \DeclareFieldFormat[article]{title}{{#1}} % entfernt `` bei Titel von Artike bis \usebibmacro{finentry} } in ein seperates Dokument schreiben und einbinden? Da ich noch einige andere Typen von Literaturquellen habe, würde mein Hauptdokument sonst realtiv unübersichtlich werden.

EDIT: Letzteres scheint mit \input{} möglich zu sein.

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von MoeWe » Di 27. Okt 2020, 08:29

Zoid hat geschrieben:
Mo 26. Okt 2020, 22:40
MoeWe hat geschrieben:
Mo 26. Okt 2020, 07:53

Wenn Du Felder in der Ausgabe umordnen möchtest, dann musst Du entweder die bibliography driver oder die genutzten bibmacros umdefinieren. In Deinem Fall sieht der driver so aus

\DeclareBibliographyDriver{patent}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \printfield{type}%
  \setunit*{\addspace}%
  \printfield{number}%
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
     \printtext[parens]{%
       \printlist[][-\value{listtotal}]{location}}}%
  \newunit\newblock
  \usebibmacro{byholder}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{date}%
  \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}}

Du kannst das einfach so in Deine Präambel übernehmen und dann nach Herzenslust Zeilen umordnen oder ändern.

Da habe ich jetzt Probleme mich zurechtzufinden. Ich habe das ganze einfach mal direkt hiner den Eintrag \addbibresource{literatur2.bib} gepackt und es gibt mir keine Fehlermeldung aus, also gehe ich davon aus, dass es so falsch nicht sein kann. Tausche ich jetzt zu Testzwecken "title" und "author" passiert aber nichts. Trage ich "year" anstatt von "title" ein, dann bekomme ich einen Error, dass das macro "year" nicht deniniert ist. Allerdings wurde "author" oder "title " auch nicht irgendwo als mactro definiert.

Ich versuch nochmal weitere Erklärungen für Normalsterbliche ausfindig zu machen um vielleicht noch etwas in der Thematik zu verstehen und werde berichten, wenn ich Fortschritte verzeichnen kann.

Für einen Einstieg in biblatex-Progammierung empfehle ich (im deutschsprachigen Raum) die zwei Artikel von Dominik Waßenhoven in der TeXnischen Komödie 2/2008 https://archiv.dante.de/DTK/PDF/komoedie_2008_2.pdf und 4/2008 https://archiv.dante.de/DTK/PDF/komoedie_2008_4.pdf (englischsprachig kenne ich nichts dergleichen). Die sind zwar inzwischen deutlich mehr als 10 Jahre alt und in der Zeit hat sich einiges geändert (einige Dinge gehen heute einfacher, andere einfach nur anders), aber die Grundideen sind immernoch die gleichen.

Wenn Du in dem Driver unter Beachtung der Einrückung hier einfach nur Zeilen bzw. Zeilenblöcke umordnest, sollte eigentlich alles auf Anhieb funktionieren. Wenn Du stattdessen andere Anpassungen vornimmst, musst Du etwas mehr Hintergrundwissen haben, welche Makros von biblatex bzw. Deinem genutzten Stil definiert sind. So gibt es eben standardmäßig Makros mit den Namen author und title, aber eben keins mit dem Namen year (das Datum wird mit \printdate und Co. ausgegeben, hier passiert das entweder durch eine Modifikation des Bibmacros author oder im Bibmakro date). Dazu muss man sich den Code des genutzten Stils ansehen. Siehe z.B. auch https://tex.stackexchange.com/q/554623/35864

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von Zoid » Mo 26. Okt 2020, 23:27

Was man nicht alles bei dem Programm machen kann. Werd ich mal für die Zukunft im Hinterkopf beobachten. Danke dafür

Die Datumsänderung habe ich mal vorgenommen, weil beim d.m.y Format gemeckert wurde von Latex und das Intert mir gesagt hat, dass das amerikanische Format richtig ist. War aber auch ein englisches Forum.....

MoeWe hat geschrieben:
Mo 26. Okt 2020, 22:53

Die Zeile

 date = {1/2/2020},

in Deinem Eintrag ist fehlerhaft. date-Felder müssen in ISO-8601/EDTF-kompatiblen Format befüllt werden. Korrekt wäre wohl (Achtung, Dein Eintrag nutzt das amerikanische Format m/d/yyyy)

 date = {2020-01-02},

Meine Einträge beziehe ich immer von espacenet, da ich auch amerikanische und japanische Patente aus dem 19. Jhd. habe und dort der meiste Informationsgehalt geliefert wird.

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von MoeWe » Mo 26. Okt 2020, 22:53

Aha!

Wenn die Ausgabe im Literaturverzeichnis nicht so ist, wie man erwartet, obwohl man denkt, alles richtig gemacht zu haben, ist es immer einen Versuch wert, in der Logdatei von Biber (der .blg-Datei) nachzusehen. (Auf Windowssystemen wird die .blg-Datei womöglich als 'Leistungsüberwachungsdatei' klassifiziert, sie ist aber dennoch eine einfache Textdatei, die mit einem beliebigen Editor geöffnet werden kann.)

Bei dem gezeigten Beispiel finde ich in der .blg-Datei

[0] Config.pm:312> INFO - This is Biber 2.15 (beta)
[0] Config.pm:315> INFO - Logfile is 'sdsfsfdsf.blg'
[104] biber-MSWIN64:330> INFO - === 
[122] Biber.pm:415> INFO - Reading 'sdsfsfdsf.bcf'
[218] Biber.pm:949> INFO - Using all citekeys in bib section 0
[235] Biber.pm:4334> INFO - Processing section 0
[249] Biber.pm:4523> INFO - Looking for bibtex format file 'sdsfsfdsf.bib' for section 0
[263] bibtex.pm:1682> INFO - LaTeX decoding ...
[280] bibtex.pm:1494> INFO - Found BibTeX data source 'sdsfsfdsf.bib'
[313] Utils.pm:395> WARN - Entry 'Herrmann.6262018' (sdsfsfdsf.bib): Invalid format '1/2/2020' of date field 'date' - ignoring
[330] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[330] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[330] Biber.pm:4162> INFO - Sorting list 'nyt/global//global/global' of type 'entry' with template 'nyt' and locale 'en-US'
[330] Biber.pm:4168> INFO - No sort tailoring available for locale 'en-US'
[332] bbl.pm:651> INFO - Writing 'sdsfsfdsf.bbl' with encoding 'UTF-8'
[335] bbl.pm:754> INFO - Output to sdsfsfdsf.bbl
[339] Biber.pm:128> INFO - WARNINGS: 1

Die spannende Stelle ist

[313] Utils.pm:395> WARN - Entry 'Herrmann.6262018' (sdsfsfdsf.bib): Invalid format '1/2/2020' of date field 'date' - ignoring

Die Zeile

 date = {1/2/2020},

in Deinem Eintrag ist fehlerhaft. date-Felder müssen in ISO-8601/EDTF-kompatiblen Format befüllt werden. Korrekt wäre wohl (Achtung, Dein Eintrag nutzt das amerikanische Format m/d/yyyy)

 date = {2020-01-02},

Problematisch ist hier ferner, dass ein Eintrag niemals sowohl ein date als auch year haben sollte: Korrekt wäre entweder oder, aber nicht beides. Hier 'gewinnt' date über year, dann wird aber date ignoriert, da es keine valide Eingabe ist, also ist alles weg.

Ich würde mich bei Patenten vorzugsweise auf die Datenbank der relevanten Institute verlassen und nicht auf Dritte. Basierend auf https://register.dpma.de/DPMAregister/p ... 0181153910 würde mein Eintrag wie im folgenden Beispiel aussehen

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}

\usepackage[backend=biber,
  style=authoryear,
  maxcitenames=2,
  isbn=false,
  giveninits=true]{biblatex}

\DeclareFieldFormat[article]{title}{#1}

\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
\DefineBibliographyStrings{ngerman}{andothers = {{et\,al\adddot}},}

\DeclareSourcemap{
  \maps{
    \map{
      \pertype{patent}
      \step[fieldset=title, null]
      \step[fieldset=subtitle, null]
      \step[fieldset=titleaddon, null]
    }
  }
}


\begin{filecontents}{\jobname.bib}
@patent{Herrmann.6262018,
  author   = {Herrmann, Anna and Rödiger, Stefan
              and Schedler, Uwe and Schierack, Peter
              and Haag, Rainer},
  title    = {Assay, Verfahren zu seiner Herstellung sowie seine Verwendung},
  date     = {2018-06-26},
  number   = {10 2018 115 391.0},
  location = {countryde},
  holder   = {{Brandenburgische Technische Universität Cottbus-Senftenberg}
              and {PolyAn Gesellschaft zur Herstellung von Polymeren
              für spezielle Anwendungen und Analytik mbH}},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
\nocite{*}
\printbibliography
\end{document}

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von Zoid » Mo 26. Okt 2020, 22:40

MoeWe hat geschrieben:
Mo 26. Okt 2020, 07:53

Wenn Du Felder in der Ausgabe umordnen möchtest, dann musst Du entweder die bibliography driver oder die genutzten bibmacros umdefinieren. In Deinem Fall sieht der driver so aus

\DeclareBibliographyDriver{patent}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \printfield{type}%
  \setunit*{\addspace}%
  \printfield{number}%
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
     \printtext[parens]{%
       \printlist[][-\value{listtotal}]{location}}}%
  \newunit\newblock
  \usebibmacro{byholder}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{date}%
  \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}}

Du kannst das einfach so in Deine Präambel übernehmen und dann nach Herzenslust Zeilen umordnen oder ändern.

Da habe ich jetzt Probleme mich zurechtzufinden. Ich habe das ganze einfach mal direkt hiner den Eintrag \addbibresource{literatur2.bib} gepackt und es gibt mir keine Fehlermeldung aus, also gehe ich davon aus, dass es so falsch nicht sein kann. Tausche ich jetzt zu Testzwecken "title" und "author" passiert aber nichts. Trage ich "year" anstatt von "title" ein, dann bekomme ich einen Error, dass das macro "year" nicht deniniert ist. Allerdings wurde "author" oder "title " auch nicht irgendwo als mactro definiert.

Ich versuch nochmal weitere Erklärungen für Normalsterbliche ausfindig zu machen um vielleicht noch etwas in der Thematik zu verstehen und werde berichten, wenn ich Fortschritte verzeichnen kann.

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von Zoid » Mo 26. Okt 2020, 09:48

Da habe ich nicht aufgepasst. War ein Versuch, die Jahreszahl zu integrieren, der nicht mehr gelöscht wurde. Anbei nochmal der geänderte Code als Minimalbeispiel, wo leider immer noch die Jahreszahl fehlt.

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}

\usepackage[backend=biber,
	style=authoryear,
	maxcitenames=2,
	isbn=false,
	firstinits=true]{biblatex}	% Literaturverzeichnis mit Datei
				
\DeclareFieldFormat[article]{title}{{#1}}		% entfernt `` bei Titel von Artikel

\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}	% tauscht ``und'' gegen ``&'' im Literaturverzeichnis
\DefineBibliographyStrings{ngerman}{andothers = {{et\,al\adddot}},}	% ersetzen von u.a. zu et al.

\DeclareSourcemap{	% entfernt Einträge bei Patenten
  \maps{
    \map{
      \pertype{patent}
      \step[fieldset=title, null]
      \step[fieldset=subtitle, null]
      \step[fieldset=titleaddon, null]
    }
  }
}
\addbibresource{literatur2.bib}


\begin{document}

\nocite{*}
\printbibliography

\end{document}

.bib Eintrag

@patent{Herrmann.6262018,
 author = {Herrmann, Anna and R{\"o}diger, Stefan and Schedler, Uwe and Schierack, Peter and Haag, Rainer},
 year = {2020},
 title = {Assay, Verfahren zu seiner Herstellung sowie seine Verwendung},
 number = {DE102018115391 (A1)},
 abstract = {Die Erfindung betrifft einen Assay f{\"u}r die Analyse eines komplexen Analysats. Der Assay (1) umfasst zumindest eine Schicht (10), welche umfasst:• ein por{\"o}ses dreidimensionales Polymernetzwerk (11) mit einer vorbestimmten Maschenweite, und• zumindest eine Population von in dem dreidimensionalen Polymernetzwerk (11) eingebetteten und immobilisierten Partikeln (12), jeweils umfassend einen Tr{\"a}gerpartikel (13) und eine an dem Tr{\"a}gerpartikel (13) gebundene F{\"a}ngersonde (14), die eine Targetspezies (15, 17) des Analysats zu binden vermag.Die Immobilisierung der Partikel (12) mittels des Polymernetzwerks (11) erlaubt, die Spezifit{\"a}t des Assays zu erh{\"o}hen, und erleichtert die Anwendung. In bevorzugter Ausf{\"u}hrung sind mehrere solcher Schichten aufeinander gestapelt angeordnet, wodurch der Assay (1) eine Vielzahl von Targetspezies (15, 17) in einer einzigen Messung analysieren kann.},
 holder = {{BRANDENBURGISCHE TECHNISCHE UNIV COTTBUS SENFTENBERG} and {POLYAN GES ZUR HERSTELLUNG VON POLYMEREN FUER SPEZIELLE ANWENDUNGEN UND ANALYTIK MBH}},
 date = {1/2/2020},
 file = {http://worldwide.espacenet.com/publicationDetails/biblio?FT=D&CC=DE&NR=102018115391A1&KC=A1},
 location = {DE},
 version = {DE201810115391 20180626},
 subtitle = {DE201810115391},
 titleaddon = {G01N33/531;C12Q1/68;G01N21/64}
}

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von MoeWe » Mo 26. Okt 2020, 07:53

Leider ist der gezeigte Code kein echtes Minimalbeispiel, da einerseits relevante .bib-Einträge als Beispiele fehlen und andererseits nur der biblatex-Aufruf gezeigt ist und \documentclass sowie \begin{document}...\end{document} fehlen. Ich habe Deinen Code also nicht getestet.

Die Zeile

\step[fieldset=year,origfieldval,final]

aus Deiner Sourcemap ist mir etwas suspekt. Ich kann mir vorstellen, dass sie zusammen mit den vorherigen Zeilen das year-Feld löscht. Allerdings weiß ich nicht, was origfieldval formal gesehen tun sollte, wenn es kein vorheriges fieldsource gibt. von Wofür ist die Zeile gedacht? In meinem Beispiel war sie nicht enthalten.

Wenn Du Felder in der Ausgabe umordnen möchtest, dann musst Du entweder die bibliography driver oder die genutzten bibmacros umdefinieren. In Deinem Fall sieht der driver so aus

\DeclareBibliographyDriver{patent}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \printfield{type}%
  \setunit*{\addspace}%
  \printfield{number}%
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
     \printtext[parens]{%
       \printlist[][-\value{listtotal}]{location}}}%
  \newunit\newblock
  \usebibmacro{byholder}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{date}%
  \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}}

Du kannst das einfach so in Deine Präambel übernehmen und dann nach Herzenslust Zeilen umordnen oder ändern.

Re: Wie keinen Titel bei bestimmten Dokumententypen einfügen?

von Zoid » Mo 26. Okt 2020, 01:47

Das hilft schon mal weiter. Ich habe jetzt folgenden Code:

\usepackage[backend=biber,
	style=authoryear,
	maxcitenames=2,
	isbn=false,
	firstinits=true]{biblatex}	% Literaturverzeichnis mit Datei
				
\DeclareFieldFormat[article]{title}{{#1}}		% entfernt `` bei Titel von Artikel

\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}	% tauscht ``und'' gegen ``&'' im Literaturverzeichnis
\DefineBibliographyStrings{ngerman}{andothers = {{et\,al\adddot}},}	% ersetzen von u.a. zu et al.

\DeclareSourcemap{	% entfernt Einträge bei Patenten
  \maps{
    \map{
      \pertype{patent}
      \step[fieldset=title, null]
      \step[fieldset=subtitle, null]
      \step[fieldset=titleaddon, null]
      \step[fieldset=year,origfieldval,final]
    }
  }
}
\addbibresource{subdata/literatur.bib}

Jetzt wird mir bei allen Pateten keine Jahreszahl mehr angezeigt sonder nur leere Klammern (). Bei allen anderen Quellen gibt es jedoch Jahreszahlen. Wie kann ich die Jahreszahl für Patente hinzufügen?

Wie kann ich Reihenfolge der einzelnen "Bausteine" verändern? Aktuell steht "location" hinter "number" bei den Patenten. Ich benötige es ab andersrum.


Nach oben