Biblatex neuen Entrytype Norm definieren

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: Biblatex neuen Entrytype Norm definieren

von joa*k » Fr 28. Aug 2015, 10:39

Ich habe den Author wieder hinzugefügt, funktioniert super.

Tausend Dank für deine schnelle und geduldige Hilfe!

von Gast » Fr 28. Aug 2015, 10:27

Probier mal sortkey = {DIN EN ISO 9001}, hinzuzufügen. Sonst wird nach dem Titel sortiert (einen Autor gibt es ja nicht; ein anderes Workaround wäre also tatsächlich, den Autor, den ich Dir gerade verboten habe als author = {{DIN EN ISO 9001}} - beachte die doppelten Klammern - zu behalten).

Ich finde die sortkey-Lösung (semantisch) schöner, aber Du kannst auch gerne weiterhin das Autor-Feld benutzen, denk dann aber bitte an die doppelten Klammern.

von joa*k » Fr 28. Aug 2015, 10:11

Vielen Dank, funktioniert super!

Das Einzige was jetzt noch hackt ist das ich die Abkürzungen gerne alphabetisch sortiert hätte, also würde D ja vor K kommen.

Hast du dazu noch einen Vorschlag?

von Gast » Fr 28. Aug 2015, 10:05

Ja das liegt an diesem begentry macro, probier mal diese Definition, die ich eins zu eins aus authoryear.cbx geklaut habe
\renewbibmacro*{begentry}{%
   \printtext[brackets]{%
     \begingroup
     \defcounter{maxnames}{\value{mymaxcitenames}}%
     \iffieldundef{shorthand}
       {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
         {\usebibmacro{cite:label}%
          \setunit{\addspace}}
         {\printnames{labelname}%
          \setunit{\nameyeardelim}}%
        \usebibmacro{cite:labelyear+extrayear}}
       {\usebibmacro{cite:shorthand}}%
     \endgroup
     }%
   \newline
}

von joa*k » Fr 28. Aug 2015, 09:57

So weit, so gut! :-)
Danke schon mal für die Hilfe.

Es sieht jetzt so aus:
\begin{filecontents}{myLit.bib}
@standard{DIN9001,
  Title                    = {Qualitätsmanagementsysteme – Anforderungen},
  Number                   = {DIN EN ISO 9001},
  Type                     = {Norm},
  Year                     = {2014},
	Shorthand								 = {DIN EN ISO 9001}
}
@Book{Klein1993,
  Title                    = {Statistische Tolerierung: Qualität der konstruktiven Gestaltung},
  Author                   = {B. Klein and F. Mannewitz},
  Publisher                = {Carl Hanser Verlag, München/Wien},
  Year                     = {1993}
}
\end{filecontents}

\documentclass{article} 
\usepackage[ngerman]{babel} 
% wegen deutschen Umlauten
\usepackage[ansinew]{inputenc}

\usepackage[citestyle=authoryear-comp,bibstyle=authortitle,sorting=nyt,dashed=false,url=false,isbn=false,maxcitenames=1,firstinits= true,backend=bibtex]{biblatex} 

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}} 

% Namensortierung: esrt Nachname, dann Vorname 
\DeclareNameAlias{sortname}{last-first} 

% Zitat im Text mit eckiger Klammer 
\DeclareCiteCommand{\mycite}[\mkbibbrackets] 
   {\usebibmacro{cite:init}% 
    \usebibmacro{prenote}} 
   {\usebibmacro{citeindex}% 
    \usebibmacro{cite}} 
   {} 
   {\usebibmacro{postnote}} 

% Anführungszeichen weg für bestimmte Typen
%\DeclareFieldFormat 
%   [article,inbook,incollection,inproceedings,patent,thesis,unpublished] 
%   {title}{#1\isdot}
%Anführungszeichen weg für alle
\DeclareFieldFormat*{title}{#1\isdot}

\newcounter{mymaxcitenames} 
\AtBeginDocument{% 
   \setcounter{mymaxcitenames}{\value{maxnames}}% 
} 

\renewbibmacro*{begentry}{% 
   \printtext[brackets]{% 
     \begingroup 
     \defcounter{maxnames}{\value{mymaxcitenames}}% 
     \printnames{labelname}% 
     \setunit{\nameyeardelim}% 
     \usebibmacro{cite:labelyear+extrayear}% 
     \endgroup 
     }% 
   \newline 
} 



\renewbibmacro*{name:andothers}{% 
   \ifboolexpr{ 
     test {\ifnumequal{\value{listcount}}{\value{liststop}}} 
     and 
     test \ifmorenames 
   } 
     {\ifnumgreater{\value{liststop}}{1} 
        {\finalandcomma} 
        {}% 
      \andothersdelim\bibstring[\textsc]{andothers}} 
     {}} 

\renewcommand*{\finalnamedelim}{% 
   \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% 
   \addspace\bibstring[\textsc]{and}\space} 

\renewcommand*{\labelnamepunct}{\addcolon\space} 

%%%%%%%%%%%%%%%%%%%NORM
%\DeclareBibliographyAlias{norm}{standard}

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

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


%%%%%%%%%%%%%%%%%%%%

\addbibresource{myLit.bib} 





%Überschrift in Literaturverzeichnis ändern 
\defbibheading{head}{\section*{Literaturverzeichnis}} 

\setlength{\bibitemsep}{12pt}

\begin{document} 
Ein bisschen Text \mycite{DIN9001}.\\
Ein bisschen Text \mycite{Klein1993}.


\printbibliography 
\end{document} 
Und klappt. Das Einzige was mir jetzt noch fehlt ist wie ich den \renewbibmacro so modifiziere das er bei \ifentrytype{standard} mit shorthand anzeigt im Literaturverzeichnis bei allen anederen Einträgen aber so bleibt wie er definiert ist. Da stehe ich mal wieder auf dem Schlauch.

von Gast » Fr 28. Aug 2015, 09:12

Der Fehler kommt, da Du den Typ @norm verwendest und nicht wie oben vorgeschlagen den Typ @standard. (Denn biblatex kennt @norm nicht; @standard ist zwar normalerweise nur ein Alias zu @misc, wenn Du aber einen Treiber definierst kommen wir da weiter.)
Du musst also überall standard statt norm schreiben.

Ich finde es etwas unsinnig, den Autor der Norm als Author = {Norm DIN EN ISO 9001}, anzugeben, mach das lieber weg, Du verwendest den Autor ja auch gar nicht.

Wenn Du dann noch das shorthand-Feld einfach mit deinem gewünschten Zitierformat befüllst, z.B. shorthand = {DIN EN ISO 9001},, bist Du schon fast fertig (ja mit Biber ginge das auch automatisch und man kann sicher auch den Cite-Befehl anpassen, dass er das auch ohne shorthand hinbekommt, aber warum - besonders letzteres macht alles nur weniger portabel; der Tipp wurde oben übrigens auch schon erwähnt.)

von joa*k » Fr 28. Aug 2015, 09:08

Warum nicht? :-)

von sudo » Fr 28. Aug 2015, 08:58

joa*k hat geschrieben:Ich möchte das wenn es irgendwie möglich ist gerne in biblatex ohne biber lösen.
Warum?

von joa*k » Fr 28. Aug 2015, 08:19

Hallo zusammen und Danke erst mal für die Antworten.

Ich möchte das wenn es irgendwie möglich ist gerne in biblatex ohne biber lösen.

Weiter gekommen bin ich allerdings trotz recherche imme rnoch nicht.

Hier nochmal ein lauffähiges Minimalbeispiel
\begin{filecontents}{myLit.bib}
@Norm{DIN9001,
  Title                    = {Qualitätsmanagementsysteme – Anforderungen},
  Number                   = {DIN EN ISO 9001},
  Type                     = {Norm},
  Year                     = {2014},
  Author                   = {Norm DIN EN ISO 9001},
}
@Book{Klein1993,
  Title                    = {Statistische Tolerierung: Qualität der konstruktiven Gestaltung},
  Author                   = {B. Klein and F. Mannewitz},
  Publisher                = {Carl Hanser Verlag, München/Wien},
  Year                     = {1993},
}
\end{filecontents}

\documentclass{article} 
\usepackage[ngerman]{babel} 
% wegen deutschen Umlauten
\usepackage[ansinew]{inputenc}

\usepackage[citestyle=authoryear-comp,bibstyle=authortitle,sorting=nyt,dashed=false,url=false,isbn=false,maxcitenames=1,firstinits= true,backend=bibtex]{biblatex} 

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}} 

% Namensortierung: esrt Nachname, dann Vorname 
\DeclareNameAlias{sortname}{last-first} 

% Zitat im Text mit eckiger Klammer 
\DeclareCiteCommand{\mycite}[\mkbibbrackets] 
   {\usebibmacro{cite:init}% 
    \usebibmacro{prenote}} 
   {\usebibmacro{citeindex}% 
    \usebibmacro{cite}} 
   {} 
   {\usebibmacro{postnote}} 

% Anführungszeichen weg für bestimmte Typen
%\DeclareFieldFormat 
%   [article,inbook,incollection,inproceedings,patent,thesis,unpublished] 
%   {title}{#1\isdot}
%Anführungszeichen weg für alle
\DeclareFieldFormat*{title}{#1\isdot}

\newcounter{mymaxcitenames} 
\AtBeginDocument{% 
   \setcounter{mymaxcitenames}{\value{maxnames}}% 
} 

\renewbibmacro*{begentry}{% 
   \printtext[brackets]{% 
     \begingroup 
     \defcounter{maxnames}{\value{mymaxcitenames}}% 
     \printnames{labelname}% 
     \setunit{\nameyeardelim}% 
     \usebibmacro{cite:labelyear+extrayear}% 
     \endgroup 
     }% 
   \newline 
} 


\renewbibmacro*{name:andothers}{% 
   \ifboolexpr{ 
     test {\ifnumequal{\value{listcount}}{\value{liststop}}} 
     and 
     test \ifmorenames 
   } 
     {\ifnumgreater{\value{liststop}}{1} 
        {\finalandcomma} 
        {}% 
      \andothersdelim\bibstring[\textsc]{andothers}} 
     {}} 

\renewcommand*{\finalnamedelim}{% 
   \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% 
   \addspace\bibstring[\textsc]{and}\space} 

\renewcommand*{\labelnamepunct}{\addcolon\space} 

%%%%%%%%%%%%%%%%%%%NORM

\DeclareBibliographyDriver{norm}{%
      \usebibmacro{bibindex}%
      \usebibmacro{begentry}%
      \printfield{type}\setunit{\addspace}\newblock\printfield{number}%
			\newunit\newblock
      \usebibmacro{title}%
      \setunit{\addspace}
      \printfield{year}%      
   \usebibmacro{finentry}}

%%%%%%%%%%%%%%%%%%%%

\addbibresource{myLit.bib} 





%Überschrift in Literaturverzeichnis ändern 
\defbibheading{head}{\section*{Literaturverzeichnis}} 

\setlength{\bibitemsep}{12pt}

\begin{document} 
Ein bisschen Text \mycite{DIN9001}.\\
Ein bisschen Text \mycite{Klein1993}.


\printbibliography 
\end{document} 
hier bei bekomme ich folgende Warnung angezeigt:
BibTeX> Warning--entry type for "DIN9001" isn't style-file defined
Mein Problem ist jetzt das meines Erachtens meine Neudefinition gar nichts ändert. Ich habe wirklich versucht etwas brauchbares im Internet zu finden, komme aber einfach nicht weiter.

Wäre super wenn mir jemand helfen kann.

Danke im Voraus![/code]

von sudo » Do 27. Aug 2015, 14:32

Schau auch mal bei biblatex, biber und DIN-Norm vorbei. Wie der Titel schon sagt, braucht man aber das vom Gast angesprochene biber dafür.

Nach oben