![使用 biblatex 使期刊名称在文本中以简短形式出现,在参考书目中以完整形式出现](https://linux22.com/image/306182/%E4%BD%BF%E7%94%A8%20biblatex%20%E4%BD%BF%E6%9C%9F%E5%88%8A%E5%90%8D%E7%A7%B0%E5%9C%A8%E6%96%87%E6%9C%AC%E4%B8%AD%E4%BB%A5%E7%AE%80%E7%9F%AD%E5%BD%A2%E5%BC%8F%E5%87%BA%E7%8E%B0%EF%BC%8C%E5%9C%A8%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE%E4%B8%AD%E4%BB%A5%E5%AE%8C%E6%95%B4%E5%BD%A2%E5%BC%8F%E5%87%BA%E7%8E%B0.png)
我有一个参考书目文件,其中包含期刊名称字段中的定义,例如\pra
,并且我在我的文件中将其定义为\def \pra {Phys. Rev. A}
,这正是我想要的参考书目。
现在我还希望能够有类似的命令\citearticleshort
,它可以插入期刊名称的简写,例如在本例中为 PRA,加上卷号和可能的页码。
我怎样才能\pra
在一种情况下扩展到 Phys. Rev. A,在另一种情况下扩展到 PRA?我看到 biblatex 中有类似映射的功能,但我不知道如何使用它来解决我的问题。
答案1
biblatex
有\ifcitation
和\ifbibliography
测试分别检查我们是否在引文或参考书目中。
在你的情况下,我们可以定义\pra
为
\newcommand*{\pra}{%
\ifcitation
{PRA}
{Phys. Rev. A}}
在引用中扩展\pra
为“PRA”,在其他地方扩展为“Phys. Rev. A”(尤其是在参考书目中)。
平均能量损失
\documentclass{article}
\usepackage[style=authoryear,backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{pra,
author = {Anne Uthor},
title = {Title},
journal = {\pra},
year = {2008},
volume = {15},
number = {7},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\newcommand*{\pra}{\ifcitation{PRA}{Phys. Rev. A}}
\begin{document}
\fullcite{pra}
\printbibliography
\end{document}