Eigene Zitierregel auf Basis von numeric

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


TheChosen0ne
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 27. Apr 2021, 11:33

Eigene Zitierregel auf Basis von numeric

Beitrag von TheChosen0ne »

Hallo zusammen!
Ich nutze biblatex mit dem style=numeric, wodurch ein Quellenverweis wiefolgt aussieht:
\parencite[vgl.][71]{test1} => [vgl. 1, S. 71] .

Auf Anforderung des Profs soll die Darstellung in soweit verändert werden, dass der selbe Befehl jedoch folgende Darstellung ausgibt: (vgl. [1], S. 71).
Auf Basis diesen Threads habe ich den Befehl insofern verändert, dass diese Darstellung nun gegeben ist (siehe Minimalbeispiel).

\documentclass[
	12pt,
	a4paper,
	ngerman
]{article}

\usepackage[ngerman]{babel} %Silbentrennung
\usepackage[utf8]{inputenc} %Umlaute

\usepackage[T1]{fontenc} %Silbentrennung mit Umlauten
\usepackage[a4paper,lmargin={4cm},rmargin={2cm},tmargin={2.5cm},bmargin = {2.5cm}]{geometry} %Randabstand
\usepackage[onehalfspacing]{setspace} % 1,5facher Zeilenabstand

\usepackage{filecontents} 
\begin{filecontents}{\jobname.bib} 
@Book{test1, 
  author    = {Goossens, Michel and Mittelbach, 
               Frank and Samarin, Alexander}, 
  title     = {The LaTeX Companion}, 
  publisher = {Addison-Wesley}, 
  location  = {Reading, Mass.}, 
  year      = {1994}, 
} 
\end{filecontents} 
\usepackage[backend=biber, style=numeric]{biblatex}
\addbibresource{\jobname.bib} % Einbindung der Literatur-Datei

\DeclareCiteCommand{\parencite}[\mkbibparens]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{%
     \mkbibbrackets{\printfield{labelnumber}}%
     \ifbool{bbx:subentry}
       {\printfield{entrysetcount}}
       {}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
  
\begin{document} \section{MiniBsp} Parencite-Quellenverweis mit Parameter: \parencite[vgl.][71]{test1}. Parencite-Quellenverweis ohne Parameter: \parencite{test1} \nocite{*} \printbibliography \end{document}

Allerdings fällt auch auf, dass Qullenverweise im Stile \parencite{test1} zu "([1])" wird. An diesen Stellen sollte es eigentlich nur [1] heißen. Natürlich kann ich an diesen Stellen lediglich \cite verwenden, allerdings müsste ich zum Einen alle entsprechenden Verweise händisch raussuchen und anpassen und zum Anderen macht es ja auch sinngemäß einen Unterschied, wann \cite benutzt wird (wenn ich eine Quelle direkt anspreche), und wann ich \parencite benutze (wenn ich lediglich indirekt auf eine Quelle verweise).

Es wäre daher schön, wenn der Befehl insoweit verändert werden kann, dass die runden Klammern wegfallen, wenn keine Parameter in den eckigen Klammern angegeben werden.
Zusammenfassend will ich also folgendes Verhalten erreichen:

  • \parencite[vgl.][71]{test1} => (vgl. [1], S. 71)

  • \parencite[vgl.][]{test1} => (vgl. [1])

  • \parencite[71]{test1} => ([1], S. 71)

  • \parencite{test1} => [1]

Über eure Hilfe wäre ich wirklich sehr dankbar!
Viele Grüße

Zuletzt geändert von TheChosen0ne am Di 27. Apr 2021, 13:07, insgesamt 1-mal geändert.

Grummelgast

Re: Eigene Zitierregel auf Basis von numeric

Beitrag von Grummelgast »

Hüstel: Gobal \parencite{ durch \cite{ zu ersetzen, ist mit der Suchen/Ersetzen-Funktion eine Sache von wenigen Sekunden bis einigen Minuten, falls es in mehreren Dateien gemacht werden muss. Mit sed wäre es auch in allen *.tex-Dateien eines Verzeichnisses eine Sache von Sekunden.

Übrigens würde ich bei Dokumenten, die nicht von natbib zu biblatex konvertiert, sondern neu erstellt werden, auf Option natbib verzichten. Die ergibt dann eigentlich keinen Sinn.

Ebenso würde ich zur Verwendung von \autocite und entsprechender Einstellung per Option \autocite raten.

Außerdem sind alle modernen LaTeX-Editoren auf utf8 voreingestellt. Vorlagen/Anleitungen, die latin9 empfehlen, würde ich mit Vorbehalt betrachten. Option babel für csquotes ist ebenfalls gnadenlos veraltet.

Nur so als Hinweis. :roll:


TheChosen0ne
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 27. Apr 2021, 11:33

Re: Eigene Zitierregel auf Basis von numeric

Beitrag von TheChosen0ne »

Grummelgast hat geschrieben:
Di 27. Apr 2021, 12:32

Hüstel: Gobal \parencite{ durch \cite{ zu ersetzen, ist mit der Suchen/Ersetzen-Funktion eine Sache von wenigen Sekunden bis einigen Minuten, falls es in mehreren Dateien gemacht werden muss. Mit sed wäre es auch in allen *.tex-Dateien eines Verzeichnisses eine Sache von Sekunden.

Übrigens würde ich bei Dokumenten, die nicht von natbib zu biblatex konvertiert, sondern neu erstellt werden, auf Option natbib verzichten. Die ergibt dann eigentlich keinen Sinn.

Ebenso würde ich zur Verwendung von \autocite und entsprechender Einstellung per Option \autocite raten.

Außerdem sind alle modernen LaTeX-Editoren auf utf8 voreingestellt. Vorlagen/Anleitungen, die latin9 empfehlen, würde ich mit Vorbehalt betrachten. Option babel für csquotes ist ebenfalls gnadenlos veraltet.

Nur so als Hinweis. :roll:

Danke für deine Antwort und die Hinweise. Tatsächlich habe ich nur das Minimalbeispiel aus dem alten Beitrag aus 2009 übernommen, die genaue Konfiguration entspricht garnicht meiner tatsächlichen Verhältnisse im Projekt. War so am schnellsten gemacht, da es mir nur um die Änderung des Kommandos ging (vielleicht sollte ich das Minimalbeispiel auf meine tatsächlichen Verhältnisse anpassen). Edit: Habe mein Minimalbeispiel aktualisiert.

Ich weiß aber nicht, ob das ändern auf cite eine so gute Idee ist. Wenn ich jetzt am Ende die Sache doch ändern muss (warum auch immer), muss ich wieder manuell Hand anlegen. Eine globale Änderung des Kommandos erscheint mir daher als sauberste Lösung.


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Eigene Zitierregel auf Basis von numeric

Beitrag von MoeWe »

Du kannst es mit der folgenden Idee probieren.

\documentclass[12pt, a4paper, ngerman]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber, style=numeric]{biblatex}

\makeatletter
\newcommand*{\ifnopreorpostnote}{%
  \iffieldundef{prenote}
    {\iffieldundef{postnote}}
    {\@secondoftwo}}
\makeatother

\DeclareCiteCommand{\parencite}
  {\ifnopreorpostnote
     {}
     {\printtext{\bibopenparen}}%
   \usebibmacro{prenote}%
   \printtext{\bibopenbracket}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\printtext{\bibclosebracket}%
   \usebibmacro{postnote}%
   \ifnopreorpostnote
     {}
     {\printtext{\bibcloseparen}}}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite[vgl.][71]{sigfridsson}
ipsum \autocite{sigfridsson}
dolor \autocite[vgl.][]{sigfridsson}
sit \autocite[71]{sigfridsson}

\printbibliography
\end{document}

Leider tut das mit Multicite-Befehlen wie \autocites nicht ganz, was ich mir wünschen würde. Mir ist aber auf die Schnelle keine gute Idee gekommen, wie man das gut hinbekommen könnte.


TheChosen0ne
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 27. Apr 2021, 11:33

Re: Eigene Zitierregel auf Basis von numeric

Beitrag von TheChosen0ne »

MoeWe hat geschrieben:
Di 27. Apr 2021, 17:36

Du kannst es mit der folgenden Idee probieren.

\documentclass[12pt, a4paper, ngerman]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber, style=numeric]{biblatex}

\makeatletter
\newcommand*{\ifnopreorpostnote}{%
  \iffieldundef{prenote}
    {\iffieldundef{postnote}}
    {\@secondoftwo}}
\makeatother

\DeclareCiteCommand{\parencite}
  {\ifnopreorpostnote
     {}
     {\printtext{\bibopenparen}}%
   \usebibmacro{prenote}%
   \printtext{\bibopenbracket}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\printtext{\bibclosebracket}%
   \usebibmacro{postnote}%
   \ifnopreorpostnote
     {}
     {\printtext{\bibcloseparen}}}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite[vgl.][71]{sigfridsson}
ipsum \autocite{sigfridsson}
dolor \autocite[vgl.][]{sigfridsson}
sit \autocite[71]{sigfridsson}

\printbibliography
\end{document}

Leider tut das mit Multicite-Befehlen wie \autocites nicht ganz, was ich mir wünschen würde. Mir ist aber auf die Schnelle keine gute Idee gekommen, wie man das gut hinbekommen könnte.

Vielen Dank! Das reicht mir erstmal. Falls jemand den Code um Multicite ergänzen kann, wäre ich dankbar.

Bzgl. des autocites-Befehls: Ich nutze in meinem aktuellen Projekt durchgehend \parencite und \cite. Deine Befehländerung funktioniert auch für \parencite, daher müsste ich die Verweise nicht auf \autocite ändern. Sollte ich das aber dennoch tun? Vielleicht ist das ja best-practice o.ä. (@Grummelgast hat ja auch dazu geraten). Welcher Vorteil hat denn \autocite? Habe bereits gegoogled, aber bin nicht wirklich zu einer klaren Antwort gekommen.


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Eigene Zitierregel auf Basis von numeric

Beitrag von MoeWe »

\autocite ist ein Meta-Befehl, der mit der autocite-Option so eingestellt werden kann, dass er einen beliebigen anderen \...cite-Befehl ausführt. Der Vorteil von \autocite ist es, dass Du damit schnell Änderungen an Deiner Standardzitiervariante durchführen kannst. So kannst Du z.B. schnell von Zitaten in Klammern zu Fußnotenzitaten wechseln, ohne, dass Du alle \parencites zu \footcites ändern musst. Bei der Nutzung von \autocite musst Du dazu nur die Option von autocite=plain, zu autocite=footnote, umstellen. Dadurch wird auch der Wechsel zwischen Zitatstilen einfacher, da Du so mühelos von einem verbose-Stil zu einem numeric-Stil oder einem authoryear-Stil wechseln kannst (wo sich andere Standardzitierbefehle anbieten).

\autocite ist damit eine Abstraktionsstufe über den anderen \...cite-Befehlen. Da der Befehl vergleichsweise wenig genutzt wird (zumindest ist das mein Eindruck), aber sehr häufig sinnvoll ist, versuche ich, ihn möglichst gut zu bewerben. Wenn man allerdings ein sehr komplexes Zitiersystem hat, in dem verschiedene Befehle wie \textcite, \parencite und \cite nebeneinander genutzt werden müssen, bietet sich \autocite vielleicht nicht mehr so sehr an (die Kombi \autocite/\textcite ist oftmals gut, aber wenn man noch mehr Befehle mit anderen Ausgaben braucht, dann kommt man an die Grenzen der Abstraktion).

Der gezeigte Code ändert primär nur die Ausgabe von \parencite. \autocite wird automatisch mitgeändert, da es hier eben zu \parencite wird. Also kannst Du natürlich \parencite direkt nutzen, wenn das sinnvoller ist.


TheChosen0ne
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 27. Apr 2021, 11:33

Re: Eigene Zitierregel auf Basis von numeric

Beitrag von TheChosen0ne »

MoeWe hat geschrieben:
Mi 28. Apr 2021, 09:15

\autocite ist ein Meta-Befehl, der mit der autocite-Option so eingestellt werden kann, dass er einen beliebigen anderen \...cite-Befehl ausführt. Der Vorteil von \autocite ist es, dass Du damit schnell Änderungen an Deiner Standardzitiervariante durchführen kannst. So kannst Du z.B. schnell von Zitaten in Klammern zu Fußnotenzitaten wechseln, ohne, dass Du alle \parencites zu \footcites ändern musst. Bei der Nutzung von \autocite musst Du dazu nur die Option von autocite=plain, zu autocite=footnote, umstellen. Dadurch wird auch der Wechsel zwischen Zitatstilen einfacher, da Du so mühelos von einem verbose-Stil zu einem numeric-Stil oder einem authoryear-Stil wechseln kannst (wo sich andere Standardzitierbefehle anbieten).

\autocite ist damit eine Abstraktionsstufe über den anderen \...cite-Befehlen. Da der Befehl vergleichsweise wenig genutzt wird (zumindest ist das mein Eindruck), aber sehr häufig sinnvoll ist, versuche ich, ihn möglichst gut zu bewerben. Wenn man allerdings ein sehr komplexes Zitiersystem hat, in dem verschiedene Befehle wie \textcite, \parencite und \cite nebeneinander genutzt werden müssen, bietet sich \autocite vielleicht nicht mehr so sehr an (die Kombi \autocite/\textcite ist oftmals gut, aber wenn man noch mehr Befehle mit anderen Ausgaben braucht, dann kommt man an die Grenzen der Abstraktion).

Der gezeigte Code ändert primär nur die Ausgabe von \parencite. \autocite wird automatisch mitgeändert, da es hier eben zu \parencite wird. Also kannst Du natürlich \parencite direkt nutzen, wenn das sinnvoller ist.

Sehr gute Erklärung, danke dir!


Antworten