我目前正在撰写的一篇论文引用了一些我想快照以供参考的在线资源。我的 bib 文件可以得到增强,以包含file
此类已保存快照的条目。
我想知道是否/如何使用主文档的输出来创建第二个文档作为快照的索引。理想情况下,可以打开索引 PDF,只显示参考子集,其中包含file
可以单击以访问快照的条目。
不幸的是,使用关键词搜索互联网并没有证明有什么帮助biblatex, reuse, bibliogpraphy
......
答案1
没有官方接口可以直接重用不同文档中的参考书目。当然,您可以使用同一个.bib
文件,但这不足以获得与另一个文档完全相同的输出。
在如何导入/打印从单独/外部文档创建的参考书目?和如何将 refsection 和 xcite 一起使用?你可以通过阅读另一份文件的文件来找到一种策略来重用其参考书目.bbl
。原则上,这也可能对你有帮助。这个策略有很多注意事项,但这些似乎对你的想法是可以接受的。
假设父文件myparent.tex
大致如下
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@online{elk,
author = {Anne Elk},
title = {A Theory on Brontosauruses},
year = {1972},
url = {https://example.edu/~elk/bronto.pdf},
file = {./elk-bronto.pdf},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,elk,worman,markey}
\printbibliography
\end{document}
然后,您可以\importbibfrom
按照链接中的定义使用.bbl
文件myparent
导入子文档。(请注意,要使此方法有效,两个文档必须位于同一工作目录中,或者您必须手动将其复制myparent.bbl
到与子文档相同的目录中。)
导入父文件的数据后,只需打印字段file
(默认情况下会忽略)并仅过滤带有字段的条目file
。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\DefineBibliographyStrings{english}{
file = {file archived at},
}
\DeclareFieldFormat{file}{\bibstring{file}\addspace\url{#1}}
\renewbibmacro*{finentry}{%
\newunit
\printfield{file}%
\finentry}
\defbibcheck{hasfile}{%
\iffieldundef{file}{\skipentry}{}}
\makeatletter
\newcommand*{\importbibfrom}[1]{%
\def\blx@bblfile{%
\blx@secinit
\begingroup
\blx@bblstart
\InputIfFileExists{#1.bbl}
{\blx@info@noline{... file '#1.bbl' found}%
\global\toggletrue{blx@bbldone}}
{\blx@info@noline{... file '#1.bbl' not found}%
\typeout{No file #1.bbl.}}%
\blx@bblend
\endgroup
% global sorting as this is called at BeginDocument
\csnumgdef{blx@labelnumber@\the\c@refsection}{0}}}
\global\let\blx@rerun@biber\relax
\makeatother
\importbibfrom{myparent}
\begin{document}
\printbibliography[check=hasfile]
\end{document}