Beim Schreiben führe ich gerne eine Abkürzung für das gesamte Zitat ein. Beim ersten Mal würde ich schreiben: „Dies ist wahr, wie in (nbren12, et. al. 2012) (im Folgenden NB12) gezeigt.“ Bei den nachfolgenden Verwendungen würde ich einfach sagen: „Diese Tatsache ist wahr (NB12)“. Wie kann ich dies automatisch mit Bibtex (oder Biblatex) implementieren?
Dies ist ähnlich, aber nicht identisch mitdiese Frage.
Antwort1
Es ist klar beschrieben in derHandbuchvon natbib
auf Seite 3.
Verwenden Sie den Befehl:
\defcitealias{nbren12}{NB12}
Anschließend können Sie neben dem klassischen Zitieren \citet{}
oder \citep{}
auch folgendes verwenden:
\citetalias{nbren12}
% or
\citepalias{nbren12}
Beispiel
Darin example.tex
habe ich:
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike}
\begin{document}
\defcitealias{jd14}{JD14}
In text \citet{jd14}. Or in brackets \citep[][hereafter JD14]{jd14}.
Now I cite it in text as \citetalias{jd14} and in brackets \citepalias{jd14}.
\bibliography{mybib}
\end{document}
und mybib.bib
ich habe:
@article{jd14,
author={Doe, J. and Smith, J. and Bar, F.},
title={Some title},
journal={Some journal},
year={2014},
}
und die Ausgabe ist:
Und wenn Sie möchten, dass der Alias z. B. kursiv gedruckt wird, aber keine Seitenzahlen usw., können Sie z. B. schreiben \defcitealias{jd14}{{\itshape JD14}}
.
Antwort2
biblatex
hat das eingebaute Standardmakro, shorthandintro
das dies tun kann. In der .bib
Datei fügt man dann das shorthand
Feld hinzu und gibt dort den kurzen Zitatnamen ein, so wie hier
@article{jd14,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {Some title},
journal = {Some journal},
year = {2014},
shorthand = {JD14},
}
Sie müssen nur noch sicherstellen, dass dieses Makro nur aufgerufen wird, wenn es angebracht ist. Während einige Stile bereits verwenden shorthandintro
, tun die einfachen authoryear
und authortitle
Stile dies nicht.
Wir werden sehen, wie man das ändern kann, authoryear
sodass es die Kurzform „intro“ verwendet. Das Standardmakro cite
für authoryear
finden Sie in authoryear.cbx
.
Der Hauptzitatteil, der verwendet wird, wenn keine Kurzschrift vorhanden ist, kann in ein neues Makro ausgelagert werdenlongcite
\newbibmacro*{longcite}{%
\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
Anschließend wird das eigentliche Zitatmakro so geändert, dass beim ersten Zitat ein langes Zitat und eine abgekürzte Einleitung gedruckt werden (die Einleitung wird natürlich nur gedruckt, wenn tatsächlich eine Abkürzung vorhanden ist) und bei nachfolgenden Zitaten das abgekürzte oder lange (normale) Zitat.
\renewbibmacro*{cite}{%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{longcite}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{longcite}
\usebibmacro{shorthandintro}}}
Um den \ifciteseen
Test nutzen zu können, müssen wir den aktivieren citetracker
(zum Beispiel über citetracker=true
).
Andere Zitierstile verwenden andere cite
Makros und die Änderungen müssen dann anders sein. Außerdem funktioniert diese Änderung derzeit nicht mit \textcite
.
MWE
\documentclass[british,a4paper]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[backend=biber,style=authoryear,citetracker=true]{biblatex}
\begin{filecontents*}{\jobname.bib}
@article{jd14,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {Some Title},
journal = {Some Journal},
year = {2014},
shorthand = {JD14},
}
@article{jd13,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {No shorthand here},
journal = {Some Other Journal},
year = {2013},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\newbibmacro*{longcite}{%
\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
\renewbibmacro*{cite}{%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{longcite}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{longcite}
\usebibmacro{shorthandintro}}}
\begin{document}
\cite{jd14} again \cite{jd14} and one more time \cite{jd14}.
Just for comparison \cite{jd13}.
\printbibliography
\end{document}
Wenn Sie "im Folgenden <key>
" dem "im Folgenden zitiert als <key>
" vorziehen, fügen Sie einfach hinzu
\DefineBibliographyStrings{english}{citedas = {hereafter}}
zur Präambel.
Wenn Ihnen die Lösung von Václav Pavlík mit natbib
der Cite-Alias-Funktion gefällt, werden Sie erfreut sein zu hören, dass der Kompatibilitätsmodus biblatex
von (einfach an die Ladezeitoptionen übergeben) diese Funktionen ebenfalls mit (soweit ich weiß) genau derselben Syntax bietet.natbib
natbib=true