我正在使用大学提供的用于论文排版的自定义类。该类会自动在文档中包含 BibTex 引用。我想修改该类以使其与 BibLaTex 兼容。在该类中,.bib 文件路径通过命令从文档传递到类。问题是 BibLaTeX 命令\addbibresource{}
无法将变量作为其输入进行处理。有关更多详细信息,请参阅下面的 MWE。
在处理变量之前,是否有一个命令可以用来扩展它\addbibresource{}
?
平均能量损失
主要文件
\documentclass{test}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\ConfigurationDocument{fichiers-references = {references.bib}}
\begin{document}
\cite{franssila_introduction_2010}
\printbibliography
\end{document}
测试.cls
\RequirePackage{expl3}
\ProvidesExplClass{test}{2018/09/26}{2.0}{MWE}
\tl_new:N \g_fichiers_references_tl
\LoadClass[letterpaper,12pt]{book}
\RequirePackage{xparse,etoolbox}
\RequirePackage[backend=biber, style=ieee, citestyle=ieee, url=false]{biblatex}
\DeclareDocumentCommand \ConfigurationDocument { m }
{ \keys_set:nn { udes-genie-these } { #1 } }
\keys_define:nn {udes-genie-these}
{
fichiers-references .tl_gset:N = \g_fichiers_references_tl,
fichiers-references .value_required:n = true,
}
\addbibresource{\g_fichiers_references_tl}
参考文献.bib
@book{franssila_introduction_2010,
location = {Chichester, {UK}},
edition = {2e édition},
title = {Introduction to microfabrication},
publisher = {Wiley},
author = {Franssila, Sami},
date = {2010}
}
错误信息
! Undefined control sequence.
<argument> \g
_fichiers_references_tl
l.21 \addbibresource{\g_fichiers_references_tl}
答案1
我建议使用clist
作为参考而不是tl
变量。
然后您可以使用\clist_map_function:NN \g_fichiers_references_clist \addbibresource
内部\ConfigurationDocument
来添加每个书目资源。
这样做的好处是您可以在同一个键中添加多个引用:
\ConfigurationDocument{fichiers-references = {references.bib, biblatex-exmaples.bib}}
因此test.cls
变成:
\RequirePackage{expl3}
\ProvidesExplClass{test}{2018/09/26}{2.0}{MWE}
\clist_new:N \g_fichiers_references_clist
\LoadClass[letterpaper,12pt]{book}
\RequirePackage{xparse}
\RequirePackage[backend=biber, style=ieee, citestyle=ieee, url=false]{biblatex}
\DeclareDocumentCommand \ConfigurationDocument { m }
{
\keys_set:nn { udes-genie-these } { #1 }
\clist_map_function:NN \g_fichiers_references_clist \addbibresource
}
\keys_define:nn {udes-genie-these}
{
fichiers-references .clist_gset:N = \g_fichiers_references_clist,
fichiers-references .value_required:n = true,
}