如何将 shortjournal 与 biblatex 和 biblatex-chem 一起使用?

如何将 shortjournal 与 biblatex 和 biblatex-chem 一起使用?

我需要使用期刊标题的缩写形式来撰写一篇论文。例如,J.Am.Chem.Soc.代替美国化学会志。我查看了和的文档biblatexbiblatex-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字段。

相关内容