![如何从 biblatex 中的 citefield 获取参考类型(例如,如果它是 @book,@article,...)?](https://linux22.com/image/433905/%E5%A6%82%E4%BD%95%E4%BB%8E%20biblatex%20%E4%B8%AD%E7%9A%84%20citefield%20%E8%8E%B7%E5%8F%96%E5%8F%82%E8%80%83%E7%B1%BB%E5%9E%8B%EF%BC%88%E4%BE%8B%E5%A6%82%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%AE%83%E6%98%AF%20%40book%EF%BC%8C%40article%EF%BC%8C...%EF%BC%89%EF%BC%9F.png)
我想看看标题、年份、摘要和类型在我的草稿中引用参考文献(例如,如果它是书籍,文章等)(以便能够检查它是否正确(用于调试;)),我有很多参考文献)。
我拥有的
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}