mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Load geometry after graphics
Newer graphics driver overwrite some (output) page settings otherwise
See https://tex.stackexchange.com/a/384952/19291
Re-fixes #10970
(cherry picked from commit ca4fc01847
)
This commit is contained in:
parent
73bfef16f3
commit
c16f99c524
@ -2071,43 +2071,49 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
|
|||||||
case PAPER_DEFAULT:
|
case PAPER_DEFAULT:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
docstring g_options = trim(ods.str(), ",");
|
string g_options = to_ascii(trim(ods.str(), ","));
|
||||||
os << "\\usepackage";
|
// geometry must be loaded after graphics nowadays, since
|
||||||
|
// graphic drivers might overwrite some settings
|
||||||
|
// see https://tex.stackexchange.com/a/384952/19291
|
||||||
|
// Hence we store this and output it later
|
||||||
|
ostringstream gs;
|
||||||
|
gs << "\\usepackage";
|
||||||
// geometry-light means that the class works with geometry, but overwrites
|
// geometry-light means that the class works with geometry, but overwrites
|
||||||
// the package options and paper sizes (memoir does this).
|
// the package options and paper sizes (memoir does this).
|
||||||
// In this case, all options need to go to \geometry
|
// In this case, all options need to go to \geometry
|
||||||
// and the standard paper sizes need to go to the class options.
|
// and the standard paper sizes need to go to the class options.
|
||||||
if (!g_options.empty() && !features.isProvided("geometry-light")) {
|
if (!g_options.empty() && !features.isProvided("geometry-light")) {
|
||||||
os << '[' << g_options << ']';
|
gs << '[' << g_options << ']';
|
||||||
g_options.clear();
|
g_options.clear();
|
||||||
}
|
}
|
||||||
os << "{geometry}\n";
|
gs << "{geometry}\n";
|
||||||
if (use_geometry || features.isProvided("geometry-light")) {
|
if (use_geometry || features.isProvided("geometry-light")) {
|
||||||
os << "\\geometry{verbose";
|
gs << "\\geometry{verbose";
|
||||||
if (!g_options.empty())
|
if (!g_options.empty())
|
||||||
// Output general options here with "geometry light".
|
// Output general options here with "geometry light".
|
||||||
os << "," << g_options;
|
gs << "," << g_options;
|
||||||
// output this only if use_geometry is true
|
// output this only if use_geometry is true
|
||||||
if (use_geometry) {
|
if (use_geometry) {
|
||||||
if (!topmargin.empty())
|
if (!topmargin.empty())
|
||||||
os << ",tmargin=" << from_ascii(Length(topmargin).asLatexString());
|
gs << ",tmargin=" << Length(topmargin).asLatexString();
|
||||||
if (!bottommargin.empty())
|
if (!bottommargin.empty())
|
||||||
os << ",bmargin=" << from_ascii(Length(bottommargin).asLatexString());
|
gs << ",bmargin=" << Length(bottommargin).asLatexString();
|
||||||
if (!leftmargin.empty())
|
if (!leftmargin.empty())
|
||||||
os << ",lmargin=" << from_ascii(Length(leftmargin).asLatexString());
|
gs << ",lmargin=" << Length(leftmargin).asLatexString();
|
||||||
if (!rightmargin.empty())
|
if (!rightmargin.empty())
|
||||||
os << ",rmargin=" << from_ascii(Length(rightmargin).asLatexString());
|
gs << ",rmargin=" << Length(rightmargin).asLatexString();
|
||||||
if (!headheight.empty())
|
if (!headheight.empty())
|
||||||
os << ",headheight=" << from_ascii(Length(headheight).asLatexString());
|
gs << ",headheight=" << Length(headheight).asLatexString();
|
||||||
if (!headsep.empty())
|
if (!headsep.empty())
|
||||||
os << ",headsep=" << from_ascii(Length(headsep).asLatexString());
|
gs << ",headsep=" << Length(headsep).asLatexString();
|
||||||
if (!footskip.empty())
|
if (!footskip.empty())
|
||||||
os << ",footskip=" << from_ascii(Length(footskip).asLatexString());
|
gs << ",footskip=" << Length(footskip).asLatexString();
|
||||||
if (!columnsep.empty())
|
if (!columnsep.empty())
|
||||||
os << ",columnsep=" << from_ascii(Length(columnsep).asLatexString());
|
gs << ",columnsep=" << Length(columnsep).asLatexString();
|
||||||
}
|
}
|
||||||
os << "}\n";
|
gs << "}\n";
|
||||||
}
|
}
|
||||||
|
set_geometry = gs.str();
|
||||||
} else if (orientation == ORIENTATION_LANDSCAPE
|
} else if (orientation == ORIENTATION_LANDSCAPE
|
||||||
|| papersize != PAPER_DEFAULT) {
|
|| papersize != PAPER_DEFAULT) {
|
||||||
features.require("papersize");
|
features.require("papersize");
|
||||||
|
@ -247,6 +247,8 @@ public:
|
|||||||
/// use custom margins
|
/// use custom margins
|
||||||
bool use_geometry;
|
bool use_geometry;
|
||||||
///
|
///
|
||||||
|
mutable std::string set_geometry;
|
||||||
|
///
|
||||||
std::string paperwidth;
|
std::string paperwidth;
|
||||||
///
|
///
|
||||||
std::string paperheight;
|
std::string paperheight;
|
||||||
|
@ -1383,6 +1383,12 @@ string const LaTeXFeatures::getPackages() const
|
|||||||
<< "]{graphicx}\n";
|
<< "]{graphicx}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// geometry must be loaded after graphics, since
|
||||||
|
// graphic drivers might overwrite some settings
|
||||||
|
// see https://tex.stackexchange.com/a/384952/19291
|
||||||
|
if (!params_.set_geometry.empty())
|
||||||
|
packages << params_.set_geometry;
|
||||||
|
|
||||||
// These must be loaded after graphicx, since they try
|
// These must be loaded after graphicx, since they try
|
||||||
// to load graphicx without options
|
// to load graphicx without options
|
||||||
if (mustProvide("rotating"))
|
if (mustProvide("rotating"))
|
||||||
|
Loading…
Reference in New Issue
Block a user