![Abreviatura duplicada en las referencias de Natbib](https://rvso.com/image/472711/Abreviatura%20duplicada%20en%20las%20referencias%20de%20Natbib.png)
Tengo una parte de un trabajo de investigación que cita un montón de informes técnicos y gubernamentales. Los nombres son difíciles de manejar, por lo que los siguientesesta buena solución para abreviaturas en natbibLimpié mi bibliografía.
Desafortunadamente, el archivo .bst que estoy usando no funciona bien y coloca el nombre de la organización y la abreviatura en dos entradas diferentes de la bibliografía. Estoy usandoLa increíble economía de Shiro Takeda.bst. Entonces mi pregunta es ¿cómo puedo obtener las citas correctas? Idealmente, sin tener que crear mi propia rama del archivo .bst, pero estoy dispuesto a usar biblatex si existe una solución elegante que preserve el formato. ¡Gracias de antemano!
Aquí hay un MWE que genera mi problema:
\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}
donde mi archivo citations.bib contiene:
@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}
}
Esto es lo que genera, nótese la extraña doble aparición de la "Organización para la Cooperación y el Desarrollo Económico (OCDE)".
Respuesta1
El problema se debe a un detalle de implementación en natbib. Como puede ver en el .bbl
archivo, se generan los siguientes elementos:
\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.
La parte que comienza {\bf
es la salida real en el documento, y antes de eso hay un comando \harvarditem
que lleva la contabilidad de la clave de cita, autor breve, autor completo, año, que corresponde al .aux
archivo y los distintos \cite
comandos.
Natbib se define \harvarditem
como un contenedor alrededor del \bibitem
comando predeterminado. Comprueba si el primer argumento (opcional) está vacío con \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
}%
Sin embargo, esta verificación \if\relax#1\relax
no funciona correctamente cuando #1
contiene un comando como \acroauthor
, porque este comando se expande y al hacerlo #1 (\mbox{#2})
se imprime en ese punto.
Como se explica por ejemplo en¿Cuál es la semántica exacta de \detokenize?, es más seguro comprobar la representación detokenizada del argumento:
\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}
Resultado: