如何包含目录中的所有 bib 文件?

如何包含目录中的所有 bib 文件?

我设法通过使用和将目录中的所有 bibfile 添加bib/到我的默认资源列表中。\write18pdflatex -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}"

相关内容