string Buffer::latexName(bool const no_path) const
{
- string const name = changeExtension(makeLatexName(absFileName()), ".tex");
- return no_path ? onlyFilename(name) : name;
+ FileName latex_name = makeLatexName(pimpl_->filename);
+ return no_path ? latex_name.onlyFileName()
+ : latex_name.absFilename();
}
// Substitutes spaces with underscores in filename (and path)
-string const makeLatexName(string const & file)
+FileName const makeLatexName(FileName const & file)
{
- string name = onlyFilename(file);
- string const path = onlyPath(file);
+ string name = file.onlyFileName();
+ string const path = file.onlyPath().absFilename() + "/";
// ok so we scan through the string twice, but who cares.
+ // FIXME: in Unicode time this will break for sure! There is
+ // a non-latin world out there...
string const keep = "abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"@!'()*+,-./0123456789:;<=>?[]`|";
while ((pos = name.find_first_not_of(keep, pos)) != string::npos)
name[pos++] = '_';
- return addName(path, name);
+ FileName latex_name(path + name);
+ latex_name.changeExtension(".tex");
+ return latex_name;
}
latex_path_dots dots = LEAVE_DOTS);
/// Substitutes active latex characters with underscores in filename
-std::string const makeLatexName(std::string const & file);
+FileName const makeLatexName(FileName const & file);
/** Put the name in quotes suitable for the current shell or python,
depending on \p style. */