Biblatex 创建一个 \citejournal 命令,其中包含 journaltitle、date、title

Biblatex 创建一个 \citejournal 命令,其中包含 journaltitle、date、title

你好,乳胶社区!

我正在尝试设置一个特定的命令来引用期刊文章,该命令不显示作者,而是显示期刊标题、日期和文章标题。

我找到了这个答案:如何在 biblatex 中创建 \citejournal、\citebooktitle、\cite... 命令?

我的问题是它没有提供日期和文章标题所以我对它做了一些修改:

\DeclareCiteCommand{\citejournal}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
    \usebibmacro{journal}
     \usebibmacro{date}
       \usebibmacro{title}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

现在几乎完美了,因为我可以看到期刊和文章标题,但没有显示日期。

以下是我使用的引用的简短 MWE:

\documentclass{article}
\usepackage[style=authoryear,backend=biber]{biblatex}

\DeclareCiteCommand{\citejournal}
      {\usebibmacro{prenote}}
      {\usebibmacro{citeindex}%
        \usebibmacro{journal}
         \usebibmacro{date}
           \usebibmacro{title}}
      {\multicitedelim}
      {\usebibmacro{postnote}}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{test,
  author = {Author, A.},
  date = {2011-06-12},
  title = {Some relevant article},
  journal = {Test journal}
}
\end{filecontents}

\bibliography{\jobname}

\begin{document}

Some text~\citejournal{test}

\printbibliography

\end{document}

答案1

基本上,您会看到datebibmacro 正在被清除,因此没有任何内容可打印。这是您使用authoryear样式的结果biblatex示例文档对于authoryear样式给出了更多的细节:

由于此样式在参考书目中将日期标签打印在作者/编辑之后,因此参考书目中实际上有两个日期:完整日期规范(例如,“2001”、“2006 年 6 月”、“2008 年 1 月 5 日”)和日期标签(例如,“2006a”),如引文中所示。mergedate 选项控制日期规范是否与日期标签合并。

因此,当样式将两个字段合并在一起时,它会省去 bibmacrodate并“禁用”它以避免任何问题。

您的选择是:

  1. 添加mergedata=false以防止样式合并日期,这将保持 bibmacrodate完整,但也(可能)影响参考书目中项目的呈现。

  2. 用重新创建 bibmacro \renewbibmacro*{date}{\printdate}- 这是宏的原始定义。

  3. 在引用命令中切换到使用\usebibmacro{date+extrayear}。这是样式定义的“较新的”bibmacro,用于制作在参考书目中紧跟在作者之后出现的日期标签。

  4. 使用不具备这些特性的不同风格。


无论如何,您可能希望根据需要调整字段之间的分隔符。下面的示例练习了上面的选项 3,并在每个单元之间插入了空格。

\DeclareCiteCommand{\citejournal}
      {\usebibmacro{prenote}}
      {\usebibmacro{citeindex}%
        \usebibmacro{journal}
        \setunit{\addspace} % space delimiter
        \usebibmacro{date+extrayear}
        \setunit{\addspace} % space delimiter
           \usebibmacro{title}}
      {\multicitedelim}
      {\usebibmacro{postnote}}

结果:

围兜

相关内容