PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mycite-Befehl im multibib-Usepackage



barbarelle77
10-10-2010, 17:14
Hi folks

Weiss jemand, wie ich den mycite-Befehl beim multibib-usepackage anwenden muss, wenn ich mehrere Unterkapitel im Literaturverzeichnis haben möchte?

Hier ein Minimalbeispiel. Ich denke, sowohl die Frage wie auch die Antwort ist relativ simpel, nur leider komm ich nicht drauf...:confused:

\documentclass[smallheadings,headsepline,12pt,a4paper,oneside]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
\usepackage{url}
\usepackage[paper=a4paper,left=20mm,right=20mm,top=40mm,bottom =20mm]{geometry}
\pagestyle{headings}
\usepackage[authorformat=year,superscriptedition=year,titlefor mat=italic,titleformat=commasep]{jurabib}

\jurabibsetup{dotafter=bibentry}
\newcommand{\mycite}[3][]{
\renewcommand{\jbcitationyearformat}[1]{##1}
(\ifthenelse{\equal{.}{#1.}}{}{#1 }\citeauthor{#3}
\citefield{year}{#3}\ifthenelse{\equal{.}{#2.}}{}{ : #2})}

\renewcommand*{\bibelnfont}{}
\renewcommand*{\bibefnfont}{}
\renewcommand*{\bibbtsep}{in: }
\renewcommand*{\bibjtsep}{in: }
\renewcommand*{\bibtfont}{\textit}
\renewcommand*{\bibapifont}{\textit}
\renewcommand*{\bibatsep}{, }
\renewcommand*{\bibbdsep}{}
\renewcommand*{\bibaldelim}{(}
\renewcommand*{\bibardelim}{)}
\newcommand*{\punkte}{\dots\unkern}

\usepackage{hyperref}

\clubpenalty = 1000
\widowpenalty = 1000

\usepackage{multibib}
\newcites{z}{Zeitungsartikel}


\begin{document}

\bibliographystyle{jureco}
\bibliography{Forschungsarbeit.bib}
\renewcommand{\bibname}{Zeitungsartikel}
\bibliographystylez{jureco}
\bibliographyz{ForschungsarbeitArtikel.bib}


\end{document}

rais
10-10-2010, 23:34
Hallo und Herzlich Willkommen :)
nutze bitte zur Codedarstellung die gleichnamige Umgebung hier im Board (auch zu erreichen über das `#'-Symbol (nicht die Taste) bei der Beitragserstellung)


Weiss jemand, wie ich den mycite-Befehl beim multibib-usepackage anwenden muss, wenn ich mehrere Unterkapitel im Literaturverzeichnis haben möchte?

multibibs \newcites-Befehl deklariert eine Reihe an neuen Befehlen, bei \newcites{z}{...} u.a. Dinge wie \citez oder -- in Verbindung mit jurabib auch \citeauthorz; welche Befehle erzeugt werden, kannst Du Dir mit

\makeatletter
\show\@mb@citenamelist
\makeatother
(südlich von jurabib und multibib) selbst anzeigen lassen, füge jedem Namen gedanklich einfach ein `z' hinzu (oder was auch immer Du dem \newcites als ersten Parameter übergibst), naturgemäß gehört `mycite' nicht dazu.
Nun könntest Du dabeigehen, diesen \@mb@citenamelist um `mycite' zu erweitern, etwa


\makeatletter
\edef\@mb@citenamelist{mycite,\@mb@citenamelist}
\makeatother

(südlich von jurabib und multibib)
Das hätte allerdings den Haken, daß innerhalb des so erzeugten \mycitez \citeauthor, nicht etwa \citeauthorz aufgerufen würde (so es auch der bessere Ansatz sein mag) ...


\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{ForschungsarbeitArtikel.bib}
@article{foo,
author={Silie, Peter},
title={Vom Minimalbeispiel zum fertigen Projekt},
journal={Der kleine {\TeX}niker},
volume={41},
number={795},
pages={25-37},
year={2010}
}
\end{filecontents}
\begin{filecontents}{Forschungsarbeit.bib}
@book{bar,
author={Silie, Peter},
title={Minimalbeispiel f{\"u}r Dummies},
pages={1125-1127},
publisher={Null Acht Fuffzehn},
address={Hamburg},
year={2010}
}
\end{filecontents}

\usepackage[authorformat=year,superscriptedition=year,titlefor mat=italic,titleformat=commasep]{jurabib}
\usepackage{multibib}
\usepackage{hyperref}

\newcites{z}{Zeitungsartikel}
\newcommand*\mycite[3][]{%
\renewcommand{\jbcitationyearformat}[1]{##1}%
(\ifthenelse{\equal{.}{#1.}}{}{#1 }\citeauthor{#3}
\citefield{year}{#3}\ifthenelse{\equal{.}{#2.}}{}{ : #2})%
}
\newcommand*\mycitez[3][]{%<--diesen befehl _nach_ \newcites{z}{...} definieren
\renewcommand{\jbcitationyearformat}[1]{##1}%
(\ifthenelse{\equal{.}{#1.}}{}{#1 }\citeauthorz{#3}
\citefieldz{year}{#3}\ifthenelse{\equal{.}{#2.}}{} { : #2})%
}
\begin{document}
bla \mycite{Par2}{bar}
blubb \mycitez{P2}{foo}
\bibliographystyle{jureco}
\bibliography{Forschungsarbeit.bib}
\renewcommand{\bibname}{Zeitungsartikel}
\bibliographystylez{jureco}
\bibliographyz{ForschungsarbeitArtikel.bib}
\end{document}

d.h. wenn es denn wirklich Unterkapitel sein sollen, vllt so etwas wie


\addchap*{\bibname}
\begingroup
\let\chapter\section
\renewcommand*\bibname{Literatur}%
\bibliographystyle{jureco}%
\bibliography{Forschungsarbeit.bib}
\renewcommand*\bibname{Zeitungsartikel}%
\bibliographystylez{jureco}%
\bibliographyz{ForschungsarbeitArtikel.bib}
\endgroup
an passender Stelle.

Und schau Dir bitte an, was ein Minimalbeispiel (http://www.minimalbeispiel.de) ist, definierte Befehle wie


\newcommand*{\punkte}{\dots\unkern}

die dann nicht benutzt werden, hindern eher, als daß sie helfen.;)
BTW: wozu definierst Du \jbcitationyearformat innerhalb \mycite um und nicht außerhalb? Benötigst Du in Deinem Text auch die Originaldefinition von \jbcitationyearformat?

MfG

barbarelle77
12-10-2010, 13:18
Thanks a lot!
Bemerkungen wegen Codedarstellung und Minimalbeispiel nehm ich mir zu Herzen...:)

Zum BTW: nur weil ich LateX anwende, heisst das noch lange nicht, dass ich verstehe, was ich mache;-).
Ich brauche \jbcitationyearformat meines Wissens nicht in der Originaldefinition. Würde das heissen, dass ich den \mycite-Befehl gar nicht brauche?

(Sorry, meine Fragen sind echt ziemlich basic, aber ich hab halt meine Präambel und alles von einem Kollegen mit copy-paste eingefügt und jetzt merke ich, dass ich s doch selber verstehen muss/will...)

rais
14-10-2010, 23:29
Moin moin,


Zum BTW: nur weil ich LateX anwende, heisst das noch lange nicht, dass ich verstehe, was ich mache;-).

das Gefühl kenn ich :D


Ich brauche \jbcitationyearformat meines Wissens nicht in der Originaldefinition. Würde das heissen, dass ich den \mycite-Befehl gar nicht brauche?

Nö, ich hab mich nur gefragt, wozu Du \jbcitationyearformat innerhalb Deines \mycite-Befehls umdefinierst. Mit Aufruf des ersten \mycite wird \jbcitationyearformat entsprechend umdefiniert und gilt fortan bis Dokumentende, so dieser \mycite nicht innerhalb einer Gruppe aufgerufen wurde (dann gilt afaik diese Definition halt nur bis zum Ende der Gruppe).
Ein Folgeaufruf von \mycite (innerhalb dieser Gruppe, und sei diese Gruppe `document') würde mit erneuter Redefinition von \jbcitationyearformat nur unnötigen Ballast bedeuten (der Befehl ist ja schon umdefiniert).
Wenn Du \jbcitationyearformat nur in dieser von Dir definierten Form benötigst, täte es auch ein


\renewcommand{\jbcitationyearformat}[1]{#1}
in Deiner Präambel; innerhalb der Definition von \mycite, \mycitez (und wie sie alle heißen mögen) könntest Du auf die, hmm, interne Redifinition von eben \jbcitationyearformat verzichten (bei gleichem Ergebnis).


(Sorry, meine Fragen sind echt ziemlich basic, aber ich hab halt meine Präambel und alles von einem Kollegen mit copy-paste eingefügt und jetzt merke ich, dass ich s doch selber verstehen muss/will...)
Hmm, ganz so `basic' scheint mir zumindest Deine letzte Frage nicht gewesen zu sein, sonst hättest Du imho bereits eine Antwort erhalten;-)
Das mag aber auch damit zusammenhängen, daß heutzutage fast ausschließlich biblatex (http://dante.ctan.org/tex-archive/help/Catalogue/entries/biblatex.html) empfohlen wird -- vllt ist das ja auch was für Dich.

BTW: für Grundlegendes vllt etwas Lesestoff (http://www.mrunix.de/forums/showthread.php?t=53764);)

MfG

barbarelle77
28-10-2010, 17:00
Nun hab ich endlich etwas Zeit, mich wieder dahinterzuklemmen und mich um die formalen Dinge zu kümmern.

Werd deinen indirekten Rat befolgen und biblatex runterladen. Dann reden wir wenigsten alle vom Gleichen und vielleicht erübrigt sich damit mein Problem von alleine:)

Merci für die Hilfe!