我有一个.bib
文件,但不是所有的参考文献都被引用。
我想在.csv
文件中列出所有引用的(仅)参考文献。
但是,该.bib
文件也包含未引用的参考文献。
我的理解是,该.bbl
文件仅包含引用的参考文献。
那么,如何将引用的参考文献导出到文件.CSV
?
答案1
根据您使用的是biblatex
还是 BibTeX,.bbl
如果您想恢复所有数据,该文件可能不适合由机器读取。如果您只想恢复引用的条目,而不想恢复其他数据,那么这不太重要。
BibTeX 书目生成的文件.bbl
包含可排版的文本,因此如果您想恢复条目数据,则需要进行相当复杂的解析。
\begin{thebibliography}{1}
\bibitem[Elk(1972)]{elk}
Anne Elk.
\newblock \emph{A Theory on Brontosauruses}.
\newblock Monthy \& Co., 1972.
\end{thebibliography}
由于样式决定了写入.bbl
文件的内容,因此某些数据可能会丢失。
.bbl
生成的文件包含biblatex
结构化、LaTeX 可读格式的输入数据,理论上可以对其进行解析以返回所有输入数据。
\refsection{0}
\datalist[entry]{nyt/global//global/global}
\entry{elk}{book}{}
\name{author}{1}{}{%
{{un=0,uniquepart=base,hash=6a9b0705c275273262103333472cc656}{%
family={Elk},
familyi={E\bibinitperiod},
given={Anne},
giveni={A\bibinitperiod},
givenun=0}}%
}
\list{location}{1}{%
{London}%
}
\list{publisher}{1}{%
{Monthy \& Co.}%
}
\strng{namehash}{6a9b0705c275273262103333472cc656}
\strng{fullhash}{6a9b0705c275273262103333472cc656}
\strng{bibnamehash}{6a9b0705c275273262103333472cc656}
\strng{authorbibnamehash}{6a9b0705c275273262103333472cc656}
\strng{authornamehash}{6a9b0705c275273262103333472cc656}
\strng{authorfullhash}{6a9b0705c275273262103333472cc656}
\field{sortinit}{E}
\field{sortinithash}{8da8a182d344d5b9047633dfc0cc9131}
\field{extradatescope}{labelyear}
\field{labeldatesource}{year}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{title}{A Theory on Brontosauruses}
\field{year}{1972}
\endentry
\enddatalist
\endrefsection
\endinput
.bbl
生成的文件将biblatex
包含仅与当前文档上下文相关的上下文特定数据。当您想将数据导出到 时,这可能是或可能不是您想要的.csv
。
但我会走一条不同的路。我会使用创建仅包含更大 .bib 文件中引用的参考文献的 .bib 文件生成.bib
仅包含引用参考文献的文件,然后使用库直接读取该.bib
文件。
答案2
您可以从文件中获取文档中的完整引用列表.aux
。每个命令都将导致以以下格式\cite
在文件中写入一个条目.aux
\citation{REFNAME}
REFNAME
您在命令中使用的名称在哪里\cite
。它将\citation
为多引用\cite
命令中的每个引用创建一个单独的命令,因此,如果您\cite{foo,bar}
在文档中输入,您将看到
\citation{foo}
\citation{bar}
从这里,你可以做你想做的事情来生成 CSV 文件,所以如果你使用的是 Unix 系统(包括 MacOS 和 Linux),你可以这样写
grep '\\citation` my.aux | sort | uniq
这将为您提供文档中引用的所有参考名称的列表,其中删除了重复项。