我的研究论文中有一部分引用了大量技术和政府报告。这些名字很笨拙,因此这是 natbib 中缩写的一个很好的解决方案我清理了我的参考书目。
不幸的是,我使用的 .bst 文件播放效果不佳,将组织名称和缩写放在参考书目中的两个不同条目中。我正在使用Shiro Takeda 的精彩经济学.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}
}
它产生的结果是这样的,请注意“经济合作与发展组织(OECD)”这个奇怪的双重出现。
答案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
相对应的 citekey、短作者、完整作者、年份进行记账。.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}
结果: