void parse_text_in_inset(Parser & p, ostream & os, unsigned flags, bool outer,
- Context const & context, InsetLayout const * layout,
+ Context & context, InsetLayout const * layout,
string const & rdelim)
{
bool const forcePlainLayout =
newcontext.layout = &context.textclass.plainLayout();
else
newcontext.font = context.font;
+ // Inherit commands to pass through
+ newcontext.pass_thru_cmds = context.pass_thru_cmds;
+ // and table cell
+ newcontext.in_table_cell = context.in_table_cell;
if (layout)
output_arguments(os, p, outer, false, string(), newcontext,
layout->latexargs());
output_arguments(os, p, outer, false, "post", newcontext,
layout->postcommandargs());
newcontext.check_end_layout(os);
+ context.cell_align = newcontext.cell_align;
}
context.textclass.insetLayouts().find(from_ascii(name));
if (it != context.textclass.insetLayouts().end())
layout = &(it->second);
- parse_text_in_inset(p, os, flags, outer, context, layout, rdelim);
+ Context newcontext = context;
+ parse_text_in_inset(p, os, flags, outer, newcontext, layout, rdelim);
}
/// parses a paragraph snippet, useful for example for \\emph{...}
/// spaces known by InsetSpace
char const * const known_spaces[] = { " ", "space",
-",", "thinspace",// \, = \thinspace
+",", "thinspace",// \\, = \\thinspace
"quad", "qquad", "enspace", "enskip",
-";", ">", "medspace",// \; = \> = \medspace
-":", "thickspace",// \: = \thickspace
-"!", "negthinspace",// \! = \negthinspace
+";", ">", "medspace",// \\; = \\> = \\medspace
+":", "thickspace",// \\: = \\thickspace
+"!", "negthinspace",// \\! = \\negthinspace
"negmedspace", "negthickspace",
"textvisiblespace", "hfill", "dotfill", "hrulefill", "leftarrowfill",
"rightarrowfill", "upbracefill", "downbracefill", 0};
os << "wide " << convert<string>(is_starred)
<< "\nsideways false"
<< "\nstatus open\n\n";
+ set<string> pass_thru_cmds = parent_context.pass_thru_cmds;
+ if (unstarred_name == "algorithm")
+ // in algorithm, \; has special meaning
+ parent_context.pass_thru_cmds.insert(";");
parse_text_in_inset(p, os, FLAG_END, outer, parent_context);
+ if (unstarred_name == "algorithm")
+ parent_context.pass_thru_cmds = pass_thru_cmds;
end_inset(os);
// We don't need really a new paragraph, but
// we must make sure that the next item gets a \begin_layout.
eat_whitespace(p, os, parent_context, false);
parent_context.check_layout(os);
begin_inset(os, "IPA\n");
+ set<string> pass_thru_cmds = parent_context.pass_thru_cmds;
+ // These commands have special meanings in IPA
+ parent_context.pass_thru_cmds.insert("!");
+ parent_context.pass_thru_cmds.insert(";");
+ parent_context.pass_thru_cmds.insert(":");
parse_text_in_inset(p, os, FLAG_END, outer, parent_context);
+ parent_context.pass_thru_cmds = pass_thru_cmds;
end_inset(os);
p.skip_spaces();
preamble.registerAutomaticallyLoadedPackage("tipa");
begin_inset(os, "IPA\n");
bool merging_hyphens_allowed = context.merging_hyphens_allowed;
context.merging_hyphens_allowed = false;
+ set<string> pass_thru_cmds = context.pass_thru_cmds;
+ // These commands have special meanings in IPA
+ context.pass_thru_cmds.insert("!");
+ context.pass_thru_cmds.insert(";");
+ context.pass_thru_cmds.insert(":");
parse_text_in_inset(p, os, FLAG_ITEM, outer, context);
+ context.pass_thru_cmds = pass_thru_cmds;
context.merging_hyphens_allowed = merging_hyphens_allowed;
end_inset(os);
preamble.registerAutomaticallyLoadedPackage("tipa");
continue;
}
+ if (t.cs() == "endgraf" && context.in_table_cell) {
+ context.new_paragraph(os);
+ context.check_layout(os);
+ skip_spaces_braces(p);
+ continue;
+ }
+
if (t.cs() == "input" || t.cs() == "include"
|| t.cs() == "verbatiminput"
|| t.cs() == "lstinputlisting"
// the code for the alignment was put here
// put them in their own if if this is fixed
if (t.cs() == "fboxrule" || t.cs() == "fboxsep"
- || t.cs() == "shadowsize"
- || t.cs() == "raggedleft" || t.cs() == "centering"
- || t.cs() == "raggedright") {
+ || t.cs() == "shadowsize") {
if (t.cs() == "fboxrule")
fboxrule = "";
if (t.cs() == "fboxsep")
fboxsep = "";
if (t.cs() == "shadowsize")
shadow_size = "";
- if (t.cs() != "raggedleft" && t.cs() != "centering"
- && t.cs() != "raggedright") {
+ p.skip_spaces(true);
+ while (p.good() && p.next_token().cat() != catSpace
+ && p.next_token().cat() != catNewline
+ && p.next_token().cat() != catEscape) {
+ if (t.cs() == "fboxrule")
+ fboxrule = fboxrule + p.get_token().asInput();
+ if (t.cs() == "fboxsep")
+ fboxsep = fboxsep + p.get_token().asInput();
+ if (t.cs() == "shadowsize")
+ shadow_size = shadow_size + p.get_token().asInput();
+ }
+ continue;
+ }
+
+ if (t.cs() == "raggedleft" || t.cs() == "centering" || t.cs() == "raggedright") {
+ if (context.in_table_cell) {
+ if (t.cs() == "raggedleft")
+ context.cell_align = 'r';
+ else if (t.cs() == "centering")
+ context.cell_align = 'c';
+ else if (t.cs() == "raggedright")
+ context.cell_align = 'l';
p.skip_spaces(true);
- while (p.good() && p.next_token().cat() != catSpace
- && p.next_token().cat() != catNewline
- && p.next_token().cat() != catEscape) {
- if (t.cs() == "fboxrule")
- fboxrule = fboxrule + p.get_token().asInput();
- if (t.cs() == "fboxsep")
- fboxsep = fboxsep + p.get_token().asInput();
- if (t.cs() == "shadowsize")
- shadow_size = shadow_size + p.get_token().asInput();
- }
} else {
output_ert_inset(os, t.asInput(), context);
}
continue;
}
- if ((where = is_known(t.cs(), known_spaces))) {
+ if ((where = is_known(t.cs(), known_spaces))
+ && (context.pass_thru_cmds.find(t.cs()) == context.pass_thru_cmds.end())) {
context.check_layout(os);
begin_inset(os, "space ");
os << '\\' << known_coded_spaces[where - known_spaces]