我的主文件夹中有一个中心 BibTeX 文件。有时,我会将其用作子文件夹中的 git 子模块central-bibtex
。相对位置可能会有所不同。由于我希望序言能帮我完成工作,因此我需要它在几个可能的位置找到它。这些包括:
../../central-bibtex/Central
central-bibtex/Central
../../zentrale_BibTeX/Central
一旦我有了更好的语法,我就会添加更多:
../central-bibtex/Central
../zentrale_BibTeX/Central
../../../zentrale_BibTeX/Central
到目前为止,我有这个,它似乎有效:
\IfFileExists{../../central-bibtex/Central}
{\newcommand{\bibliographyfile}{../../central-bibtex/Central}}
{
\IfFileExists{central-bibtex/Central}
{\newcommand{\bibliographyfile}{central-bibtex/Central}}
{\newcommand{\bibliographyfile}{../../zentrale_BibTeX/Central}}
}
有什么简单的方法可以做到这一点吗?我在 Python 中思考:
dirs = ['../../central-bibtex', 'central-bibtex', '../../zentrale_BibTeX']
for dir in dirs:
if os.path.isfile(dir + '/Central'):
bibliographyfile = dir + '/Central'
我已经尝试过 TikZ 和\foreach
,但\bibliographyfile
没有设置任何东西:
\newcommand\bibliographyfile{None}
\foreach \path in {
../../central-bibtex/Central,
central-bibtex/Central,
../../zentrale_BibTeX/Central,
/home/mu/Dokumente/Studium/zentrale_BibTeX/Central.bib
}
{
\AtEndDocument{\path}
\IfFileExists{\path}
{\renewcommand\bibliographyfile{\path}}
{}
}
答案1
由于\foreach
循环变量无法在循环中存活,因此您需要扩展要保存的值。下面我使用一个\xdef
来做到这一点:
笔记:
- 我从路径中删除了下划线,因为这可能会导致一些问题,但这个网站上应该有可以提供帮助的解决方案。
代码:
\documentclass{article}
\usepackage{tikz}
\newcommand\bibliographyfile{}
\foreach \FileNameWithPath in {
../central-bibtex/Central.bib,
central-bibtex/Central.bib,
../../zentrale-BibTeX/Central.bib,
/home/mu/Dokumente/Studium/zentrale-BibTeX/Central.bib
}{%
%\AtEndDocument{\path}% <-- not sure what this was for
\IfFileExists{\FileNameWithPath}{%
%\xdef\bibliographyfile{\FileNameWithPath}%
% Per egreg's suggestions, replaced the above with:
\expandafter\gdef\expandafter\bibliographyfile\expandafter{\FileNameWithPath}
}{}%
}
\begin{document}
Located file: \bibliographyfile
\end{document}