我有一个文档,其中包含近 100 个开源文件,这些文件在整个过程中被反复引用。此外,每个文件都有一个 URL、下载 URL、MD5 哈希值等。
有没有一种快速简便的方法来创建包含所有这些信息的外部文件(例如 .ent),然后引用可发布文件(或 .tex)中的每个项目?这样,每当更新文件时,我只需更改静态文件中的单个条目,整个文档中对该文件的所有引用也会更新?
提前致谢。
答案1
即使你可能biblatex
只知道它是一种创建书目的工具,但它是一个功能强大的工具,可以用于很多事情:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{database.ent}
\usepackage{filecontents}
\begin{filecontents*}{database.ent}
@file{test,
usera = {www.URL.com},
userb = {www.downloadURL.com},
userc = "md5123456"
}
\end{filecontents*}
\DeclareCiteCommand{\citeurl}
{}
{\printfield{usera}}
{}
{}
\DeclareCiteCommand{\citedownload}
{}
{\printfield{userb}}
{}
{}
\DeclareCiteCommand{\citemd}
{}
{\printfield{userc}}
{}
{}
\begin{document}
\citeurl{test}
\citedownload{test}
\citemd{test}
\end{document}
如果您不想记住usera
应该是哪个字段,您可以创建自己的字段:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{database.ent}
\usepackage{filecontents}
\begin{filecontents*}{database.ent}
@file{test,
md = "md5123456"
}
\end{filecontents*}
\begin{filecontents*}{test.dbx}
\DeclareDatamodelFields[type=field,datatype=verbatim]{md}
\DeclareDatamodelEntryfields{md}
\end{filecontents*}
\DeclareCiteCommand{\citemd}
{}
{\printfield{md}}
{}
{}
\begin{document}
\citemd{test}
\end{document}
[这里重要的是,内容\DeclareDatamodel
不能放在你当前的 tex 文件中,而必须放在外部文件中,test.dbx
在此示例中]