Seite 1 von 3

Umstieg von bibtex auf biblatex

Verfasst: Mi 8. Mär 2017, 17:34
von lennnox1
Hallo,

ich schreibe gerade meine Masterarbeit und möchte das Literaturverzeichnis mit biblatex gestalten.
Mein Problem hängt mit den Label zusammen. Ich habe es geschafft, dass ich im Label verschiedene Trennzeichen nutze als im Text darunter. Also bei Quellen mit einem Autor soll das Label [Name] bei zwei Autoren [Name1 und Name2] und bei mehr als 2 Autoren [Name1 et. al]. Im Beispiel funktioniert das eigentlich alles, nur manche Labels starten mit einem Leerzeichen. Also [Name et. al] und bei den anderen beiden [ Name] und [ Name1 und Name2].
Ich hoffe ich habe mein Problem genau genug beschrieben :). Bin ein ziemlicher Anfänger, habe jedoch versucht die einzelnen Befehle durch Kommentare zu erklären.
Vielen Dank schon mal im Voraus!
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,citestyle=iso-authoryear,bibstyle=authortitle,sorting=nty,dashed=false,%
    maxcitenames=2,maxnames=2,natbib=true,maxbibnames=99,uniquelist=false, uniquename=false]{biblatex}
\usepackage{filecontents}		
	%Autoren Namen in Kapitälchen
\AtBeginBibliography{% 
\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}}
%Sortierung der Namen
\DeclareNameAlias{sortname}{last-first}
%Trennzeichen zwischen den Namen
\renewcommand*{\multinamedelim}{\addsemicolon\space}
\renewcommand*{\finalnamedelim}{\addsemicolon\space}
%Einschub
\makeatletter
\defbibenvironment{bibliography}
{\list{\printtext[labelnumberwidth]{%
    \printfield{prefixnumber}%
    \printfield{labelnumber}}}
{\setlength{\bibhang}{0pt}%
\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{\item}
\makeatother

\newcounter{maxlabelnames}
\setcounter{maxlabelnames}{2}

\DeclareNameFormat{biblabel}{%
  \ifthenelse{\value{listtotal}>\themaxlabelnames}
    {\ifthenelse{\value{listcount}=1}
      {\namepartfamily \addspace \bibstring{andothers}}
      {}%
    }
    {
      \ifthenelse{\value{listcount}=1}
        {\namepartfamily}
        {\ifthenelse{\value{listcount}<\value{listtotal}}
          {\multinamedelim \namepartfamily}
          {\bibstring{and}\addspace\namepartfamily }%
        }%
    }%
}

\renewbibmacro{begentry}{%
\textbf{[\printnames[biblabel]{labelname}~%
           \printfield{labelyear}%
           \printfield{extrayear}]}\\}


\DefineBibliographyStrings{ngerman}{andothers={et\ al\adddot}}

\begin{filecontents}{biblatextest.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},
}
\end{filecontents}

\addbibresource{biblatextest.bib}

\begin{document}
\nocite{*}

\printbibliography[title=Literaturverzeichnis]

\end{document}

Verfasst: Mi 8. Mär 2017, 18:12
von Gast
Ich habe das ganze mal etwas umgebaut. Einige Ansätze erschienen mir etwas merkwürdig. Insbesondere hast Du von iso-authoryear nichts benutzt, daher bin ich zu citestyle=authoryear gewechselt.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,citestyle=authoryear,bibstyle=authortitle,sorting=nty,dashed=false,%
    maxcitenames=2,maxbibnames=99,uniquelist=false, uniquename=false, natbib=true]{biblatex}
\usepackage{filecontents}      
\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}}

\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},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\cite{A01,A02,A03}

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

Verfasst: Mi 8. Mär 2017, 18:42
von lennnox1
Vielen Dank deine Lösung läuft perfekt! :D
Ich habe noch eine Frage und zwar wie kann ich den Platz zwischen zwei Einträgen erhöhen?

MfG

Verfasst: Mi 8. Mär 2017, 18:46
von Gast
\setlength{\bibitemsep}{\itemsep}
Natürlich kannst Du das auch vergrößern: \setlength{\bibitemsep}{2\itemsep} oder irgendetwas anderes eingeben: \setlength{\bibitemsep}{0.2cm}

Verfasst: Mi 8. Mär 2017, 19:58
von lennnox1
Danke auch das hat super geklappt. Ich versuche mich gerade daran den String bei Url und Urldate zu ändern. Die Vorgabe von meinem Professor ist wie folgt:

[Wenz 1998]

WENZ, Karin: Formen der Mündlichkeit und Schriftlichkeit in digitalen Medien. In: Linguistik Online, 1. April 2000 [Zugriff am: 25. Mai 2000]. Verfügbar unter: http://viadrina.euv-frankfurt-o.de/~wjournal/wenz.htm


Mein Ist-Zustand ist jedoch, dass das Zugriffsdatum am Ende kommt und die Strings passen nicht.

Verfasst: Do 9. Mär 2017, 02:32
von Bartman
Gib bitte den Quelltext für Deinen Literatureintrag an, damit man nicht raten muss, was wozu gehört.

Verfasst: Do 9. Mär 2017, 09:49
von Gast
Probier es mal mit
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,citestyle=authoryear,bibstyle=authortitle,sorting=nty,dashed=false,%
    maxcitenames=2,maxbibnames=99,uniquelist=false, uniquename=false, natbib=true, urldate=comp]{biblatex}
\usepackage{filecontents}      
\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},
}
\end{filecontents}


\addbibresource{\jobname.bib}

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

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

Verfasst: Do 9. Mär 2017, 10:08
von lennnox1
Vielen Dank für eure Hilfe das klappt wunderbar:)

Verfasst: So 12. Mär 2017, 18:24
von lennnox1
Ich habe noch eine Frage und zwar ob man das Labelfeld, für Normen wie in dem unten aufgeführten Beispiel anpassen kann? Also sowas wie wenn Type=standard soll das Label so aussehen [DIN66001:83].

Vielen Dank schon mal für eure Hilfe!
\begin{filecontents}{standards.bib}
@standard{DIN66001, 
  TITLE = {Informationsverarbeitung; Sinnbilder und ihre Anwendung},
  year = {1983},
  month = {Dezember},
  author = {DIN},
  institution = {DIN},
  type={Norm},
  number = {66001},
}
@Richtlinie{DIN66001, 
  TITLE = {Informationsverarbeitung; Sinnbilder und ihre Anwendung},
  year = {1983},
  month = {},
  author = {DIN},
  institution = {DIN},
  type={Richtlinie},
  number = {66001},
}
\end{filecontents}
\begin{filecontents}{standards.dbx}
\DeclareDatamodelEntrytypes{standard}
\DeclareDatamodelFields[type=field, datatype=literal]{institution}
\DeclareDatamodelEntryfields[standard]{institution,number,type}
\end{filecontents}
\begin{filecontents}{Richtlinie.dbx}
\DeclareDatamodelEntrytypes{Richtlinie}
\DeclareDatamodelFields[type=field, datatype=literal]{institution}
\DeclareDatamodelEntryfields[Richtlinie]{institution,number,type}
\end{filecontents}
\documentclass[ngerman]{scrartcl}
\usepackage[autostyle]{csquotes}
\usepackage[backend=biber, datamodel=standards, datamodel=Richtlinie,style=alphabetic]{biblatex}
    \DeclareLabelalphaTemplate[standard]{
     \labelelement{
      \field{institution}
      }
      \labelelement{
        \field{number}
      }
      \labelelement{
        \literal{:}
      }
      \labelelement{
        \field[strwidth=2,strside=right]{year}
      }
    }
		  \DeclareLabelalphaTemplate[Richtlinie]{
     \labelelement{
      \field{institution}
      }
      \labelelement{
        \field{number}
      }
      \labelelement{
        \literal{:}
      }
      \labelelement{
        \field[strwidth=2,strside=right]{year}
      }
    }
		
    \DeclareBibliographyDriver{standard}{%
      \usebibmacro{bibindex}%
      \usebibmacro{begentry}%
      \printfield{type}\setunit{\addspace}\newblock\printfield{institution}%
      \setunit{\addspace}\newblock
      \printfield{author}%
      \setunit{\addspace}\newblock
      \printfield{number}%
      \setunit{\addspace}\newblock
      \printfield{month}%
      \setunit{\addspace}
      \printfield{year}%
      \newunit\newblock
      \usebibmacro{title}%
   \usebibmacro{finentry}}
	
 \DeclareBibliographyDriver{Richtlinie}{%
      \usebibmacro{bibindex}%
      \usebibmacro{begentry}%
      \printfield{type}\setunit{\addspace}\newblock\printfield{institution}%
      \setunit{\addspace}\newblock
      \printfield{author}%
      \setunit{\addspace}\newblock
      \printfield{number}%
      \setunit{\addspace}\newblock
      \printfield{month}%
      \setunit{\addspace}
      \printfield{year}%
      \newunit\newblock
      \usebibmacro{title}%
   \usebibmacro{finentry}}
\addbibresource{standards.bib}
\usepackage[ngerman]{babel}
\begin{document} 
%\autocite{DIN66001} 
%\autocite{DIN66001}
\printbibliography 
\end{document}

Verfasst: So 12. Mär 2017, 18:49
von Gast
Was hältst Du von
\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},
}
\end{filecontents}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=true]{
      \pertype{standard}
      \step[fieldsource=institution, 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]
    }
  }
}

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

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