
У меня есть центральный файл 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}