![Doppelte Abkürzungen in Natbib-Referenzen](https://rvso.com/image/472711/Doppelte%20Abk%C3%BCrzungen%20in%20Natbib-Referenzen.png)
Ich habe einen Teil einer Forschungsarbeit, in dem eine Reihe von technischen und Regierungsberichten zitiert werden. Die Namen sind unhandlich, daherdiese schöne Lösung für Abkürzungen in natbibIch habe meine Bibliographie bereinigt.
Leider funktioniert die von mir verwendete .bst-Datei nicht einwandfrei und fügt den Namen der Organisation und die Abkürzung in zwei verschiedene Einträge in der Bibliographie ein. Ich verwendeShiro Takedas großartiges econ.bst. Meine Frage ist also, wie ich die Zitate richtig hinbekomme? Idealerweise ohne einen eigenen Zweig der .bst-Datei erstellen zu müssen, aber ich bin offen für die Verwendung von Biblatex, wenn es eine elegante Lösung gibt, bei der die Formatierung erhalten bleibt. Vielen Dank im Voraus!
Hier ist ein MWE, das mein Problem erzeugt:
\documentclass[12pt,letterpaper]{article}
\usepackage[margin=1.5in]{geometry}
\usepackage{natbib}
% Abbreviations in natbib
\usepackage{etoolbox}
\newif\ifabbreviation
\pretocmd{\thebibliography}{\abbreviationfalse}{}{}
\AtBeginDocument{\abbreviationtrue}
\DeclareRobustCommand\acroauthor[2]{%
\ifabbreviation #2\else #1 (\mbox{#2})\fi}
% econ.bst style of choice
\bibliographystyle{aer}
\begin{document}
In Germany, feed-in-tariffs for renewable energy last for 20 years \citep{OECDFIT} while similar Chinese tax cuts last for 6\citep{kpmgwind}.
\bibliography{citations}
\end{document}
wo meine Datei citations.bib Folgendes enthält:
@techreport{OECDFIT,
author={{\acroauthor{Organization for Economic Co-Operation and Development}{OECD}}},
institution = {{Organization for Economic Co-Operation and Development}},
year ={2022},
title = {Renewable Energy Feed-in-tariffs}
}
@techreport{kpmgwind2020,
title = {The Power of Nature: Taxation of Wind Power - 2022 A Country Overview},
pages = {27--29},
author = {Nyberg, Per and Thorvaldsen, Trond and Greni, Jan},
institution = {{KPMG Law Advokatfirma}},
year = {2020}
}
Dies ist, was es erzeugt, beachten Sie das seltsame doppelte Auftreten der „Organisation für wirtschaftliche Zusammenarbeit und Entwicklung (OECD)“.
Antwort1
Das Problem wird durch ein Implementierungsdetail in natbib verursacht. Wie Sie in der .bbl
Datei sehen können, werden die folgenden Elemente generiert:
\harvarditem[Nyberg et al.]{Nyberg, Thorvaldsen and Greni}{2020}{kpmgwind2020}
{\bf Nyberg, Per, Trond Thorvaldsen, and Jan Greni}, ``The Power of Nature:
Taxation of Wind Power - 2022 A Country Overview,'' Technical Report, {KPMG
Law Advokatfirma} 2020.
\harvarditem[{\acroauthor{Organization for Economic Co-Operation and
Development}{OECD}}]{{\acroauthor{Organization for Economic Co-Operation and
Development}{OECD}}}{2022}{OECDFIT}
{\bf {\acroauthor{Organization for Economic Co-Operation and
Development}{OECD}}}, ``Renewable Energy Feed-in-tariffs,'' Technical Report,
{Organization for Economic Co-Operation and Development} 2022.
Der Teil, der mit beginnt, {\bf
ist die eigentliche Ausgabe im Dokument, und davor gibt es einen Befehl \harvarditem
, der die Buchführung für den Citekey, den Kurzautor, den vollständigen Autor und das Jahr übernimmt, der der .aux
Datei und den verschiedenen \cite
Befehlen entspricht.
Natbib definiert es \harvarditem
als Wrapper um den Standardbefehl \bibitem
. Es prüft, ob das erste (optionale) Argument leer ist mit \if\relax#1\relax
:
% definition from natbib.sty
\newcommand\harvarditem[4][]{%
\if\relax#1\relax
\bibitem[#2(#3)]{#4}%
\else
\bibitem[#1(#3)#2]{#4}%
\fi
}%
Allerdings \if\relax#1\relax
funktioniert diese Prüfung nicht richtig, wenn #1
ein Befehl wie enthalten ist \acroauthor
, da dieser Befehl erweitert und dabei #1 (\mbox{#2})
an dieser Stelle gedruckt wird.
Wie beispielsweise inWas ist die genaue Semantik von \detokenize?ist es sicherer, die detokenisierte Darstellung des Arguments zu überprüfen:
\documentclass[12pt,letterpaper]{article}
\usepackage[margin=1.5in]{geometry}
\usepackage{natbib}
\renewcommand\harvarditem[4][]{%
\if\relax\detokenize{#1}\relax
\bibitem[#2(#3)]{#4}%
\else
\bibitem[#1(#3)#2]{#4}%
\fi
}%
% Abbreviations in natbib
\usepackage{etoolbox}
\newif\ifabbreviation
\pretocmd{\thebibliography}{\abbreviationfalse}{}{}
\AtBeginDocument{\abbreviationtrue}
\DeclareRobustCommand\acroauthor[2]{%
\ifabbreviation#2\else#1 (\mbox{#2})\fi}
% econ.bst style of choice
\bibliographystyle{aer}
\begin{document}
In Germany, feed-in-tariffs for renewable energy last for 20 years \citep{OECDFIT} while similar Chinese tax cuts last for 6 \citep{kpmgwind2020}.
\bibliography{techrepauth}
\end{document}
Ergebnis: