Make bibtex works with embedded bib file

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22487 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Bo Peng 2008-01-11 03:57:22 +00:00
parent f52b73747f
commit b2278c0736

View File

@ -192,22 +192,12 @@ int InsetBibtex::latex(Buffer const & buffer, odocstream & os,
// use such filenames.) // use such filenames.)
// Otherwise, store the (maybe absolute) path to the original, // Otherwise, store the (maybe absolute) path to the original,
// unmangled database name. // unmangled database name.
typedef boost::char_separator<char_type> Separator; EmbeddedFileList const bibs = getFiles(buffer);
typedef boost::tokenizer<Separator, docstring::const_iterator, docstring> Tokenizer; EmbeddedFileList::const_iterator it = bibs.begin();
EmbeddedFileList::const_iterator it_end = bibs.end();
Separator const separator(from_ascii(",").c_str());
// The tokenizer must not be called with temporary strings, since
// it does not make a copy and uses iterators of the string further
// down. getParam returns a reference, so this is OK.
Tokenizer const tokens(getParam("bibfiles"), separator);
Tokenizer::const_iterator const begin = tokens.begin();
Tokenizer::const_iterator const end = tokens.end();
odocstringstream dbs; odocstringstream dbs;
for (Tokenizer::const_iterator it = begin; it != end; ++it) { for (; it != it_end; ++it) {
docstring const input = trim(*it); string utf8input = removeExtension(it->availableFile().absFilename());
// FIXME UNICODE
string utf8input = to_utf8(input);
string database = string database =
normalizeName(buffer, runparams, utf8input, ".bib"); normalizeName(buffer, runparams, utf8input, ".bib");
FileName const try_in_file(makeAbsPath(database + ".bib", buffer.filePath())); FileName const try_in_file(makeAbsPath(database + ".bib", buffer.filePath()));
@ -236,7 +226,7 @@ int InsetBibtex::latex(Buffer const & buffer, odocstream & os,
from_utf8(database)); from_utf8(database));
} }
if (it != begin) if (it != bibs.begin())
dbs << ','; dbs << ',';
// FIXME UNICODE // FIXME UNICODE
dbs << from_utf8(latex_path(database)); dbs << from_utf8(latex_path(database));