biblatex: gesplittete Verzeichnisse

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: gesplittete Verzeichnisse

von TiTo » Fr 8. Mai 2009, 13:42

Vielen Dank, das erledigt genau, was ich gesucht habe!

Beste Grüße, Tobias

von KOMA » Fr 8. Mai 2009, 10:09

Dank Dominiks vollständigem Minimalbeispiel kann ich Dir folgenden Vorschlag machen:
\documentclass[ngerman]{scrartcl} 
\listfiles 
\usepackage{filecontents} 
\begin{filecontents}{\jobname.bib} 
  @ARTICLE{article1, 
    author = {Nachname, Vorname}, 
    title = {Titel des Zeitschriftenartikels}, 
    journal = {Zeitschrift 1}, 
    year = {2006}, 
    volume = {6}, 
    pages = {19--75}, 
    keywords = {lit1}
  } 
  @ARTICLE{article2, 
    author = {Nachname, Vorname}, 
    title = {Titel des Zeitschriftenartikels}, 
    journal = {Zeitschrift 2}, 
    year = {2006}, 
    volume = {6}, 
    pages = {19--75}, 
    keywords = {lit1}
  } 
  @BOOK{book1, 
    author = {Buchautor, Hans-Wilhelm}, 
    title = {Irgendein Buch 1}, 
    address = {Buch am Wald}, 
    year = {2000}, 
    keywords = {lit2}
  } 
  @BOOK{book2, 
    author = {Buchautor, Hans-Wilhelm}, 
    title = {Irgendein Buch 2}, 
    address = {Buch am Wald}, 
    year = {2000}, 
    keywords = {lit2}
  } 
\end{filecontents} 
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc} 
\usepackage{babel,csquotes} 
 
\usepackage[ 
% style=authortitle 
]{biblatex} 
\bibliography{\jobname} 
\defbibheading{lit1}{\section*{Literatur 1}} 
\defbibheading{lit2}{\section*{Literatur 2}} 

% Jetzt wird es haarig
\makeatletter
\newcommand*{\orig@blx@bbl@keyw}{}
\let\orig@blx@bbl@keyw\blx@bbl@keyw
\newcounter{lit@lit1}\@namedef{thelit@lit1}{I-\arabic{lit@lit1}}
\newcounter{lit@lit2}\@namedef{thelit@lit2}{II-\arabic{lit@lit2}}
\renewcommand*{\blx@bbl@keyw}[1]{%
  \stepcounter{lit@#1}%
  \begingroup
    \edef\@tempa{%
      \noexpand\endgroup
      \noexpand\field{shorthand}{\@nameuse{thelit@#1}}%
      \noexpand\field{label}{\@nameuse{thelit@#1}}%
    }
  \@tempa
  \orig@blx@bbl@keyw{#1}%
}
\makeatother

\begin{document} 
\cite{article1,article2,book1,book2} 

\printbibliography[keyword=lit1,heading=lit1] 
\printbibliography[keyword=lit2,heading=lit2] 
 
\end{document}
Der Trick dabei ist, \keyw so umzudefinieren, dass es die beiden Felder label und shorthand selbst setzt und dabei für jedes Einzelliteraturverzeichnis die Nummerierung selbst fortschreibt. Dazu werden die beiden Zähler lit@lit1 und lit@lit2 mit deren Ausgabemakros \thelit@lit1 und \thelit@lit2 verwendet.

Ob der \edef-Trick zum setzen der beiden Felder wirklich notwendig ist, habe ich nicht getestet. Mit dem Trick sollte man jedenfalls auf der sicheren Seite sein.

\@namedef und \@nameuse werden hier übrigens verwendet, weil in den keys Zeichen vorkommen, die in Makronamen normalerweise nicht vorkommen dürfen.

von TiTo » Do 7. Mai 2009, 20:45

Vielen Dank für den ausführlichen Quelltext in der Antwort.
domwass hat geschrieben:Man könnte es mit 'shorthand' lösen. Nachteil ist, dass man die Label dann manuell vergeben muss.
...
Hm, das wäre mir zuviel Handarbeit. Außerdem wird (natürlich) kurz vor der Angst der Antrag fertig gestellt, so dass Referenzen rausfliegen oder andere hinzukommen. Da bleibt dann keine Zeit für die Änderung vieler Label, wenn sich an deren Reihenfolge etwas ändert.

Wenn es keinen Automatismus dafür gibt, dann würde ich lieber auf den gewünschten Stil verzichten und die fortlaufende Nummerierung bei getrennten Verzeichnissen wählen.

Dank & Gruß, Tobias

von domwass » Do 7. Mai 2009, 16:03

Man könnte es mit 'shorthand' lösen. Nachteil ist, dass man die Label dann manuell vergeben muss.
\documentclass[ngerman]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ARTICLE{article,
  author = {Nachname, Vorname},
  title = {Titel des Zeitschriftenartikels},
  journal = {Zeitschrift},
  year = {2006},
  volume = {6},
  pages = {19--75},
  keywords = {lit1},
  shorthand = {I-1}
}
@BOOK{book,
  author = {Buchautor, Hans-Wilhelm},
  title = {Irgendein Buch},
  address = {Buch am Wald},
  year = {2000},
  keywords = {lit2},
  shorthand = {II-1}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel,csquotes}

\usepackage[
%  style=authortitle
]{biblatex}
\bibliography{\jobname}
\defbibheading{lit1}{\section*{Literatur 1}}
\defbibheading{lit2}{\section*{Literatur 2}}

\begin{document}
\cite{article,book}

\printbibliography[keyword=lit1,heading=lit1]
\printbibliography[keyword=lit2,heading=lit2]

\end{document}
Gruß,
Dominik.-

biblatex: gesplittete Verzeichnisse

von TiTo » Do 7. Mai 2009, 09:25

Hallo,

ich versuche, einen Drittmittelantrag mit LaTeX zu setzen. Die Anforderungen sehen zwei thematisch getrennte Literaturverzeichnisse vor (Literatur I und Literatur II). Dies habe ich mit biblatex und der Sortierung nach einem bestimmten Eintrag im keyword-Feld der bib-Datei auch umsetzen können.

Schwierigkeiten habe ich allerdings mit dem geforderten Zitierstil. Es wird mit fortlaufenden Nummern zitiert, aber zwischen Liste I und II unterschieden. Es soll folgendermaßen aussehen:

Zitierstellen aus Liste: [I-1] und [I-2] und [I-3] usw. Entsprechend sollen Einträge aus der Liste II folgendermaßen zitiert werden: [II-1] und [II-2, II-3] usw.

Wie kann man so etwas erzeugen? Aus der biblatex-Doku bin ich diesbzgl. prima vista nicht schlauer geworden...

Dank im voraus und Gruß, Tobias

Nach oben