PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BibLaTeX, "In:" vor Zeitschriftname entfernen



2357911
26-06-2010, 15:53
Hallo zusammen!

Ich möchte gern, dass im Literaturverzeichnis beim zittieren von Zeitschriftenartikeln das bibmacro "In:" nicht geschrieben wird.
Ich verwende BibLaTeX, den Authoryear-Stil und hab mich schon durch viele Foreneinträge und Dokumentationen gewühlt. Auch das Google-Orakel hat nicht geholfen.

Das was der Sache noch am nächsten kam, stand in der TeXnichen Komödie, bei Dominik Waßenhoven: Bibliographien erstellen mit biblatex (Teil 2), Die TEXnische Komödie 4/2008, S. 31–51. Da gings aber nur drum das "in:" klein zu schreiben.

Wahrscheinlich isses wieder pupseinfach und mit irgendeinem \renewcommand gemacht, aber ich finde die passenden Befehle nicht.

MW

mechanicus
26-06-2010, 16:05
Das was der Sache noch am nächsten kam, stand in der TeXnichen Komödie, bei Dominik Waßenhoven: Bibliographien erstellen mit biblatex (Teil 2), Die TEXnische Komödie 4/2008, S. 31–51. Da gings aber nur drum das "in:" klein zu schreiben.

Dann greife doch auf diese Quelle zurück und schreibe anstatt "in" nichts rein :rolleyes:

Es wäre auch hilfreich, wenn du ein Minimalbeispiel erstellst.

Gruß
Marco

lockstep
26-06-2010, 16:22
Der relevante Code findet sich in standard.bbx.



\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{bytranslator+others}%
\newunit\newblock
\printfield{version}%
\newunit\newblock
% \usebibmacro{in:}% GEÄNDERT
\usebibmacro{journal+issuetitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{note+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\newunit\newblock
\usebibmacro{pageref}%
\usebibmacro{finentry}}


lockstep

2357911
26-06-2010, 18:12
@ Marco: würde ich gerne machen, aber da wird nur ein Trick aufgezeigt, nämlich vor dem "In:"etwas zu verändern, damit LaTeX das "in:" automatisch klein schreibt. Das Bibmacro selbst wird nicht verändert.

@lockstep: geht das nur in der standard.bbx zu ändern? Da würde ich eher ungern herum fuhrwerken. Ich würd's lieber im LaTeX-Dokument machen.

aber danke euch beiden für die schnellen Antworten

Martin

mechanicus
26-06-2010, 18:34
Hi,

kannst du bitte ein Minimalbeispiel erstellen, vielleicht findet sich dann schneller was :rolleyes:

Gruß
Marco

2357911
26-06-2010, 18:48
Ach jetzt hab ichs geschnallt! Ich Depp!

Nochmal für Aussenstehende: wenn ich den ganzen Sermon ab

\DeclareBibliographyDriver{article}{
...
}

in die Präambel kopiere (unter dem \usepackage[...]{biblatex}) und da die Änderung am Bibmacro mache, werden alle Artikel-Einträge ohne das "In:" geschrieben.

Und wenn ich nur

\renewbibmacro*{in:}{}

rein schreibe, werden alle "In:" in sämtlichen Einträgen (auch gesammelte Werke etc.) entfernt.

Ja, mühsam ernährt sich das Eichhörnchen ...

Das sieht dann bei mir als Minimalbeispiel so aus und funktioniert auch reibungsfrei:



\documentclass[
11pt,% Kleinere Schrift, default ist 12pt
oneside,% Einseitiger (oneside)/Zweiseitiger (twoside) Druck
headsepline,% Linie nach Kopfzeile
bibliography=totoc,% Lit.verzeichnis taucht im Inhaltsverzeichnis auf, mit =totocnumbered erscheint es auch nummeriert
]
{scrbook}

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

% SPRACHEINSTELLUNGEN
\usepackage[latin1]{inputenc}% Sonderzeichen äöüßÄÖÜ unter Windows
\usepackage[T1]{fontenc}% Moderner Zeichensatz
\usepackage[ngerman]{babel}% Neue Deutsche Rechtschreibung und Silbentrennung
\usepackage[style=swiss]{csquotes}% Festlegen des Zitierstils und Verwenden von Schweizer Anführungszeichen

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

% LITERATURVERZEICHNIS
\usepackage[
citestyle=authoryear,% der verwendete Zitierstil im Text
bibstyle=authoryear,% der verwendete Stil im Lit.verzeichnis, einfacher wäre 'style=authoryear'
useprefix=true,% Namenspräfixe werden beim Sortieren berücksichtigt (z.B. van Bethooven, Ludwig)
maxnames=2,% maximal 2 Autoren werden im laufenden Text ausgeschrieben, ab 3 Autoren wird mit z.B. Meier et al. 1987 abgekürzt (default=3)
% steht hier maxnames=99, wird auch im Text jeder Autor erwähnt
hyperref=auto% damit Zitat als Link zum Lit.verzeichnis funktionieren
]{biblatex}
\bibliography{Alles}% die zu verwendende(n) Literaturdatenkank(en), aber mehr als eine geht irgendwie nicht
\DeclareNameFormat{sortname}{% im Lit.verzeichnis wird Name, Vorname, Name, Vorname usw geschrieben anstatt der amerikanischen Konvention, Name, Vorname, Vorname, Name, Vorname, Name usw
{\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}
}

\AtBeginBibliography{% Autoren im Literaturverzeichnis fett
\renewcommand*\mkbibnamefirst[1]{\bfseries{#1}}
\renewcommand*\mkbibnamelast[1]{\bfseries{#1}}
\renewcommand*\mkbibnameprefix[1]{\bfseries{#1}}
\renewcommand*\mkbibnameaffix[1]{\bfseries{#1}}
\DeclareFieldFormat{year}{\bfseries{#1}}
\DeclareFieldFormat{labelyear}{\bfseries{\mkbibemp h{\mknumalph{#1}}}}
}

\DeclareBibliographyDriver{article}{
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit\newblock
% \usebibmacro{in:}% SO KLAPPT DAS!
\usebibmacro{journal+issuetitle}%
\newunit\newblock
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{pages}
\newunit\newblock
\printfield{issn}%
\newunit\newblock
\printfield{doi}%
\newunit\newblock
\usebibmacro{eprint}
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\printfield{addendum}%
\newunit\newblock
\usebibmacro{pageref}%
\usebibmacro{finentry}
}
%\renewbibmacro*{in:}{}% löscht alle 'In:'

%\DeclareFieldFormat{journaltitle}{#1\isdot}% zeitschrift nicht kursiv
\renewcommand*{\labelnamepunct}{\addcolon\space}% doppelpunkt nach jahr im litverzeichnis
\renewcommand*{\finalnamedelim}{\addspace\&\space}% Autoren mit '&' statt 'und' getrennt
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}% Autoren in Kapitälchen
\DefineBibliographyStrings{ngerman}{andothers = {\textit{et\,al\adddot}}}% 'et al.' anstatt 'u.a.' und kursiv
%http://www.golatex.de/literaturverzeichnis-eigener-stil-kapitaelchen-t4052.html für diverse andere Tricks

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

\begin{document}

\printbibliography[% erstellt das Literaturverzeichnis
maxnames=99% maximal 99 Namen der jeweiligen Literaturstellen werden im Lit.verzeichnis aufgeführt
]

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

\end{document}

lockstep
26-06-2010, 18:59
Verwende zukünftig statt der PHP-Codeumgebung eine normale Codeumgebung - auf diese Weise werden die Backslashes nicht geschluckt.

lockstep

2357911
26-06-2010, 19:06
Habs auch eben gemerkt, sorry :o



% DOKUMENTKLASSE

\documentclass[
11pt,%
oneside,%
headsepline,%
bibliography=totoc,%
]
{scrbook}

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

% SPRACHEINSTELLUNGEN
\usepackage[latin1]{inputenc}% Sonderzeichen äöüßÄÖÜ unter Windows
\usepackage[T1]{fontenc}% Moderner Zeichensatz
\usepackage[ngerman]{babel}% Neue Deutsche Rechtschreibung und Silbentrennung
\usepackage[style=swiss]{csquotes}% Festlegen des Zitierstils und Verwenden von Schweizer Anführungszeichen

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

% LITERATURVERZEICHNIS
\usepackage[
citestyle=authoryear,% der verwendete Zitierstil im Text
bibstyle=authoryear,% der verwendete Stil im Lit.verzeichnis, einfacher wäre 'style=authoryear'
useprefix=true,% Namenspräfixe werden beim Sortieren berücksichtigt (z.B. van Bethooven, Ludwig)
maxnames=2,% maximal 2 Autoren werden im laufenden Text ausgeschrieben, ab 3 Autoren wird mit z.B. Meier et al. 1987 abgekürzt (default=3)
% steht hier maxnames=99, wird auch im Text jeder Autor erwähnt
hyperref=auto% damit Zitat als Link zum Lit.verzeichnis funktionieren
]{biblatex}
\bibliography{Alles}% die zu verwendende(n) Literaturdatenkank(en), aber mehr als eine geht irgendwie nicht
\DeclareNameFormat{sortname}{% im Lit.verzeichnis wird Name, Vorname, Name, Vorname usw geschrieben anstatt der amerikanischen Konvention, Name, Vorname, Vorname, Name, Vorname, Name usw
{\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}
}

\AtBeginBibliography{% Autoren im Literaturverzeichnis fett
\renewcommand*\mkbibnamefirst[1]{\bfseries{#1}}
\renewcommand*\mkbibnamelast[1]{\bfseries{#1}}
\renewcommand*\mkbibnameprefix[1]{\bfseries{#1}}
\renewcommand*\mkbibnameaffix[1]{\bfseries{#1}}
\DeclareFieldFormat{year}{\bfseries{#1}}
\DeclareFieldFormat{labelyear}{\bfseries{\mkbibemp h{\mknumalph{#1}}}}
}

\DeclareBibliographyDriver{article}{
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit\newblock
% \usebibmacro{in:}% GEÄNDERT!
\usebibmacro{journal+issuetitle}%
\newunit\newblock
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{pages}
\newunit\newblock
\printfield{issn}%
\newunit\newblock
\printfield{doi}%
\newunit\newblock
\usebibmacro{eprint}
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\printfield{addendum}%
\newunit\newblock
\usebibmacro{pageref}%
\usebibmacro{finentry}
}
%\renewbibmacro*{in:}{}% löscht alle 'In:'

%\DeclareFieldFormat{journaltitle}{#1\isdot}% zeitschrift nicht kursiv
\renewcommand*{\labelnamepunct}{\addcolon\space}% doppelpunkt nach jahr im litverzeichnis
\renewcommand*{\finalnamedelim}{\addspace\&\space}% Autoren mit '&' statt 'und' getrennt
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}% Autoren in Kapitälchen
\DefineBibliographyStrings{ngerman}{andothers = {\textit{et\,al\adddot}}}% 'et al.' anstatt 'u.a.' und kursiv
%http://www.golatex.de/literaturverzeichnis-eigener-stil-kapitaelchen-t4052.html für diverse andere Tricks

% diesen ganzen Sermon braucht man wohl, wenn mit hyperref=auto oder hyperref=true nicht nur die Jahreszahl, sondern das ganze Zitat als Link zum Lit.verzeichnis führen soll
% aus http://mrunix.de/forums/showthread.php?t=67385
% klappt aber nur bei eingeklammerten Einträgen
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldund ef{year}}
{\usebibmacro{cite:label}%
\setunit{\addspace}
\usebibmacro{cite:year+labelyear}}
{\printtext[bibhyperref]{%
\printnames{labelname}%
\setunit{\nameyeardelim}%
\printfield{year}%
\printfield{labelyear}%
}%
}%
}
{\usebibmacro{cite:shorthand}}}


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

\begin{document}

\printbibliography[% erstellt das Literaturverzeichnis
maxnames=99% maximal 99 Namen der jeweiligen Literaturstellen werden im Lit.verzeichnis aufgeführt
]
\end{document}

mechanicus
26-06-2010, 19:48
Hi,

dein Beispiel läuft vermutlich bei dir, weil du eine bib-Datei hast :D:D

Aber hier eine Möglichkeit:

\RequirePackage{filecontents}
\begin{filecontents*}{Alles.bib}
@article{test,
author={Hans Peter},
title={Der Bericht in der Zeitschrift},
journaltitle={Die Zeitung},
year={2010},
number={7},
}

@inbook{testa,
author={Hans Maler},
title={Der Bericht im Buch},
booktitle={Das Buch},
year={2010},
}

\end{filecontents*}
\documentclass[
11pt,%
oneside,%
headsepline,%
bibliography=totoc,%
]
{scrbook}

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

% SPRACHEINSTELLUNGEN
\usepackage[latin1]{inputenc}% Sonderzeichen äöüßÄÖÜ unter Windows
\usepackage[T1]{fontenc}% Moderner Zeichensatz
\usepackage[ngerman]{babel}% Neue Deutsche Rechtschreibung und Silbentrennung
\usepackage[style=swiss]{csquotes}% Festlegen des Zitierstils und Verwenden von Schweizer Anführungszeichen

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

% LITERATURVERZEICHNIS
\usepackage[
citestyle=authoryear,% der verwendete Zitierstil im Text
bibstyle=authoryear,% der verwendete Stil im Lit.verzeichnis, einfacher wäre 'style=authoryear'
useprefix=true,% Namenspräfixe werden beim Sortieren berücksichtigt (z.B. van Bethooven, Ludwig)
maxnames=2,% maximal 2 Autoren werden im laufenden Text ausgeschrieben, ab 3 Autoren wird mit z.B. Meier et al. 1987 abgekürzt (default=3)
% steht hier maxnames=99, wird auch im Text jeder Autor erwähnt
hyperref=auto% damit Zitat als Link zum Lit.verzeichnis funktionieren
]{biblatex}

\bibliography{Alles}% die zu verwendende(n) Literaturdatenkank(en), aber mehr als eine geht irgendwie nicht

\DeclareNameFormat{sortname}{% im Lit.verzeichnis wird Name, Vorname, Name, Vorname usw geschrieben anstatt der amerikanischen Konvention, Name, Vorname, Vorname, Name, Vorname, Name usw
{\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}
}

\AtBeginBibliography{% Autoren im Literaturverzeichnis fett
\renewcommand*\mkbibnamefirst[1]{\bfseries{#1}}
\renewcommand*\mkbibnamelast[1]{\bfseries{#1}}
\renewcommand*\mkbibnameprefix[1]{\bfseries{#1}}
\renewcommand*\mkbibnameaffix[1]{\bfseries{#1}}
\DeclareFieldFormat{year}{\bfseries{#1}}
\DeclareFieldFormat{labelyear}{\bfseries{\mkbibemp h{\mknumalph{#1}}}}
}

\makeatletter
%\newbibmacro*{in:}{%
% \printtext{%
% \bibstring{in}\intitlepunct}}
\renewbibmacro*{in:}{%
\def\tempb{article}
\ifx\abx@field@entrytype\tempb
\else%
\printtext{%
\bibstring{in}\intitlepunct}
\fi
}
\makeatother

%\DeclareFieldFormat{journaltitle}{#1\isdot}% zeitschrift nicht kursiv
\renewcommand*{\labelnamepunct}{\addcolon\space}% doppelpunkt nach jahr im litverzeichnis
\renewcommand*{\finalnamedelim}{\addspace\&\space}% Autoren mit '&' statt 'und' getrennt
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}% Autoren in Kapitälchen
\DefineBibliographyStrings{ngerman}{andothers = {\textit{et\,al\adddot}}}% 'et al.' anstatt 'u.a.' und kursiv
%http://www.golatex.de/literaturverzeichnis-eigener-stil-kapitaelchen-t4052.html für diverse andere Tricks

% diesen ganzen Sermon braucht man wohl, wenn mit hyperref=auto oder hyperref=true nicht nur die Jahreszahl, sondern das ganze Zitat als Link zum Lit.verzeichnis führen soll
% aus http://mrunix.de/forums/showthread.php?t=67385
% klappt aber nur bei eingeklammerten Einträgen
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldund ef{year}}
{\usebibmacro{cite:label}%
\setunit{\addspace}
\usebibmacro{cite:year+labelyear}}
{\printtext[bibhyperref]{%
\printnames{labelname}%
\setunit{\nameyeardelim}%
\printfield{year}%
\printfield{labelyear}%
}%
}%
}
{\usebibmacro{cite:shorthand}}}


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

\begin{document}
\nocite{*}
\printbibliography[% erstellt das Literaturverzeichnis
maxnames=99% maximal 99 Namen der jeweiligen Literaturstellen werden im Lit.verzeichnis aufgeführt
]
\end{document}

entscheidend:

\makeatletter
%\newbibmacro*{in:}{%
% \printtext{%
% \bibstring{in}\intitlepunct}}
\renewbibmacro*{in:}{%
\def\tempb{article}
\ifx\abx@field@entrytype\tempb
\else%
\printtext{%
\bibstring{in}\intitlepunct}
\fi
}
\makeatother

Gruß
Marco

lockstep
26-06-2010, 19:51
Ich nehme an, dein Problem ist gelöst. Du musst daher nicht noch ein korrigiertes Beispiel basteln - aber als Tipp für die Zukunft: Niemand außer dir hat die Datei Alles.bib. Verwende eine filecontents-Umgebung, um bib-Dateien in ein Beispiel mit zu verpacken - näheres siehe hier (http://www.mrunix.de/forums/showthread.php?t=66921).

lockstep

EDIT: mechanicus war schneller.

mechanicus
26-06-2010, 19:56
EDIT: mechanicus war schneller.
passiert. :D War auch lange genug nicht hier :rolleyes: und freue mich gerade über den Aktualisierungsbutton :D