使用 biblatex 的 printfield 而不进行格式化

使用 biblatex 的 printfield 而不进行格式化

我正在使用 biblatex,并创建了自己的引文,以便以我需要的方式显示参考书目条目中的一些数据。到目前为止,它运行良好。但是,该命令\printfield{<key>}返回格式化的文本。

有没有办法可以让我获取参考书目条目的未格式化的文本,以便我可以根据需要对其进行格式化?

在下面的示例中,我的引文打印了给定书目条目的卷、编号和 doi。但对于这两个元素,我得到了不同的格式(两个书目条目具有相同的数据但类型不同)。例如(参见附图)一个打印,Volume: vol. 18而另一个打印Volume: 18,或者\printfield{doi}命令附加DOI在数字的开头。

在此处输入图片描述

这是我的 MWE:

\begin{filecontents}{bibfile.bib}
@Article{s18041198,
AUTHOR = {Olatinwo, Segun O. and Joubert, Trudi-H.},
TITLE = {Optimizing the Energy and Throughput of a Water-Quality Monitoring System},
JOURNAL = {Sensors},
VOLUME = {18},
YEAR = {2018},
NUMBER = {4},
URL = {http://www.mdpi.com/1424-8220/18/4/1198},
ISSN = {1424-8220},
DOI = {10.3390/s18041198}
}
@inproceedings{s18041197,
AUTHOR = {Olatinwo, Segun O. and Joubert, Trudi-H.},
TITLE = {Optimizing the Energy and Throughput of a Water-Quality Monitoring System},
JOURNAL = {Sensors},
VOLUME = {18},
YEAR = {2018},
NUMBER = {4},
URL = {http://www.mdpi.com/1424-8220/18/4/1198},
ISSN = {1424-8220},
DOI = {10.3390/s18041198}
}
\end{filecontents}


\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{biblatex}

\addbibresource{bibfile.bib}

\DeclareCiteCommand{\mycyte}
{}{
    Volume: \printfield{volume} \\
    Number: \printfield{number} \\
    DOI: \printfield{doi}
}
{}
{}

\begin{document}

\begin{itemize}
    \item \mycyte{s18041198}
    \item \mycyte{s18041197}
\end{itemize}

\printbibliography

\end{document}

答案1

您可以使用它\thefield{...}来访问字段的原始数据。不存在用于名称列表和文字列表的类似命令。

您可以使用\printfield[noformat]{<field>}它来打印字段而无需额外格式化。但我认为你真正想要的是

\DeclareFieldFormat{myvolume}{\bibcplstring{volume}\addcolon\space#1}
\DeclareFieldFormat{mynumber}{\bibcplstring{number}\addcolon\space#1}
\DeclareFieldFormat{mydoi}{DOI\addcolon\space\nolinkurl{#1}}
\DeclareCiteCommand{\mycyte}
  {}
  {\printfield[myvolume]{volume}%
   \setunit{\newline}%
   \printfield[mynumber]{number}%
   \setunit{\newline}%
   \printfield[mydoi]{doi}}
  {}
  {}

相关内容