我正在使用 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}}
{}
{}