Дублирующая аббревиатура в ссылках Natbib

Дублирующая аббревиатура в ссылках Natbib

У меня есть часть исследовательской работы, которая цитирует кучу технических и правительственных отчетов. Названия громоздкие, поэтому последуемэто хорошее решение для сокращений в natbibЯ привел в порядок свою библиографию.

К сожалению, файл .bst, который я использую, работает не очень хорошо и помещает название организации и аббревиатуру в две разные записи в библиографии. Я используюПотрясающий econ.bst Сиро Такеды. Так что мой вопрос в том, как мне правильно оформить цитаты? В идеале, не создавая собственную ветку файла .bst, но я открыт для использования biblatex, если есть элегантное решение, которое сохранит форматирование. Заранее спасибо!

Вот MWE, который порождает мою проблему:

\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}

где мой файл citations.bib содержит:

@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}
}

Вот что он генерирует, обратите внимание на странное двойное появление «Организации экономического сотрудничества и развития (ОЭСР)».

испорченные ссылки

решение1

Проблема вызвана деталью реализации в natbib. Как вы можете видеть в файле .bbl, генерируются следующие элементы:

\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.

Часть, начинающаяся с, {\bfпредставляет собой фактический вывод в документе, а до этого идет команда \harvarditem, которая ведет учет ключа цитаты, краткого автора, полного автора, года, которые соответствуют файлу .auxи различным \citeкомандам.

Natbib определяет \harvarditemкак обертку вокруг \bibitemкоманды по умолчанию. Он проверяет, является ли первый (необязательный) аргумент пустым с помощью \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
}%

Однако эта проверка \if\relax#1\relaxне работает должным образом, если #1содержит команду типа \acroauthor, поскольку эта команда расширяется и при этом #1 (\mbox{#2})выводится в этой точке.

Как поясняется, например, вКакова точная семантика \detokenize?, безопаснее проверить наличие детокенизированного представления аргумента:

\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}

Результат:

введите описание изображения здесь

Связанный контент