renewbibmacro funktioniert nicht

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: renewbibmacro funktioniert nicht

von DerHarry » Mo 26. Sep 2016, 12:52

Danke für die Antworten, es lag am fehlenden false bei if.

Ich hab es jetzt so gelöst:
\AtEveryBibitem{%
	\ifkeyword{primary}
		{\clearfield{journaltitle}}
		{}%
}%

\AtEveryBibitem{%
   \renewbibmacro*{in:}{%
  	\ifkeyword{primary}
    	{}
    	{\printtext{\bibstring{in}\intitlepunct}}}
	{}%
}%
Zum Sinn:

Ich benutze in meiner Arbeit mehrere Zeitungen, die ich im Text auch unterscheiden muss. Im Literaturverzeichnis gruppiere ich die jeweiligen Zeitungen aber unter eigenen Überschriften, weshalb die Angabe "in: Zeitung" redundant ist.

Danke!

von Gast » Mo 26. Sep 2016, 12:38

Es wäre übrigens sinnvoll, das Kästchen "BBcode in diesem Beitrag deaktivieren" nicht abzuhaken, sondern deaktiviert zu lassen! Sonst nützt die Markierung als Code nämlich leider nichts.

von Gast » Mo 26. Sep 2016, 12:30

Oh, wie schön, ich sehe gerade, dass unser Rufen nach einem vollständigen Beispiel erhört worden ist.

Ich würde Dir im Ganzen also
\documentclass{article}
\usepackage[backend=biber,style=footnote-dw]{biblatex}

\AtEveryBibitem{%
  \ifkeyword{primary}
    {\clearfield{journaltitle}}
    {}%
}%

\renewbibmacro*{in:}{%
  \ifkeyword{primary}
    {}
    {\printtext{\bibstring{in}\intitlepunct}}}

\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{test,
keywords = {primary},
author = {Max Muster},
date = {2006-09-20},
title = {Test},
journal = {Die Zeitung}
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}
vorschlagen.

Der Sinn erschließt sich mir noch nicht ganz, aber OK.

von Gast » Mo 26. Sep 2016, 12:26

Dir fehlt bei \ifkeyword auf jeden Fall ein Klammerpaar, die Syntax ist
\ifkeyword{<keyword>}
  {<truecode>}
  {<falsecode>}
Wobei Du den die Anweisung für false ({<falsecode>}) nicht einfach weglassen kannst. (TeX versucht das auszugleichen, das kann sogar klappen, aber es kann auch furchtbar schiefgehen. - Im ersten Fall gehts wohl, bei renewbibmacro nicht mehr so gut.)

Bei dem renewbibmacro brauchst Du das \AtEveryBibitem aller Wahrscheinlichkeit nicht (es sei denn, Du möchtest, dass Zitate sich anders verhalten),
\renewbibmacro*{in:}{%
  \ifkeyword{primary}
    {}
    {\printtext{\bibstring{in}\intitlepunct}}}
wäre daher eine meiner Ansicht nach sinnvolle Alternative.

Ob das genau das tut, was Du Dir vorstellst, weiß ich nicht. Testen können wir das nur mit dem von Ulrike angefragten Minimalbeispiel.

Es sei noch kurz darauf hingewiesen, dass es mir spanisch vorkommt, bei bestimmten Quellen, das Journal zu unterdrücken. Besonders, wenn Du volume und so nicht entfernst. Vielleicht solltest Du das Problem anders angehen.

von DerHarry » Mo 26. Sep 2016, 12:22

Hier ein Minimalbeispiel:
\documentclass{article}

\usepackage[backend=biber,style=footnote-dw]{biblatex}

\AtEveryBibitem{%
	\ifkeyword{primary}%
		{\clearfield{journaltitle}}%
}%

\AtEveryBibitem{%
   \ifkeyword{primary}%
      {\renewbibmacro*{in:}{{}{\printtext{\bibstring{in}\intitlepunct}}}}%
}%

\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
 @article{test,
  keywords = {primary},
  author = {Max Muster},
  date = {2006-09-20},
  title = {Test},
  journal = {Die Zeitung}
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}
\printbibliography

\end{document}

von u_fischer » Mo 26. Sep 2016, 11:41

Die Klammerung sieht falsch aus. Aber da du kein vollständiges Beispiel zeigst, kann man es nicht testen.

renewbibmacro funktioniert nicht

von DerHarry » Mo 26. Sep 2016, 10:02

Ich möchte im Literaturverzeichnis für Einträge mit dem keyword "primary" den journaltitle und das ", in:" entfernen.

Mein Code sieht wie folgt aus:
\AtEveryBibitem{%
	\ifkeyword{primary}%
		{\clearfield{journaltitle}}%
}%

\AtEveryBibitem{%
	\ifkeyword{primary}%
		{\renewbibmacro*{in:}{{}{\printtext{\bibstring{in}\intitlepunct}}}}%
}%
{\clearfield{journaltitle}} funktioniert wie gewünscht, renewbibmacro allerdings nicht. Was passiert ist, dass das Wort "primary" vor jede Zeile im Literaturverzeichnis geknallt wird.

Nach oben