mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Use TeXOnePar for the inpreamble layouts
This considers paragraph language and spacing (and simplifies the code)
(cherry picked from commit a2f886d526
)
This commit is contained in:
parent
961b79975c
commit
da3dc1b61f
@ -1437,9 +1437,7 @@ bool Paragraph::Private::latexSpecialT3(char_type const c, otexstream & os,
|
||||
void Paragraph::Private::validate(LaTeXFeatures & features) const
|
||||
{
|
||||
if (layout_->inpreamble && inset_owner_) {
|
||||
bool const is_command = layout_->latextype == LATEX_COMMAND;
|
||||
Font f;
|
||||
// Using a string stream here circumvents the encoding
|
||||
// FIXME: Using a string stream here circumvents the encoding
|
||||
// switching machinery of odocstream. Therefore the
|
||||
// output is wrong if this paragraph contains content
|
||||
// that needs to switch encoding.
|
||||
@ -1448,32 +1446,11 @@ void Paragraph::Private::validate(LaTeXFeatures & features) const
|
||||
? buf.masterParams() : buf.params();
|
||||
otexstringstream os;
|
||||
os << layout_->preamble();
|
||||
if (is_command) {
|
||||
os << '\\' << from_ascii(layout_->latexname());
|
||||
// we have to provide all the optional arguments here, even though
|
||||
// the last one is the only one we care about.
|
||||
// Separate handling of optional argument inset.
|
||||
if (!layout_->latexargs().empty()) {
|
||||
OutputParams rp = features.runparams();
|
||||
rp.local_font = &owner_->getFirstFontSettings(bp);
|
||||
latexArgInsets(*owner_, os, rp, layout_->latexargs());
|
||||
}
|
||||
os << from_ascii(layout_->latexparam());
|
||||
}
|
||||
size_t const length = os.length();
|
||||
// this will output "{" at the beginning, but not at the end
|
||||
owner_->latex(bp, f, os, features.runparams(), 0, -1, true);
|
||||
if (os.length() > length) {
|
||||
if (is_command) {
|
||||
os << '}';
|
||||
if (!layout_->postcommandargs().empty()) {
|
||||
OutputParams rp = features.runparams();
|
||||
rp.local_font = &owner_->getFirstFontSettings(bp);
|
||||
latexArgInsets(*owner_, os, rp, layout_->postcommandargs(), "post:");
|
||||
}
|
||||
}
|
||||
TeXOnePar(buf, buf.text(), buf.getParFromID(owner_->id()).pit(), os,
|
||||
features.runparams(), string(), 0, -1, true);
|
||||
if (os.length() > length)
|
||||
features.addPreambleSnippet(os.release(), true);
|
||||
}
|
||||
}
|
||||
|
||||
if (features.runparams().flavor == OutputParams::HTML
|
||||
@ -2428,7 +2405,7 @@ void Paragraph::latex(BufferParams const & bparams,
|
||||
if (empty()) {
|
||||
// For InTitle commands, we have already opened a group
|
||||
// in output_latex::TeXOnePar.
|
||||
if (style.isCommand() && (!style.intitle || style.inpreamble)) {
|
||||
if (style.isCommand() && !style.intitle) {
|
||||
os << '{';
|
||||
++column;
|
||||
}
|
||||
@ -2468,7 +2445,7 @@ void Paragraph::latex(BufferParams const & bparams,
|
||||
}
|
||||
// For InTitle commands, we have already opened a group
|
||||
// in output_latex::TeXOnePar.
|
||||
if (style.isCommand() && (!style.intitle || style.inpreamble)) {
|
||||
if (style.isCommand() && !style.intitle) {
|
||||
os << '{';
|
||||
++column;
|
||||
}
|
||||
|
@ -683,7 +683,8 @@ void TeXOnePar(Buffer const & buf,
|
||||
otexstream & os,
|
||||
OutputParams const & runparams_in,
|
||||
string const & everypar,
|
||||
int start_pos, int end_pos)
|
||||
int start_pos, int end_pos,
|
||||
bool const force)
|
||||
{
|
||||
BufferParams const & bparams = runparams_in.is_child
|
||||
? buf.masterParams() : buf.params();
|
||||
@ -694,7 +695,7 @@ void TeXOnePar(Buffer const & buf,
|
||||
Layout const & style = text.inset().forcePlainLayout() ?
|
||||
bparams.documentClass().plainLayout() : par.layout();
|
||||
|
||||
if (style.inpreamble)
|
||||
if (style.inpreamble && !force)
|
||||
return;
|
||||
|
||||
LYXERR(Debug::LATEX, "TeXOnePar for paragraph " << pit << " ptr " << &par << " '"
|
||||
@ -728,7 +729,7 @@ void TeXOnePar(Buffer const & buf,
|
||||
os << '\n';
|
||||
}
|
||||
|
||||
par.latex(bparams, outerfont, os, runparams, start_pos, end_pos);
|
||||
par.latex(bparams, outerfont, os, runparams, start_pos, end_pos, force);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -739,7 +740,7 @@ void TeXOnePar(Buffer const & buf,
|
||||
Font const outerfont = text.outerFont(pit);
|
||||
parStartCommand(par, os, runparams, style);
|
||||
|
||||
par.latex(bparams, outerfont, os, runparams, start_pos, end_pos);
|
||||
par.latex(bparams, outerfont, os, runparams, start_pos, end_pos, force);
|
||||
|
||||
// I did not create a parEndCommand for this minuscule
|
||||
// task because in the other user of parStartCommand
|
||||
@ -1015,7 +1016,7 @@ void TeXOnePar(Buffer const & buf,
|
||||
|
||||
// FIXME UNICODE
|
||||
os << from_utf8(everypar);
|
||||
par.latex(bparams, outerfont, os, runparams, start_pos, end_pos);
|
||||
par.latex(bparams, outerfont, os, runparams, start_pos, end_pos, force);
|
||||
|
||||
Font const font = par.empty()
|
||||
? par.getLayoutFont(bparams, outerfont)
|
||||
|
@ -91,7 +91,8 @@ void TeXOnePar(Buffer const & buf,
|
||||
otexstream & os,
|
||||
OutputParams const & runparams,
|
||||
std::string const & everypar = std::string(),
|
||||
int start_pos = -1, int end_pos = -1);
|
||||
int start_pos = -1, int end_pos = -1,
|
||||
bool const force = false);
|
||||
|
||||
} // namespace lyx
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user