von Gast » Fr 21. Aug 2015, 07:19
Oh je, da habe ich ja was angerichtet....
Dir ist klar, dass jemand, der die Vorgeschichte von dem ganzen Kram nicht kennt, wahrscheinlich sehr verwirrt sein wird, was Du mit "ich möchte gerne @misc definieren" meinst?
Ich gehe mal davon aus, das Du meine letzte Antwort nicht ganz genau gelesen hast und lieber @standard "definiert" haben möchtest. In den Standardstilen haben die das gleiche Aussehen (@standard nutzt den "Treiber" von @misc, aber nur, weil er selbst keinen eigenen hat), aber semantisch besser für Normen ist natürlich @standard.
Ich bin ein bisschen enttäuscht, dass Du in diesem Beispiel gar nicht alles eingebaut hast, was wir Dir bisher in diesem Forum zusammengezimmert haben.
In einem anderen Thread haben wir nämlich das hier
Anonymous hat geschrieben:Nur für @online bekommst Du das Verhalten, wenn wir statt \iffieldundef{year} in der Abfrage vor dem \bibstring{nodate} das etwas längere \ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}} verwenden
\renewbibmacro*{url+urldate}{%
\usebibmacro{url}%
\ifentrytype{online}
{\setunit{\addspace}%
\printtext{Stand\addcolon\addspace}%
\ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}}
{\bibstring{nodate}}
{\usebibmacro{date}}}
{}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\usebibmacro{urldate}}}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifnameundef{labelname}
{}
{\printnames{labelname}
\setunit{\nametitledelim}}%
\usebibmacro{cite:title}%
\newunit
\ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}}
{\bibstring{nodate}}
{\printfield{year}}}%
{\usebibmacro{cite:shorthand}}}
\DefineBibliographyStrings{german}{%
nodate = {{}o\adddot\addabthinspace A\adddot}
}
Es hätte uns allen wirklich Arbeit und Ärger erspart, wenn Du mit einer genauen Idee, was Du erreichen möchtest, hier aufgetaucht wärst, dann hättest Du eine präzise Frage zu Deiner exakten Problemstellung (am liebsten natürlich mit diesem ominösen Minimalbeispiel, nach dem alle immer Fragen) gestellt; diese halbgaren Vorstellungen und Nachbesserungen sorgen dafür, dass wir jetzt weiß der Geier wie viele verschiedene Themen offen haben mit unterschiedlichen Code-Beispielen, die alle unterschiedlich weit sind.
Mit ein bisschen Kreativität und dem Willen, zu verstehen, was da passiert, könntest Du die Aufgabe bestimmt auch selber lösen.
Damals haben wir dafür gesorgt dass nur @online das "o.J." bekommt, jetzt wollen wir es für alle außer @standard, da müssen wir die Logik nur ein bisschen anpassen.
Aus \ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}} wird dann \ifboolexpr{test {\iffieldundef{year}} and not test {\ifentrytype{standard}}}, denn wir wollen das "o.J" für alle ohne Jahr aber nicht, wenn es ein @standard ist.
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{xpatch}
\usepackage{filecontents}
\usepackage[style=authortitle]{biblatex}
\begin{filecontents*}{\jobname.bib}
@standard{DIN,
shorttitle = {KURZTITEL},
title = {LANGTITEL},
author = {DINxxxx:xxxx}
}
@online{Internet,
author = {Autor},
title = {Titel},
url = {http://www.invalid.invalid},
urldate = {2015-08-10}
}
@book{jwp,
shorttitle = {TESTBUCH},
title = {IchundDU},
year = {2015},
publisher = {Beuth Verlag},
author = {ICH}
}
\end{filecontents*}
\renewcommand{\bibfootnotewrapper}[1]{
\bibsentence#1}
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewcommand*{\labelnamepunct}{\addspace}
\renewcommand*{\nametitledelim}{\addcolon\space}
\renewcommand*{\finentrypunct}{\addspace}
\setlength{\bibhang}{1,25cm}
\DeclareNameAlias{sortname}{last-first}
\DeclareFieldFormat*{citetitle}{#1}
% Reihenfolge ändern und Standardtrenner
\renewbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit
\usebibmacro{date}%
\newunit}
% Kurztitel (shorttitle) hinzufügen
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printfield[brackets]{shorttitle}%
\setunit{\addspace}%
\ifentrytype{online}
{\printtext[brackets]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}%
\newunit}%
\printfield{titleaddon}}
\DeclareFieldFormat[online]{url}{\url{#1}}
\DeclareFieldFormat{urldate}{Abrufdatum\addcolon\space#1}
\xpatchbibdriver{online}
{\usebibmacro{date}}
{}
{}{}
\renewbibmacro*{url+urldate}{%
\usebibmacro{url}%
\ifentrytype{online}
{\setunit{\addspace}%
\printtext{Stand\addcolon\addspace}%
\ifboolexpr{test {\iffieldundef{year}} and not test {\ifentrytype{standard}}}
{\bibstring{nodate}}
{\usebibmacro{date}}}
{}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\usebibmacro{urldate}}}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifnameundef{labelname}
{}
{\printnames{labelname}
\setunit{\nametitledelim}}%
\usebibmacro{cite:title}%
\newunit
\ifboolexpr{test {\iffieldundef{year}} and not test {\ifentrytype{standard}}}
{\bibstring{nodate}}
{\printfield{year}}}%
{\usebibmacro{cite:shorthand}}}
\DefineBibliographyStrings{german}{%
nodate = {{}o\adddot\addabthinspace A\adddot}
}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem\footcite[][]{DIN}
Ipsum\footcite[Vgl.][12]{jwp}
Dolor\footcite[Vgl.][12]{Internet}
Dolor\footcite{geer,baez/online,baez/article,worman,sigfridsson}
\printbibliography
\end{document}
Oh je, da habe ich ja was angerichtet....
Dir ist klar, dass jemand, der die Vorgeschichte von dem ganzen Kram nicht kennt, wahrscheinlich sehr verwirrt sein wird, was Du mit "ich möchte gerne [tt]@misc[/tt] definieren" meinst?
Ich gehe mal davon aus, das Du meine letzte Antwort nicht ganz genau gelesen hast und lieber [tt]@standard[/tt] "definiert" haben möchtest. In den Standardstilen haben die das gleiche Aussehen ([tt]@standard[/tt] nutzt den "Treiber" von [tt]@misc[/tt], aber nur, weil er selbst keinen eigenen hat), aber semantisch besser für Normen ist natürlich [tt]@standard[/tt].
Ich bin ein bisschen enttäuscht, dass Du in diesem Beispiel gar nicht alles eingebaut hast, was wir Dir bisher in diesem Forum zusammengezimmert haben.
In einem anderen Thread haben wir nämlich das hier
[quote="Anonymous"]Nur für [tt]@online[/tt] bekommst Du das Verhalten, wenn wir statt [tt]\iffieldundef{year}[/tt] in der Abfrage vor dem [tt]\bibstring{nodate}[/tt] das etwas längere [tt]\ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}}[/tt] verwenden
[code]\renewbibmacro*{url+urldate}{%
\usebibmacro{url}%
\ifentrytype{online}
{\setunit{\addspace}%
\printtext{Stand\addcolon\addspace}%
\ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}}
{\bibstring{nodate}}
{\usebibmacro{date}}}
{}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\usebibmacro{urldate}}}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifnameundef{labelname}
{}
{\printnames{labelname}
\setunit{\nametitledelim}}%
\usebibmacro{cite:title}%
\newunit
\ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}}
{\bibstring{nodate}}
{\printfield{year}}}%
{\usebibmacro{cite:shorthand}}}
\DefineBibliographyStrings{german}{%
nodate = {{}o\adddot\addabthinspace A\adddot}
}
[/code]
Es hätte uns allen wirklich Arbeit und Ärger erspart, wenn Du mit einer genauen Idee, was Du erreichen möchtest, hier aufgetaucht wärst, dann hättest Du eine präzise Frage zu Deiner exakten Problemstellung (am liebsten natürlich mit diesem ominösen Minimalbeispiel, nach dem alle immer Fragen) gestellt; diese halbgaren Vorstellungen und Nachbesserungen sorgen dafür, dass wir jetzt weiß der Geier wie viele verschiedene Themen offen haben mit unterschiedlichen Code-Beispielen, die alle unterschiedlich weit sind.[/quote]
Mit ein bisschen Kreativität und dem Willen, zu verstehen, was da passiert, könntest Du die Aufgabe bestimmt auch selber lösen.
Damals haben wir dafür gesorgt dass nur [tt]@online[/tt] das "o.J." bekommt, jetzt wollen wir es für alle außer [tt]@standard[/tt], da müssen wir die Logik nur ein bisschen anpassen.
Aus [tt]\ifboolexpr{test {\iffieldundef{year}} and test {\ifentrytype{online}}}[/tt] wird dann [tt]\ifboolexpr{test {\iffieldundef{year}} and not test {\ifentrytype{standard}}}[/tt], denn wir wollen das "o.J" für alle ohne Jahr aber nicht, wenn es ein [tt]@standard[/tt] ist.
[code]\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{xpatch}
\usepackage{filecontents}
\usepackage[style=authortitle]{biblatex}
\begin{filecontents*}{\jobname.bib}
@standard{DIN,
shorttitle = {KURZTITEL},
title = {LANGTITEL},
author = {DINxxxx:xxxx}
}
@online{Internet,
author = {Autor},
title = {Titel},
url = {http://www.invalid.invalid},
urldate = {2015-08-10}
}
@book{jwp,
shorttitle = {TESTBUCH},
title = {IchundDU},
year = {2015},
publisher = {Beuth Verlag},
author = {ICH}
}
\end{filecontents*}
\renewcommand{\bibfootnotewrapper}[1]{
\bibsentence#1}
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewcommand*{\labelnamepunct}{\addspace}
\renewcommand*{\nametitledelim}{\addcolon\space}
\renewcommand*{\finentrypunct}{\addspace}
\setlength{\bibhang}{1,25cm}
\DeclareNameAlias{sortname}{last-first}
\DeclareFieldFormat*{citetitle}{#1}
% Reihenfolge ändern und Standardtrenner
\renewbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit
\usebibmacro{date}%
\newunit}
% Kurztitel (shorttitle) hinzufügen
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printfield[brackets]{shorttitle}%
\setunit{\addspace}%
\ifentrytype{online}
{\printtext[brackets]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}%
\newunit}%
\printfield{titleaddon}}
\DeclareFieldFormat[online]{url}{\url{#1}}
\DeclareFieldFormat{urldate}{Abrufdatum\addcolon\space#1}
\xpatchbibdriver{online}
{\usebibmacro{date}}
{}
{}{}
\renewbibmacro*{url+urldate}{%
\usebibmacro{url}%
\ifentrytype{online}
{\setunit{\addspace}%
\printtext{Stand\addcolon\addspace}%
\ifboolexpr{test {\iffieldundef{year}} and not test {\ifentrytype{standard}}}
{\bibstring{nodate}}
{\usebibmacro{date}}}
{}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\usebibmacro{urldate}}}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifnameundef{labelname}
{}
{\printnames{labelname}
\setunit{\nametitledelim}}%
\usebibmacro{cite:title}%
\newunit
\ifboolexpr{test {\iffieldundef{year}} and not test {\ifentrytype{standard}}}
{\bibstring{nodate}}
{\printfield{year}}}%
{\usebibmacro{cite:shorthand}}}
\DefineBibliographyStrings{german}{%
nodate = {{}o\adddot\addabthinspace A\adddot}
}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem\footcite[][]{DIN}
Ipsum\footcite[Vgl.][12]{jwp}
Dolor\footcite[Vgl.][12]{Internet}
Dolor\footcite{geer,baez/online,baez/article,worman,sigfridsson}
\printbibliography
\end{document}[/code]