mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Set correct path to (biblatex) bibliography databases that are entered relative to child documents.
Fixes: #11105
(cherry picked from commit 2ecc3b09c6
)
This commit is contained in:
parent
c690e8880b
commit
9df09d8cba
@ -3185,9 +3185,27 @@ vector<docstring> const Buffer::prepareBibFilePaths(OutputParams const & runpara
|
|||||||
string utf8input = to_utf8(it->first);
|
string utf8input = to_utf8(it->first);
|
||||||
string database =
|
string database =
|
||||||
prepareFileNameForLaTeX(utf8input, ".bib", runparams.nice);
|
prepareFileNameForLaTeX(utf8input, ".bib", runparams.nice);
|
||||||
FileName const try_in_file =
|
FileName try_in_file =
|
||||||
makeAbsPath(database + ".bib", filePath());
|
makeAbsPath(database + ".bib", filePath());
|
||||||
bool const not_from_texmf = try_in_file.isReadableFile();
|
bool not_from_texmf = try_in_file.isReadableFile();
|
||||||
|
// If the file has not been found, try with the real file name
|
||||||
|
// (it might come from a child in a sub-directory)
|
||||||
|
if (!not_from_texmf) {
|
||||||
|
try_in_file = it->second;
|
||||||
|
if (try_in_file.isReadableFile()) {
|
||||||
|
// Check if the file is in texmf
|
||||||
|
FileName kpsefile(findtexfile(changeExtension(utf8input, "bib"), "bib", true));
|
||||||
|
not_from_texmf = kpsefile.empty()
|
||||||
|
|| kpsefile.absFileName() != try_in_file.absFileName();
|
||||||
|
if (not_from_texmf)
|
||||||
|
// If this exists, make path relative to the master
|
||||||
|
// FIXME Unicode
|
||||||
|
database = removeExtension(
|
||||||
|
prepareFileNameForLaTeX(to_utf8(makeRelPath(from_utf8(try_in_file.absFileName()),
|
||||||
|
from_utf8(filePath()))),
|
||||||
|
".bib", runparams.nice));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!runparams.inComment && !runparams.dryrun && !runparams.nice &&
|
if (!runparams.inComment && !runparams.dryrun && !runparams.nice &&
|
||||||
not_from_texmf) {
|
not_from_texmf) {
|
||||||
|
@ -1094,7 +1094,8 @@ cmd_ret const runCommand(string const & cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FileName const findtexfile(string const & fil, string const & /*format*/)
|
FileName const findtexfile(string const & fil, string const & /*format*/,
|
||||||
|
bool const onlykpse)
|
||||||
{
|
{
|
||||||
/* There is no problem to extend this function too use other
|
/* There is no problem to extend this function too use other
|
||||||
methods to look for files. It could be setup to look
|
methods to look for files. It could be setup to look
|
||||||
@ -1107,9 +1108,11 @@ FileName const findtexfile(string const & fil, string const & /*format*/)
|
|||||||
|
|
||||||
// If the file can be found directly, we just return a
|
// If the file can be found directly, we just return a
|
||||||
// absolute path version of it.
|
// absolute path version of it.
|
||||||
|
if (!onlykpse) {
|
||||||
FileName const absfile(makeAbsPath(fil));
|
FileName const absfile(makeAbsPath(fil));
|
||||||
if (absfile.exists())
|
if (absfile.exists())
|
||||||
return absfile;
|
return absfile;
|
||||||
|
}
|
||||||
|
|
||||||
// Now we try to find it using kpsewhich.
|
// Now we try to find it using kpsewhich.
|
||||||
// It seems from the kpsewhich manual page that it is safe to use
|
// It seems from the kpsewhich manual page that it is safe to use
|
||||||
|
@ -282,7 +282,8 @@ bool readLink(FileName const & file, FileName & link);
|
|||||||
* \param format The file format as used by kpsewhich, e.g. "bib", "bst" etc.
|
* \param format The file format as used by kpsewhich, e.g. "bib", "bst" etc.
|
||||||
*/
|
*/
|
||||||
FileName const findtexfile(std::string const & fil,
|
FileName const findtexfile(std::string const & fil,
|
||||||
std::string const & format);
|
std::string const & format,
|
||||||
|
bool const onlykpse = false);
|
||||||
|
|
||||||
/** \param file1, file2 the two files to be compared. Must have absolute paths.
|
/** \param file1, file2 the two files to be compared. Must have absolute paths.
|
||||||
* \returns 1 if \c file1 has a more recent timestamp than \c file2,
|
* \returns 1 if \c file1 has a more recent timestamp than \c file2,
|
||||||
|
@ -94,7 +94,7 @@ What's new
|
|||||||
|
|
||||||
* DOCUMENT INPUT/OUTPUT
|
* DOCUMENT INPUT/OUTPUT
|
||||||
|
|
||||||
- Fix language settings annd line spacing in InPreamble-titles
|
- Fix language settings and line spacing in InPreamble-titles
|
||||||
(bug 9332, 1049).
|
(bug 9332, 1049).
|
||||||
|
|
||||||
- Respect 'literal' setting when calculating longest bibitem (bug 10817).
|
- Respect 'literal' setting when calculating longest bibitem (bug 10817).
|
||||||
@ -104,6 +104,9 @@ What's new
|
|||||||
|
|
||||||
- Fix polyglossia language switches for Arabic (bug 11057).
|
- Fix polyglossia language switches for Arabic (bug 11057).
|
||||||
|
|
||||||
|
- Set correct path to (biblatex) bibliography databases that are entered
|
||||||
|
relative to child documents (bug 11105).
|
||||||
|
|
||||||
|
|
||||||
* LYX2LYX
|
* LYX2LYX
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user