#include <sstream>
#include <vector>
-using lyx::support::changeExtension;
-using lyx::support::makeAbsPath;
-using lyx::support::makeRelPath;
-using lyx::support::rtrim;
-using lyx::support::suffixIs;
-using lyx::support::contains;
-using lyx::support::subst;
+
+namespace lyx {
+
+using support::addExtension;
+using support::changeExtension;
+using support::FileName;
+using support::makeAbsPath;
+using support::makeRelPath;
+using support::rtrim;
+using support::suffixIs;
+using support::contains;
+using support::subst;
using std::cerr;
using std::endl;
* No starred form other than "cite*" known.
*/
char const * const known_jurabib_commands[] = { "cite", "citet", "citep",
-"citealt", "citealp", "citeauthor", "citeyear", "citeyearpar", "fullcite",
+"citealt", "citealp", "citeauthor", "citeyear", "citeyearpar",
// jurabib commands not (yet) supported by LyX:
+// "fullcite",
// "footcite", "footcitet", "footcitep", "footcitealt", "footcitealp",
// "footciteauthor", "footciteyear", "footciteyearpar",
"citefield", "citetitle", "cite*", 0 };
/// the same as known_quotes with .lyx names
char const * const known_coded_quotes[] = { "gld", "grd", "gld",
-"grd", "gls", "fls", "frd", 0};
+"grd", "gls", "fls", "frs", 0};
/// LaTeX names for font sizes
char const * const known_sizes[] = { "tiny", "scriptsize", "footnotesize",
string find_file(string const & name, string const & path,
char const * const * extensions)
{
+ // FIXME UNICODE encoding of name and path may be wrong (makeAbsPath
+ // expects utf8)
for (char const * const * what = extensions; *what; ++what) {
- // We don't use ChangeExtension() because it does the wrong
- // thing if name contains a dot.
- string const trial = name + '.' + (*what);
- if (fs::exists(makeAbsPath(trial, path)))
+ string const trial = addExtension(name, *what);
+ if (fs::exists(makeAbsPath(trial, path).toFilesystemEncoding()))
return trial;
}
return string();
{
if (lyx::support::absolutePath(name))
return;
- name = makeRelPath(makeAbsPath(name, getMasterFilePath()),
+ // FIXME UNICODE encoding of name may be wrong (makeAbsPath expects
+ // utf8)
+ name = makeRelPath(makeAbsPath(name, getMasterFilePath()).absFilename(),
getParentFilePath());
}
return;
}
- context.check_end_layout(os);
+ // We use new_paragraph instead of check_end_layout because the stuff
+ // following the noweb chunk needs to start with a \begin_layout.
+ // This may create a new paragraph even if there was none in the
+ // noweb file, but the alternative is an invalid LyX file. Since
+ // noweb code chunks are implemented with a layout style in LyX they
+ // always must be in an own paragraph.
+ context.new_paragraph(os);
Context newcontext(true, context.textclass, context.textclass["Scrap"]);
newcontext.check_layout(os);
os << name;
string const path = getMasterFilePath();
// We want to preserve relative / absolute filenames,
// therefore path is only used for testing
- if (!fs::exists(makeAbsPath(name, path))) {
+ // FIXME UNICODE encoding of name and path may be
+ // wrong (makeAbsPath expects utf8)
+ if (!fs::exists(makeAbsPath(name, path).toFilesystemEncoding())) {
// The file extension is probably missing.
// Now try to find it out.
string const dvips_name =
name = pdftex_name;
}
- if (fs::exists(makeAbsPath(name, path)))
+ // FIXME UNICODE encoding of name and path may be
+ // wrong (makeAbsPath expects utf8)
+ if (fs::exists(makeAbsPath(name, path).toFilesystemEncoding()))
fix_relative_filename(name);
else
cerr << "Warning: Could not find graphics file '"
|| t.cs() == "~" || t.cs() == "." || t.cs() == "=") {
// we need the trim as the LyX parser chokes on such spaces
context.check_layout(os);
- os << "\n\\i \\" << t.cs() << "{"
+ os << "\\i \\" << t.cs() << "{"
<< trim(parse_text_snippet(p, FLAG_ITEM, outer, context), " ")
<< "}\n";
}
skip_braces(p); // eat {}
}
- else if (t.cs() == "i" || t.cs() == "j") {
+ else if (t.cs() == "i" || t.cs() == "j" || t.cs() == "l" ||
+ t.cs() == "L") {
context.check_layout(os);
- os << "\\" << t.cs() << ' ';
+ os << "\\i \\" << t.cs() << "{}\n";
skip_braces(p); // eat {}
}
string const path = getMasterFilePath();
// We want to preserve relative / absolute filenames,
// therefore path is only used for testing
+ // FIXME UNICODE encoding of filename and path may be
+ // wrong (makeAbsPath expects utf8)
if (t.cs() == "include" &&
- !fs::exists(makeAbsPath(filename, path))) {
+ !fs::exists(makeAbsPath(filename, path).toFilesystemEncoding())) {
// The file extension is probably missing.
// Now try to find it out.
string const tex_name =
if (!tex_name.empty())
filename = tex_name;
}
- if (fs::exists(makeAbsPath(filename, path))) {
+ // FIXME UNICODE encoding of filename and path may be
+ // wrong (makeAbsPath expects utf8)
+ if (fs::exists(makeAbsPath(filename, path).toFilesystemEncoding())) {
string const abstexname =
- makeAbsPath(filename, path);
+ makeAbsPath(filename, path).absFilename();
string const abslyxname =
changeExtension(abstexname, ".lyx");
fix_relative_filename(filename);
string const lyxname =
changeExtension(filename, ".lyx");
if (t.cs() != "verbatiminput" &&
- tex2lyx(abstexname, abslyxname)) {
+ tex2lyx(abstexname, FileName(abslyxname))) {
os << name << '{' << lyxname << "}\n";
} else {
os << name << '{' << filename << "}\n";
skip_braces(p);
}
- else if (t.cs() == "newpage") {
+ else if (t.cs() == "newpage" ||
+ t.cs() == "clearpage" ||
+ t.cs() == "cleardoublepage") {
context.check_layout(os);
- // FIXME: what about \\clearpage and \\pagebreak?
- os << "\n\\newpage\n";
+ // FIXME: what about \\pagebreak?
+ os << "\n\\" << t.cs() << "\n";
skip_braces(p); // eat {}
}
}
// }])
+
+
+} // namespace lyx