Unterschiedliche bibindex/citeindex

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: Unterschiedliche bibindex/citeindex

von Gast » Mo 9. Nov 2015, 07:52

Also bei mir lässt
\documentclass{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{Einstein,
  author    = {Einstein},
}
@Article{Benji,
  author    = {Benji},
  keywords  = {mywork},
}
\end{filecontents}
\usepackage[style=numeric]{biblatex}
\addbibresource{\jobname.bib}

\DeclareFieldFormat{labelnumberwidth}{\ifkeyword{mywork}{[\mkbibbrackets{#1}]}{\mkbibbrackets{#1}}}

\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{%
    \ifkeyword{mywork}{[}{}%
    \printfield{prefixnumber}%
    \printfield{labelnumber}%
    \ifkeyword{mywork}{]}{}%
    \ifbool{bbx:subentry}
      {\printfield{entrysetcount}}
      {}}}

\begin{document}
Fremdquelle \cite{Einstein}

Eigenquelle \cite{Benji} and \cite{Benji,Einstein} and \cite{Einstein,Benji}

\printbibliography
\end{document}
keinen überflüssigen Platz.

Allerdings wurde in der neuesten Version ein Bug behoben (#342), der mit genau der \labelnumberwidth zu tun hat. Ich konnte ein Problem erzeugen, wenn ich die Änderungen im Code zurückdrehe.

Probiere also ruhig, ein Update zu machen.

von Benji » Mo 9. Nov 2015, 00:01

Vielleicht noch der Vollständigkeit halber: Durch das doppelte [[]] wird bei dem Literaturverzeichnis die erste Zeile dieser Einträge eingerückt. Um dies zu "verhindern" kann man \labelnumberwidth erhöhen:
\addtolength{\labelnumberwidth}{\widthof{[[]]}}
Beziehungsweise
\addtolength{\labelnumberwidth}{.5cm}
Es gibt sicher eine wesentlich elegantere Lösung...

von Benji » Do 5. Nov 2015, 16:10

Ganz herzlichen Dank. Das funktioniert prima. Durch den Ansatz habe ich auch die Lösung gefunden, wenn man mit @MyArticle und ohne Keywords arbeiten will (dann muss man halt in der bbx Datei auch die neuen Typen anlegen). Wobei die Lösung über die Keywords sehr elegant ist, da man dann nicht lauter neue Stile definieren muss, daher werde ich diese wohl bevorzugen.
\DeclareFieldFormat{labelnumber}{%
    \iffieldequalstr{entrytype}{myarticle}{[#1]}{#1}%
}
Dies funktioniert auch mit deiner "stabileren" Lösung, wenn man die entsprechende Stelle anpasst.

Zu dem verlinkten Beitrag: Das ist tatsächlich ein Kollege von mir. Ich wusste aber nicht, dass er auch so was in der Richtung haben will.

Ich hatte für meine Dissertation jetzt mal alles auf den "Aktuellen Stand" gebracht, d.h. von BibTex auf Biblatex, scrlayer-scrpage statt Fancyheading usw.

Liebe Grüße
Benji

von Gast » Do 5. Nov 2015, 08:38

Wenn Du statt mit eigenen Entry-Typen wie @MyArticle mit keywords (z.B: mywork) arbeitest, sollte das ganz einfach sein.

Mit style=ieee ist das allerdings etwas kompliziert, da kann man zunächst nur
\DeclareFieldFormat{labelnumber}{\ifkeyword{mywork}{[#1]}{#1}}
nutzen und kommst schon ganz gut hin.

Etwas komplizierter aber stabiler können wir mit xpatch den folgenden Code nutzen.
\makeatletter
\newtoggle{cbx@lastmywork}
\xpatchbibmacro{cite:comp:comp}
  {\savefield{labelnumber}{\cbx@lastnumber}}
  {\savefield{labelnumber}{\cbx@lastnumber}%
   \ifkeyword{mywork}{\toggletrue{cbx@lastmywork}}{\togglefalse{cbx@lastmywork}}}
  {}{}
\xpatchbibmacro{cite:dump}
  {\printtext{\cbx@lastnumber}}
  {\printtext[labelnumber]{\cbx@lastnumber}}
  {}{}
\DeclareFieldFormat{labelnumber}{%
  \ifboolexpr{test {\ifkeyword{mywork}} or togl {cbx@lastmywork}}
    {[#1]}
    {#1}}
\makeatother
\documentclass{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{Einstein,
  author    = {Einstein},
}
@Article{Benji,
  author    = {Benji},
  keywords  = {mywork},
}
\end{filecontents}
\usepackage[style=ieee]{biblatex}
\usepackage{xpatch}
\addbibresource{\jobname.bib}

\makeatletter
\newtoggle{cbx@lastmywork}
\xpatchbibmacro{cite:comp:comp}
  {\savefield{labelnumber}{\cbx@lastnumber}}
  {\savefield{labelnumber}{\cbx@lastnumber}%
   \ifkeyword{mywork}{\toggletrue{cbx@lastmywork}}{\togglefalse{cbx@lastmywork}}}
  {}{}
\xpatchbibmacro{cite:dump}
  {\printtext{\cbx@lastnumber}}
  {\printtext[labelnumber]{\cbx@lastnumber}}
  {}{}
\DeclareFieldFormat{labelnumber}{%
  \ifboolexpr{test {\ifkeyword{mywork}} or togl {cbx@lastmywork}}
    {[#1]}
    {#1}}
\makeatother

\begin{document}
Fremdquelle \cite{Einstein}

Eigenquelle \cite{Benji} and \cite{Benji,Einstein} and \cite{Einstein,Benji}

\printbibliography
\end{document}

Für style=numeric wäre
\DeclareFieldFormat{labelnumberwidth}{\ifkeyword{mywork}{[\mkbibbrackets{#1}]}{\mkbibbrackets{#1}}}

\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{%
    \ifkeyword{mywork}{[}{}%
    \printfield{prefixnumber}%
    \printfield{labelnumber}%
    \ifkeyword{mywork}{]}{}%
    \ifbool{bbx:subentry}
      {\printfield{entrysetcount}}
      {}}}
zwar etwas länger aber wesentlich stabiler.


Hast Du zufällig etwas mit BibLaTeX: Highlight Self-References zu tun?

Unterschiedliche bibindex/citeindex

von Benji » Do 5. Nov 2015, 03:21

Hallo Zusammen

Ich würde gerne erreichen, dass ichArbeiten, welche ich selbst verfasst habe durch eine doppelte klammer kenntlich machen kann. D.h. [1] für Arbeiten anderer Personen und [[1]] für eigene Arbeiten.

In meiner alten .bst Vorlage hatte ich es so gelöst, dass ich einen eigenen Typen hatte (@MyArticle), welcher dann folgende Funktionen verwendete:
FUNCTION {output.mybibitem}
{ newline$
  "\bibitem[{[" write$
  label write$%
  "]}]{" write$
  cite$ write$
  "}" write$
  newline$
  ""
  before.all 'output.state :=
}

FUNCTION {myarticle}
{  output.mybibitem
article.common
}
Mittlerweile habe ich auf biblatex umgestellt und meine Stilvorlage als .bbx (biblatex bibliography style) und .cbx (biblatex citation style) Dateien. Die Frage ist nun, wie ich die o.g. Funktionen für biblatex umsetzten kann/könnte? Hier mal ein Minimalbeispiel:
\documentclass{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{Einstein,
  author    = {Einstein},
}
@MyArticle{Benji,
  author    = {Benji},
}
\end{filecontents}
\usepackage[style=ieee]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
Fremdquelle \cite{Einstein}

Eigenquelle \cite{Benji} soll werden [\cite{Benji}]

\printbibliography
\end{document}
Ich wäre super dankbar, wenn jemand eine Idee oder einen Ansatz hätte.

Danke
Benji

Nach oben