我有灵活的common.sty
方式,我使用它是我所有的.tex
论文(使用\input
)来提供统一的格式等。
其中common.sty
包括\addbibresource
我在所有论文中经常使用的一般参考书目。
但另外,我希望自动包含某些论文的具体参考书目,即使不必在文件中明确说明.tex
。具体来说,我希望文件my-funky-paper.bib
自动包含在内,当且仅当这样的文件与my-funky-paper.tex
文件位于同一目录中。
问题是我想要将执行此操作的代码放在文件中 common.sty
。
你能教我怎么做吗?这在我所知道的任何编程语言中都很容易做到,但在 Tex 中能做到吗?
答案1
这是一种实现此类\jobname.bib
相关行为的可能方法\IfFileExists
。
请注意,将搜索整个 TeX 输入路径(例如,在 $TEXINPUTS 环境变量中可用),因此如果有两个或多个文件具有相同\jobname
和相关.bib
文件,则此过程可能会失败(即,它将使用找到的第一个文件 ;-))
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mysophisticatedcommonstuff}
\RequirePackage{biblatex}% use with options
% More packages to be loaded
\IfFileExists{\jobname.bib}{%
\addbibresource{\jobname.bib}% Please note that there is an optional argument to \addbibresource!
}{ \typeout{No \jobname.bib file found}}
% more stuff
\endinput
一些进口商文件:
\documentclass{article}
\usepackage{mysophisticatedcommonstuff}
\begin{document}
\end{document}