Umstieg von bibtex auf biblatex

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: Umstieg von bibtex auf biblatex

von Gast » Do 29. Jun 2017, 15:07

Hochinteressant! Das liegt an einer etwas komplizierten Standarddefinition von \DeclareFieldFormat{extrayear}. Wir brauchen nur
\DeclareFieldFormat{extrayear}{\mknumalph{#1}}
Im Ganzen (ich habe einen Fehler - \iffieldundef{urlyear} - behoben und ein paar fehlende % ergänzt.)
\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,isbn=false,doi=false,bibencoding=utf8,dateabbrev=false]{biblatex}    


\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},
}
@misc{A04,
  author = {Lens,Markus},
  year = {2001},
  title = {Alpha2},
}

@online{A06,
author  = {ABB,Ltd},
title   = {YuMi: Zusammen in die Zukunft der Automatisierung},
urldate = {2017-06-24},
url     = {https://library.e.abb.com/public/b1185932b22144a2996a200c5e4db75b/Datenblat%20YuMi_lowres.pdf}
}
@online{A05,
author  = {ABB,Ltd},
title   = {Roboterbasiertes Kleben mit integriertem Applikationssystem},
urldate = {2017-04-05},
url     = {https://library.e.abb.com/public/6ad9965ec28d9cfdc125775900470106/Datenblatt_Kleben_highres.pdf}
}

\end{filecontents}

\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}
\AtEveryCite{\renewcommand*{\mkbibnamefamily}[1]{#1}}
\DeclareNameAlias{sortname}{family-given}

\setlength{\bibhang}{0pt}% wirklich nur wenns denn sein muss
\setlength{\bibitemsep}{5pt}
\DeclareFieldFormat[thesis]{title}{\textit{#1\isdot}}
\DeclareFieldFormat[inbook]{title}{\textit{#1\isdot}}
\DeclareFieldFormat[article]{title}{\textit{#1\isdot}}
\DeclareFieldFormat[incollection]{title}{\textit{#1\isdot}}
\DeclareFieldFormat[inproceedings]{title}{\textit{#1\isdot}}
\DeclareFieldFormat[thesis]{title}{\textit{#1\isdot}}


\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}}%
   \renewcommand*{\nameyeardelim}{\space}
}

\DeclareFieldFormat{extrayear}{\mknumalph{#1}}




 
\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},
   phdthesis = {Dissertation},
   mathesis  = {Masterarbeit},
}

\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}}


\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]
    }
  }
}
\DeclareBibliographyDriver{standard}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{type}%
  \setunit{\addcomma\space}\newblock
  \printlist{institution}%
  \setunit{\addspace}%
  \printfield{number}%
  \setunit{\addspace}\newblock
  \printfield{month}%
  \setunit{\addspace}%
  \printfield{year}%
  \newunit\newblock
  \usebibmacro{title}%
  \usebibmacro{finentry}}

%Doppelpunkt hinter den Namen
\renewcommand*{\labelnamepunct}{\addcolon\addspace}

\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}
  }
}


\addbibresource{\jobname.bib}

\begin{document}
\citep{A03,A04,A05,A06}

\cite{A03,A04,A05,A06}

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

von Gast » Do 29. Jun 2017, 13:12

Stelle bitte neue Fragen neu!

von lennnox1 » Do 29. Jun 2017, 12:42

Hallo ich habe noch ein Problem.

Und zwar habe ich Klammern um die Buchstaben wenn ich eine @online-Quelle doppelt habe. Wenn ich andere Autoren doppelt verwende habe ich diese Klammern nicht.

(Lens 2001a; Lens 2001b; ABB 2017[a]; ABB 2017)

Vielleicht könnt ihr mir ja wieder so schnell helfen :)

Vielen Dank schon mal!


\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,isbn=false,doi=false,bibencoding=utf8,dateabbrev=false]{biblatex}    


\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}, 
} 
@misc{A04, 
  author = {Lens,Markus}, 
  year = {2001}, 
  title = {Alpha2}, 
} 

@online{A06,
author  = {ABB,Ltd},
title   = {YuMi: Zusammen in die Zukunft der Automatisierung},
urldate = {2017-06-24},
url     = {https://library.e.abb.com/public/b1185932b22144a2996a200c5e4db75b/Datenblat%20YuMi_lowres.pdf}
}
@online{A05,
author  = {ABB,Ltd},
title   = {Roboterbasiertes Kleben mit integriertem Applikationssystem},
urldate = {2017-04-05},
url     = {https://library.e.abb.com/public/6ad9965ec28d9cfdc125775900470106/Datenblatt_Kleben_highres.pdf}
}

\end{filecontents} 

\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}} 
\AtEveryCite{\renewcommand*{\mkbibnamefamily}[1]{#1}}
\DeclareNameAlias{sortname}{family-given} 

\setlength{\bibhang}{0pt}% wirklich nur wenns denn sein muss
\setlength{\bibitemsep}{5pt} 
\DeclareFieldFormat[thesis]{title}{\textit{#1\isdot}} 
\DeclareFieldFormat[inbook]{title}{\textit{#1\isdot}}
\DeclareFieldFormat[article]{title}{\textit{#1\isdot}} 
\DeclareFieldFormat[incollection]{title}{\textit{#1\isdot}} 
\DeclareFieldFormat[inproceedings]{title}{\textit{#1\isdot}} 
\DeclareFieldFormat[thesis]{title}{\textit{#1\isdot}} 


\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}}%
	\renewcommand*{\nameyeardelim}{\space}
} 





  
\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},
	phdthesis = {Dissertation},
	mathesis  = {Masterarbeit},
} 

\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}} 


\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] 
    } 
  } 
}
\DeclareBibliographyDriver{standard}{% 
  \usebibmacro{bibindex}% 
  \usebibmacro{begentry}% 
  \printfield{type}% 
  \setunit{\addspace \addcomma \addspace}\newblock 
  \printlist{institution}% 
  \setunit{\addspace} 
  \printfield{number}% 
  \setunit{\addspace}\newblock 
  \printfield{month}% 
  \setunit{\addspace} 
  \printfield{year}% 
  \newunit\newblock 
  \usebibmacro{title}% 
  \usebibmacro{finentry}}

%Doppelpunkt hinter den Namen
\renewcommand*{\labelnamepunct}{\addcolon\addspace} 

\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} 
  } 
} 


\addbibresource{\jobname.bib} 

\begin{document} 
\citep{A03,A04,A05,A06} 

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

von lennnox1 » Mi 29. Mär 2017, 16:27

Danke für die Hilfe funktioniert perfekt!

von Gast » Mi 29. Mär 2017, 16:08

Die geschummelte Antwort ist: Lade lmodern \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
\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 ;-)), verhält sich das dort ausgeführte cite-Bibmakro wie in einem echten Zitat.
(Aber lmodern darfst Du natürlich trotzdem laden.)

von lennnox1 » Mi 29. Mär 2017, 15:51

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 :)

von lennnox1 » Di 14. Mär 2017, 16:48

Danke für die Hilfe beide Lösungen funktionieren einwandfrei ! :)

von Gast » Di 14. Mär 2017, 16:10

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.
\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
\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.

von lennnox1 » Di 14. Mär 2017, 10:07

Vielen Dank das klappt super :)

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?

von Gast » Di 14. Mär 2017, 08:57

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
\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.

Nach oben