Anpassungen beim Driver Patent Thema ist als GELÖST markiert

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


ChemSim
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 66
Registriert: Fr 14. Feb 2020, 14:13

Anpassungen beim Driver Patent

Beitrag von ChemSim »

Hallo zusammen,

ich habe für mein Dokument den driver für @patent umgeschrieben und erhalte dabei das folgende Ergebnis:
\documentclass[parskip=half,12pt,listof=totoc]{scrbook}
\usepackage[ngerman,english]{babel}

% Literaturverzeichnis
\usepackage[autocite=superscript, chaptertitle=true, url=false, doi=false, backend=biber, style=chem-angew]{biblatex}
\usepackage{csquotes}

% Anpassungen am driver @patent

\newbibmacro*{holder}{%
  \printnames{holder}}

\DeclareNameWrapperFormat[patent]{author}{\mkbibparens{#1}}
\newbibmacro*{patentauthor}{%
  \setunit{\addspace}%
  \printnames{author}}

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

\begin{filecontents}{\jobname.bib}
@Patent{Petrosky1988,
  author = {J. T. Petrosky},
  date   = {1988},
  number = {US 4922043A},
  title  = {Manufacture of methyl chloride by hydrochlorinating methanol, using a split methanol feed},
  holder = {{Vulcan Materials Company}},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem.\autocite{Petrosky1988}

\printbibliography

\end{document}
Nun möchte ich ändern, dass der title nicht in Anführungszeichen steht, sondern kursiv ausgegeben wird. Wie kann ich das lösen?

Viele Grüße
ChemSim

ChemSim
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 66
Registriert: Fr 14. Feb 2020, 14:13

Re: Anpassungen beim Driver Patent

Beitrag von ChemSim »

Ich habe gerade selber die Lösung gefunden:

Für Leute, die das gleiche Ergebnis anstreben, hier nochmal der gesamte Code:
\documentclass[parskip=half,12pt,listof=totoc]{scrbook}
\usepackage[ngerman,english]{babel}

% Literaturverzeichnis
\usepackage[autocite=superscript, chaptertitle=true, url=false, doi=false, backend=biber, style=chem-angew]{biblatex}
\usepackage{csquotes}

% Anpassungen am driver @patent

\newbibmacro*{holder}{%
  \printnames{holder}}
  
\DeclareNameWrapperFormat[patent]{author}{\mkbibparens{#1}}
\newbibmacro*{patentauthor}{%
  \setunit{\addspace}%
  \printnames{author}}

\DeclareBibliographyDriver{patent}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{holder}%
  \setunit{\labelnamepunct}\newblock
  {\mkbibemph{\usebibmacro{title}}}%
  \newunit\newblock
  \printfield{type}%
  \newunit
  \printfield{number}%
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
     \printtext[parens]{%
       \printlist[][-\value{listtotal}]{location}}}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{date}%
  \newunit\newblock
  \usebibmacro{patentauthor}%
  \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}%
}

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

\begin{filecontents}{\jobname.bib}
@Patent{Petrosky1988,
  author = {J. T. Petrosky},
  date   = {1988},
  number = {US 4922043A},
  title  = {Manufacture of methyl chloride by hydrochlorinating methanol, using a split methanol feed},
  holder = {{Vulcan Materials Company}},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem.\autocite{Petrosky1988}

\printbibliography

\end{document}
Durch Anpassen zu
 {\mkbibemph{\usebibmacro{title}}}%
und hinzufügen von
\DeclareFieldFormat[patent]{title}{#1}
habe ich das gewünschte Ergebnis erhalten.

Viele Grüße
ChemSim

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

Re: Anpassungen beim Driver Patent

Beitrag von MoeWe »

Schöner ist es, wenn \mkbibemph auch in \DeclareFieldFormat steht. Dann muss es nämlich nicht auf \usebibmacro{title} angewendet werden. Die direkte Nutzung von \mkbibemph und ähnlicher Befehle mit Argumenten wie \usebibmacro... hat nämlich den Nachteil, dass sie mit biblatexs Zeichensetzungsbefehlen nicht so gut zusammenarbeitet und - viel wichtiger - nicht sehen kann, ob vielleicht gar nichts ausgegeben wird. Das ist bei \mkbibemph und dem title jetzt weniger sichtbar und weniger wahrscheinlich. Bei einem Befehl wie \mkbibquote oder \mkbibparens und einem Feld, das auch mal fehlen kann sehr relevant: Dann steht da nämlich im schlimmsten Fall leere Anführungszeichen oder dergleichen.
\documentclass[parskip=half,12pt,listof=totoc]{scrbook}
\usepackage[ngerman,english]{babel}
\usepackage{csquotes}
\usepackage[
  style=chem-angew,
  backend=biber,
  chaptertitle=true,
  url=false, doi=false,
  autocite=superscript,
]{biblatex}

\newbibmacro*{holder}{%
  \printnames{holder}}
  
\DeclareNameWrapperFormat[patent]{author}{\mkbibparens{#1}}
\newbibmacro*{patentauthor}{%
  \setunit{\addspace}%
  \printnames{author}}

\DeclareFieldFormat[patent]{title}{\mkbibemph{#1}}

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

\begin{filecontents}{\jobname.bib}
@Patent{Petrosky1988,
  author = {J. T. Petrosky},
  date   = {1988},
  number = {US 4922043A},
  title  = {Manufacture of methyl chloride by hydrochlorinating methanol, using a split methanol feed},
  holder = {{Vulcan Materials Company}},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem.\autocite{Petrosky1988}

\printbibliography
\end{document}

ChemSim
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 66
Registriert: Fr 14. Feb 2020, 14:13

Re: Anpassungen beim Driver Patent

Beitrag von ChemSim »

Hallo MoeWe,

vielen Dank für Deine Antwort und die elegantere Lösung. Ich habe es direkt in meinem Dokument übernommen. :D

Viele Grüße
ChemSim

Antworten