Umstieg von bibtex auf biblatex
Vielen Dank das klappt super!
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
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
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
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.
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}
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.
Beachte das sorting=cnyt und \DeclareSortingScheme{cnyt}.
Alternativ geht mit dem alten Code auch nur
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.
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}
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] } } }
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
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.)
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}}
(Aber lmodern darfst Du natürlich trotzdem laden.)
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!
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}