goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Umstieg von bibtex auf biblatex

 

lennnox1
Forum-Anfänger
Forum-Anfänger

Beiträge: 13
Anmeldedatum: 08.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2017, 11:56     Titel:
  Antworten mit Zitat      
Vielen Dank das klappt super! Very Happy
Besteht die Möglichkeit innerhalb des Feldes @standard noch zwischen einer VDI-Richtlinie zu unterscheiden?
Der Eintrag müsste wie folgt aussehen:

[VDI 2860]

Richtlinie VDI 2860 Mai 1990. Montage- und Handhabungstechnik;
Handhabungsfunktionen, Handhabungseinrichtungen; Begriffe, Definitionen, Symbole

Vielen Dank schon mal Smile
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2017, 09:57     Titel:
  Antworten mit Zitat      
Das geht auch, Du musst Dir nur die Frage stellen, wie viele verschiedene @standard-Typen Du hast. Irgendwann wird es unpraktikabel, und man sollte doch das cite-Makro ändern.

Ich gehe davon aus, dass hier das Leerzeichen zwischen 'VDI' und der Nummer gewollt ist, bei DIN jedoch immer noch nicht. Dann haben wir
Code • Öffne in Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[backend=biber,citestyle=authoryear,bibstyle=authortitle, sorting=nty,dashed=false,%
    maxcitenames=2,maxbibnames=99,uniquelist=false, uniquename=false, natbib=true, urldate=comp]{biblatex}
     
\AtBeginBibliography{\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}}
\DeclareNameAlias{sortname}{family-given}

\setlength{\bibhang}{0pt}% wirklich nur wenns denn sein muss

\AtBeginBibliography{%
  \renewcommand*{\multinamedelim}{\addsemicolon\space}%
  \renewcommand*{\finalnamedelim}{\multinamedelim}}

% Siehe http://tex.stackexchange.com/q/11827/35864, plus ein paar Modifikationen
\newcounter{mymaxcitenames}
\AtBeginDocument{%
  \setcounter{mymaxcitenames}{\value{maxnames}}%
}

\makeatletter
\renewbibmacro*{begentry}{%
  \printtext[brackets]{\printtext[bold]{%
    \begingroup
    \renewcommand*{\multinamedelim}{\addcomma\space}%
    \renewcommand*{\finalnamedelim}{%
      \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
      \addspace\bibstring{and}\space}%
    \csuse{blx@hook@cite}%
    \csuse{blx@hook@citekey}%
    \citetrackerfalse\pagetrackerfalse\backtrackerfalse
    \defcounter{maxnames}{\value{mymaxcitenames}}%
    \usebibmacro{cite}%
    \endgroup
    }}%
  \newline
}
\makeatother

\DefineBibliographyStrings{ngerman}{%
  andothers = {et\addabbrvspace al\adddot},
  urlseen = {Zugriff am},
  urlfrom = {verfügbar unter},
}

\renewbibmacro*{issue+date}{%
  \setunit{\addcomma\space}%
  \printfield{issue}%
  \setunit*{\addspace}%
  \usebibmacro{date}%
  \newunit}

\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\addcolon\space#1}}
\renewbibmacro*{date}{%
  \printdate
  \setunit{\addspace}%
  \usebibmacro{urldate}}

\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\space\url{#1}}
\renewbibmacro*{url+urldate}{%
  \usebibmacro{url}%
  \iffieldundef{urlyear}}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Schmidt, A. and Schneider, B.
},
  year = {2001},
  title = {Alpha},
}
@misc{A02,
  author = {Meier, A. and Mueller, B. and J, Kurt
},
  year = {2001},
  title = {Alpha},
}
@misc{A03,
  author = {Lens,Markus
},
  year = {2001},
  title = {Alpha},
}
@article{wenz,
  author  = {Karin Wenz
},
  title   = {Formen der Mündlichkeit und Schriftlichkeit in digitalen Medien},
  journal = {Linguistik Online},  
  volume  = {1},
  number  = {1},
  date    = {1998-11-19},
%  issn    = {1615-3014},
  url     = {https://bop.unibe.ch/linguistik-online/article/view/1085},
  urldate = {2017-03-09},
%  doi     = {10.13092/lo.1.10850},
}
@standard{DIN66001,
  title = {Informationsverarbeitung; Sinnbilder und ihre Anwendung
},
  date = {1983-12},
  institution = {DIN},
  type={Norm},
  number = {66001},
}

@standard{VDI2860,
  title = {Montage- und Handhabungstechnik; Handhabungsfunktionen, Handhabungseinrichtungen; Begriffe, Definitionen, Symbole
},
  date = {1990-05},
  institution = {VDI},
  type={Richtlinie},
  number = {2860},
}
\end{filecontents}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=true]{
      \pertype{standard
}
      \step[fieldsource=institution, match=\regexp{\ADIN\Z}, final]
      \step[fieldset=shorthand, origfieldval]
      \step[fieldsource=number, final]
      \step[fieldset=shorthand, origfieldval, append]
      \step[fieldset=shorthand, fieldvalue={:}, append]
      \step[fieldsource=date, match=\regexp{\A[0-9]{2}([0-9]{2})}]
      \step[fieldset=shorthand, fieldvalue={$1}, append]
    }
    \map[overwrite=true]{
      \pertype{standard
}
      \step[fieldsource=institution, match=\regexp{\AVDI\Z}, final]
      \step[fieldset=shorthand, origfieldval]
      \step[fieldset=shorthand, fieldvalue={~}, append]
      \step[fieldsource=number, final]
      \step[fieldset=shorthand, origfieldval, append]
    }
  }
}

\DeclareBibliographyDriver{standard}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{type}%
  \setunit{\addspace}\newblock
  \printlist{institution}%
  \setunit{\addspace}
  \printfield{number}%
  \setunit{\addspace}\newblock
  \printfield{month}%
  \setunit{\addspace}
  \printfield{year}%
  \newunit\newblock
  \usebibmacro{title}%
  \usebibmacro{finentry}}

\addbibresource{\jobname.bib}

\begin{document}
\cite{A01,A02,A03,wenz,DIN66001,VDI2860}

\printbibliography[title=Literaturverzeichnis]
\end{document}


man beachte, dass sich lediglich der \DeclareSourcemap-Block geändert hat. Dort wird nun nach DIN und VDI unterschieden. Wenn Du eine andere Norm hast, die nicht von diesen beiden herausgegeben wurde, kannst Du ad hoc das Feld shorthand für die richtige Bezeichnung wählen. Wenn es mehr davon gibt, solltest Du über ein Schema wie für DIN/VDI gezeigt nachdenken.

lennnox1
Forum-Anfänger
Forum-Anfänger

Beiträge: 13
Anmeldedatum: 08.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2017, 11:07     Titel:
  Antworten mit Zitat      
Vielen Dank das klappt super Smile

Edit: Mir ist gerade aufgefallen, dass die DIN und VDI nicht in alphabetischer Reihenfolge ist. Im Beispiel kommt die VDI vor der Quelle [Schmidt und Schneider 2001], besteht die Möglichkeit das zu ändern?
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2017, 17:10     Titel:
  Antworten mit Zitat      
Oh, interessant. Ich dachte irgendwie, dass beim Sortieren den Shorthands Vorrang gegeben würde. Dem ist aber nicht so.

Wenn ich mir das so ansehe, solltest Du auf das folgende umsteigen. Mit dem neuen Sortierschema wird das Literaturverzeichnis nach Autor/Jahr bzw. dem Shorthand sortiert, das entspricht (meist) der Ausgabe bei \cite.
Code • Öffne in Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[backend=biber,citestyle=authoryear,bibstyle=authortitle, sorting=cnyt, dashed=false,%
    maxcitenames=2,maxbibnames=99,uniquelist=false, uniquename=false, natbib=true, urldate=comp]{biblatex}
     
\AtBeginBibliography{\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}}
\DeclareNameAlias{sortname}{family-given}

\setlength{\bibhang}{0pt}% wirklich nur wenns denn sein muss

\AtBeginBibliography{%
  \renewcommand*{\multinamedelim}{\addsemicolon\space}%
  \renewcommand*{\finalnamedelim}{\multinamedelim}}

% Siehe http://tex.stackexchange.com/q/11827/35864, plus ein paar Modifikationen
\newcounter{mymaxcitenames}
\AtBeginDocument{%
  \setcounter{mymaxcitenames}{\value{maxnames}}%
}

\makeatletter
\renewbibmacro*{begentry}{%
  \printtext[brackets]{\printtext[bold]{%
    \begingroup
    \renewcommand*{\multinamedelim}{\addcomma\space}%
    \renewcommand*{\finalnamedelim}{%
      \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
      \addspace\bibstring{and}\space}%
    \csuse{blx@hook@cite}%
    \csuse{blx@hook@citekey}%
    \citetrackerfalse\pagetrackerfalse\backtrackerfalse
    \defcounter{maxnames}{\value{mymaxcitenames}}%
    \usebibmacro{cite}%
    \endgroup
    }}%
  \newline
}
\makeatother

\DefineBibliographyStrings{ngerman}{%
  andothers = {et\addabbrvspace al\adddot},
  urlseen = {Zugriff am},
  urlfrom = {verfügbar unter},
}

\renewbibmacro*{issue+date}{%
  \setunit{\addcomma\space}%
  \printfield{issue}%
  \setunit*{\addspace}%
  \usebibmacro{date}%
  \newunit}

\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\addcolon\space#1}}
\renewbibmacro*{date}{%
  \printdate
  \setunit{\addspace}%
  \usebibmacro{urldate}}

\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\space\url{#1}}
\renewbibmacro*{url+urldate}{%
  \usebibmacro{url}%
  \iffieldundef{urlyear}}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Schmidt, A. and Schneider, B.
},
  year = {2001},
  title = {Alpha},
}
@misc{A02,
  author = {Meier, A. and Mueller, B. and J, Kurt
},
  year = {2001},
  title = {Alpha},
}
@misc{A03,
  author = {Lens,Markus
},
  year = {2001},
  title = {Alpha},
}
@article{wenz,
  author  = {Karin Wenz
},
  title   = {Formen der Mündlichkeit und Schriftlichkeit in digitalen Medien},
  journal = {Linguistik Online},  
  volume  = {1},
  number  = {1},
  date    = {1998-11-19},
%  issn    = {1615-3014},
  url     = {https://bop.unibe.ch/linguistik-online/article/view/1085},
  urldate = {2017-03-09},
%  doi     = {10.13092/lo.1.10850},
}
@standard{DIN66001,
  title = {Informationsverarbeitung; Sinnbilder und ihre Anwendung
},
  date = {1983-12},
  institution = {DIN},
  type={Norm},
  number = {66001},
}

@standard{VDI2860,
  title = {Montage- und Handhabungstechnik; Handhabungsfunktionen, Handhabungseinrichtungen; Begriffe, Definitionen, Symbole
},
  date = {1990-05},
  institution = {VDI},
  type={Richtlinie},
  number = {2860},
}
\end{filecontents}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=true]{
      \pertype{standard
}
      \step[fieldsource=institution, match=\regexp{\ADIN\Z}, final]
      \step[fieldset=shorthand, origfieldval]
      \step[fieldsource=number, final]
      \step[fieldset=shorthand, origfieldval, append]
      \step[fieldset=shorthand, fieldvalue={:}, append]
      \step[fieldsource=date, match=\regexp{\A[0-9]{2}([0-9]{2})}]
      \step[fieldset=shorthand, fieldvalue={$1}, append]
    }
    \map[overwrite=true]{
      \pertype{standard
}
      \step[fieldsource=institution, match=\regexp{\AVDI\Z}, final]
      \step[fieldset=shorthand, origfieldval]
      \step[fieldset=shorthand, fieldvalue={~}, append]
      \step[fieldsource=number, final]
      \step[fieldset=shorthand, origfieldval, append]
    }
  }
}

\DeclareSortingScheme{cnyt}{
  \sort{
    \field{presort
}
  }
  \sort[final]{
    \field{sortkey
}
    \field{shorthand}
  }
  \sort{
    \field{sortname
}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear
}
    \field{year}
  }
  \sort{
    \field{sorttitle
}
    \field{title}
  }
  \sort{
    \field{volume
}
    \literal{0}
  }
}

\DeclareBibliographyDriver{standard}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{type}%
  \setunit{\addspace}\newblock
  \printlist{institution}%
  \setunit{\addspace}
  \printfield{number}%
  \setunit{\addspace}\newblock
  \printfield{month}%
  \setunit{\addspace}
  \printfield{year}%
  \newunit\newblock
  \usebibmacro{title}%
  \usebibmacro{finentry}}


\addbibresource{\jobname.bib}

\begin{document}
\cite{A01,A02,A03,wenz,DIN66001,VDI2860}

\printbibliography[title=Literaturverzeichnis]
\end{document}

Beachte das sorting=cnyt und \DeclareSortingScheme{cnyt}.

Alternativ geht mit dem alten Code auch nur
Code • Öffne in Overleaf
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=true]{
      \pertype{standard
}
      \step[fieldsource=institution, match=\regexp{\ADIN\Z}, final]
      \step[fieldset=shorthand, origfieldval]
      \step[fieldsource=number, final]
      \step[fieldset=shorthand, origfieldval, append]
      \step[fieldset=shorthand, fieldvalue={:}, append]
      \step[fieldsource=date, match=\regexp{\A[0-9]{2}([0-9]{2})}]
      \step[fieldset=shorthand, fieldvalue={$1}, append]
      \step[fieldsource=shorthand]
      \step[fieldset=sortkey, origfieldval]
    }
    \map[overwrite=true]{
      \pertype{standard
}
      \step[fieldsource=institution, match=\regexp{\AVDI\Z}, final]
      \step[fieldset=shorthand, origfieldval]
      \step[fieldset=shorthand, fieldvalue={~}, append]
      \step[fieldsource=number, final]
      \step[fieldset=shorthand, origfieldval, append]
      \step[fieldsource=shorthand]
      \step[fieldset=sortkey, origfieldval]
    }
  }
}

Da wird einfach das Shorthand in Sortkey kopiert, was dann zum Sortieren genutzt wird. Das löst das Problem mit shorthand, nicht aber, dass Du 'Name->Titel->Jahr' sortierst, obwohl Deine Bibliographie auf 'Name->Jahr->Titel' ausgelegt ist.

lennnox1
Forum-Anfänger
Forum-Anfänger

Beiträge: 13
Anmeldedatum: 08.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2017, 17:48     Titel:
  Antworten mit Zitat      
Danke für die Hilfe beide Lösungen funktionieren einwandfrei ! Smile
Private Nachricht senden Benutzer-Profile anzeigen

lennnox1
Forum-Anfänger
Forum-Anfänger

Beiträge: 13
Anmeldedatum: 08.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2017, 15:51     Titel:
  Antworten mit Zitat      
Hallo!

Mir ist gerade ein Problem aufgefallen wenn ich \usepackage[T1]{fontenc} benutze, werden die Labels im Literaturverzeichnis in Caps ausgegeben.
Ich brauche dieses Paket für hyphenation!

Vielleicht kann mir hier ja jemand wieder so schnell helfen wie bisher Smile
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2017, 16:08     Titel:
  Antworten mit Zitat      
Die geschummelte Antwort ist: Lade Paket auf CTANlmodern \usepackage{lmodern}. Die Latin-Modern-Schrift hat nämlichen keine fetten Kapitälchen und fett gewinnt hier.

Das ist natürlich keine richtige Lösung. Ersetze für die richtige Antwort daher \AtBeginBibliography{\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}} mit
Code • Öffne in Overleaf
\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}
\AtEveryCite{\renewcommand*{\mkbibnamefamily}[1]{#1}}

Da begentry die Cite-Hooks in einer Gruppe ausführt (wie clever, dass daran gedacht wurde Wink), verhält sich das dort ausgeführte cite-Bibmakro wie in einem echten Zitat.
(Aber lmodern darfst Du natürlich trotzdem laden.)

lennnox1
Forum-Anfänger
Forum-Anfänger

Beiträge: 13
Anmeldedatum: 08.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2017, 16:27     Titel:
  Antworten mit Zitat      
Danke für die Hilfe funktioniert perfekt!
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen Gehe zu Seite Zurück  1, 2



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de