biblio_style = "plain";
use_bibtopic = false;
use_indices = false;
+ save_transient_properties = true;
track_changes = false;
output_changes = false;
use_default_options = true;
fonts_math[1] = "auto";
fonts_default_family = "default";
useNonTeXFonts = false;
+ use_microtype = false;
fonts_expert_sc = false;
fonts_old_figures = false;
fonts_sans_scale[0] = 100;
frontend::Alert::warning(_("Document class not available"),
msg, true);
}
+ } else if (token == "\\save_transient_properties") {
+ lex >> save_transient_properties;
} else if (token == "\\origin") {
lex.eatLine();
origin = lex.getString();
lex >> fonts_typewriter_scale[1];
} else if (token == "\\font_cjk") {
lex >> fonts_cjk;
+ } else if (token == "\\use_microtype") {
+ lex >> use_microtype;
} else if (token == "\\paragraph_separation") {
string parsep;
lex >> parsep;
// The top of the file is written by the buffer.
// Prints out the buffer info into the .lyx file given by file
- // the document directory
- string filepath = buf->filePath();
- string const sysdir = package().system_support().absFileName();
- if (prefixIs(filepath, sysdir))
- filepath.replace(0, sysdir.length(), "/systemlyxdir/");
- else if (!lyxrc.save_origin)
+ os << "\\save_transient_properties "
+ << convert<string>(save_transient_properties) << '\n';
+
+ // the document directory (must end with a path separator)
+ // realPath() is used to resolve symlinks, while addPath(..., "")
+ // ensures a trailing path separator.
+ string filepath = addPath(buf->fileName().onlyPath().realPath(), "");
+ string const sysdir = addPath(package().system_support().realPath(), "");
+ string const relpath =
+ to_utf8(makeRelPath(from_utf8(filepath), from_utf8(sysdir)));
+ if (!prefixIs(relpath, "../") && !FileName::isAbsolute(relpath))
+ filepath = addPath("/systemlyxdir", relpath);
+ else if (!save_transient_properties || !lyxrc.save_origin)
filepath = "unavailable";
os << "\\origin " << quoteIfNeeded(filepath) << '\n';
if (!fonts_cjk.empty()) {
os << "\\font_cjk " << fonts_cjk << '\n';
}
+ os << "\\use_microtype " << convert<string>(use_microtype) << '\n';
os << "\\graphics " << graphics_driver << '\n';
os << "\\default_output_format " << default_output_format << '\n';
os << "\\output_sync " << output_sync << '\n';
}
}
- os << "\\tracking_changes " << convert<string>(track_changes) << '\n'
- << "\\output_changes " << convert<string>(output_changes) << '\n'
- << "\\html_math_output " << html_math_output << '\n'
+ os << "\\tracking_changes "
+ << (save_transient_properties ? convert<string>(track_changes) : "false")
+ << '\n';
+
+ os << "\\output_changes "
+ << (save_transient_properties ? convert<string>(output_changes) : "false")
+ << '\n';
+
+ os << "\\html_math_output " << html_math_output << '\n'
<< "\\html_css_as_file " << html_css_as_file << '\n'
<< "\\html_be_strict " << convert<string>(html_be_strict) << '\n';
}
// some languages are only available via polyglossia
- if ((features.runparams().flavor == OutputParams::XETEX
- || features.runparams().flavor == OutputParams::LUATEX)
- && (features.hasPolyglossiaExclusiveLanguages()
- || useNonTeXFonts))
- features.require("polyglossia");
+ if (features.hasPolyglossiaExclusiveLanguages())
+ features.require("polyglossia");
if (useNonTeXFonts && fontsMath() != "auto")
features.require("unicode-math");
+
+ if (use_microtype)
+ features.require("microtype");
if (!language->requires().empty())
features.require(language->requires());
DocumentClass const & BufferParams::documentClass() const
{
- return *doc_class_.get();
+ return *doc_class_;
}
// XeTeX/LuaTeX: (see also #9740)
// With Unicode fonts we use utf8-plain without encoding package.
// With TeX fonts, we cannot use utf8-plain, but "inputenc" fails.
- // XeTeX must use ASCII encoding, for LuaTeX, we load
- // "luainputenc" (see below).
+ // XeTeX must use ASCII encoding (see Buffer.cpp),
+ // for LuaTeX, we load "luainputenc" (see below).
if (useNonTeXFonts || features.runparams().flavor == OutputParams::XETEX)
return;