我设法通过使用和将目录中的所有 bibfile 添加bib/
到我的默认资源列表中。\write18
pdflatex -shell-escape
有没有不太麻烦的方法将目录中的所有 bibfile 添加到资源列表中?
\RequirePackage{filecontents}
\begin{filecontents}{bib/1.bib}
@book{key1, title="title1", author="author1", year="2001"}
\end{filecontents}
\begin{filecontents}{bib/2.bib}
@book{key2, title="title2", author="author2", year="2002"}
\end{filecontents}
\begin{filecontents}{bib/3.bib}
@book{key3, title="title3", author="author3", year="2003"}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\immediate\write18
{for i in bib/*; do echo "\string\\\string\\addbibresource\string{$i\string}"; done >bibresources.tex}
\input{bibresources}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
您不需要 shell 转义,因为您可以从 shell 中执行此操作。
\RequirePackage{filecontents}
\begin{filecontents}{bib/1.bib}
@book{key1, title="title1", author="author1", year="2001"}
\end{filecontents}
\begin{filecontents}{bib/2.bib}
@book{key2, title="title2", author="author2", year="2002"}
\end{filecontents}
\begin{filecontents}{bib/3.bib}
@book{key3, title="title3", author="author3", year="2003"}
\end{filecontents}
\documentclass{article}
\usepackage{xparse}
\usepackage[backend=biber]{biblatex}
\ExplSyntaxOn
\NewDocumentCommand{\addbibresources}{m}
{
\clist_set:NV \l_tmpa_clist \bibresources
\clist_map_inline:Nn \l_tmpa_clist
{
\addbibresource{#1/##1}
}
}
\ExplSyntaxOff
\addbibresources{bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
如果rostov.tex
是文件,你可以调用 LaTeX 运行
pdflatex "\def\bibresources{$(ls -m bib)}\input{rostov}"