我需要使用期刊标题的缩写形式来撰写一篇论文。例如,J.Am.Chem.Soc.代替美国化学会志。我查看了和的文档biblatex
,biblatex-chem
找到了shortjournal
字段,我假设这是您放置缩写期刊名称的地方。如何让它与biblatex
和一起工作biblatex-chem
?我希望我的.bib
包含两种形式,并根据我正在编写的文档在它们之间切换。我真的不想走 JabRef 交换字段的路线journaltitle
。
答案1
这biblatex
手动的shortjournal
说的条目
的缩写或缩写形式
journaltitle
。标准参考书目样式不使用。
我的理解是,它更像是一个非正式的缩写(“JACS”代表美国化学会志,例如)而不是正式头衔。它当然不是说它是期刊名称的 ISO 缩写。尽可能biblatex-chem
遵循标准biblatex
样式,因此使用该journal
字段。
所有化学书目样式都使用期刊的缩写名称。所以我只是将缩写存储在我的数据库中。但是,如果你想要一种灵活的方法,一种方法是使用一种简单的基于宏的方法。我会基于期刊 CODEN。 就像是
\makeatletter
\newcommand*{\CODEN}[1]{%
\ifcsname CODEN@#1\endcsname
\expandafter\@firstoftwo\csname CODEN@#1\expandafter\endcsname
\else
#1%
\fi
}
\newcommand*{\CODEN@JACSAT}
{{J. Am. Chem. Soc.}{Journal of the American Chemical Society}}
...
\makeatother
如上所述,这将打印缩写,但如果您将其替换\@firstoftwo
为\@secondoftwo
,它将打印全名。这个想法是,您可以\CODEN{JACSAT}
在您的领域中使用journal
:有点像使用 BibTeX 字符串,但可以通过 LaTeX 进行控制。
(几年前我确实考虑过编写一个包来完成类似的工作,但当时似乎不值得。如果有兴趣,我可以很容易地将上述概念包装成一个包:这只是一个添加所有 CODEN 的问题。)
第二种方法是修改适当的宏
\renewbibmacro*{journal}{%
\iffieldundef{shortjournal}
{%
\iffieldundef{journaltitle}
{}
{%
\printtext[journaltitle]
{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}%
}%
}%
}
{\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}%
}
如果可用则使用该shortjournal
字段,如果不可用则使用标准journaltitle
字段。