如何从 biblatex 中的 citefield 获取参考类型(例如,如果它是 @book,@article,...)?

如何从 biblatex 中的 citefield 获取参考类型(例如,如果它是 @book,@article,...)?

我想看看标题、年份、摘要和类型在我的草稿中引用参考文献(例如,如果它是书籍,文章等)(以便能够检查它是否正确(用于调试;)),我有很多参考文献)。

我拥有的

Bibtex 条目:

@article{Wang2016,
    author = {Wang, Jane Ling and Chiou, Jeng Min and M{\"{u}}ller, Hans Georg},
    issn = {2326831X},
    journal = {Annual Review of Statistics and Its Application},
    month = {jun},
    number = {1},
    pages = {257--295},
    publisher = {Annual Reviews Inc.},
    title = {{Functional Data Analysis}},
    url = {http://www.annualreviews.org/doi/10.1146/annurev-statistics-041715-033624},
    volume = {3},
    year = {2016}
}

我的代码:

    \renewcommand{\cite}[1]{
    \oldcite{#1} {
        \color{gray} \citefield{#1}{title}, \textit{\citefield{#1}{journaltitle}},
        \citefield{#1}{year} \textbackslash cite\{$#1$\} }
    }{} %
.
.
.
\cite{Wang2016}

结果:

[10] 功能数据分析,统计与应用年度评论,2016\引用{2016}

我想要的是:

[10]@文章功能数据分析,统计与应用年度评论,2016\引用{2016}

我的问题

我怎样才能引用引用类型(@article、@book 等等)?

\citefield{#1}{type}对我来说不起作用(根据https://www.ctan.org/pkg/biblatex这是不同的东西。

答案1

作为伊万 在评论中指出,该字段可用作entrytype,因此\citefield{#1}{entrytype}可以工作。

\...cite通常,用 定义一个新命令比\DeclareCiteCommand将几个\...cite...命令合并为一个命令更加优雅且更安全(出于引用跟踪的目的)\newcommand

您可以按照以下方法操作。使用\autocite而不是\cite作为您的常用命令(使用编辑器快速搜索并替换\cite{->\autocite{\cite[->\autocite[应该可以轻松完成此操作),这样您就可以轻松地在调试引用命令和常规引用之间切换。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=numeric]{biblatex}

\DeclareFieldFormat{entrytype}{\texttt{@#1}}
\DeclareFieldFormat{entrykey}{\texttt{\textbackslash autocite\{#1\}}}

\newbibmacro{checkcite}{%
  \printtext[brackets]{%
    \usebibmacro{cite}%
  }%
  \setunit{\addspace}%
  \printfield{entrytype}%
  \setunit{\addspace}%
  \usebibmacro{title}%
  \setunit{\addcomma\space}%
  \ifentrytype{article}
    {\usebibmacro{journal}}
    {}%
  \setunit{\addcomma\space}%
  \usebibmacro{date}%
  \setunit{\addspace}%
  \printfield{entrykey}%
}

\DeclareCiteCommand{\checkcite}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{checkcite}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareMultiCiteCommand{\checkcite}{\checkcites}{\multicitedelim}
\DeclareAutoCiteCommand{check}{\checkcite}{\checkcites}

\ExecuteBibliographyOptions{autocite=check}
% use autocite=plain or autocite=inline
% to go back to normal citations

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}

\printbibliography
\end{document}

[1] @article《从静电势和矩推导原子电荷的方法比较》,《计算化学杂志》,1998 年 \autocite{sigfridsson}

相关内容