latexargs_.clear();
itemargs_.clear();
postcommandargs_.clear();
+ listpreamble_.clear();
}
break;
}
case LT_AUTONESTS: {
- docstring const autonest =
- subst(subst(subst(lex.getLongString(from_ascii("EndAutoNests")),
- from_ascii("\n"), docstring()),
- from_ascii(" "), docstring()),
- from_ascii("\t"), docstring());
+ docstring autonest = lex.getLongString(from_ascii("EndAutoNests"));
+ autonest = subst(autonest, from_ascii("\n"), docstring());
+ autonest = subst(autonest, from_ascii("\t"), docstring());
+ autonest = subst(autonest, from_ascii("\""), docstring());
+ autonest = subst(autonest, '_', ' ');
vector<docstring> const autonests =
- getVectorFromString(autonest);
+ getVectorFromString(autonest, from_ascii(","), false, true);
autonests_.insert(autonests.begin(), autonests.end());
break;
}
case LT_AUTONESTEDBY: {
- docstring const autonest =
- subst(subst(subst(lex.getLongString(from_ascii("EndIsAutoNestedBy")),
- from_ascii("\n"), docstring()),
- from_ascii(" "), docstring()),
- from_ascii("\t"), docstring());
+ docstring autonest = lex.getLongString(from_ascii("EndIsAutoNestedBy"));
+ autonest = subst(autonest, from_ascii("\n"), docstring());
+ autonest = subst(autonest, from_ascii("\t"), docstring());
+ autonest = subst(autonest, from_ascii("\""), docstring());
+ autonest = subst(autonest, '_', ' ');
vector<docstring> const autonests =
- getVectorFromString(autonest);
+ getVectorFromString(autonest, from_ascii(","), false, true);
autonested_by_.insert(autonests.begin(), autonests.end());
break;
}
latexarg arg;
// writeArgument() makes use of these default values
arg.mandatory = false;
+ arg.nodelims = false;
arg.autoinsert = false;
arg.insertcotext = false;
bool error = false;
lex >> id;
bool const itemarg = prefixIs(id, "item:");
bool const postcmd = prefixIs(id, "post:");
+ bool const listpreamble = prefixIs(id, "listpreamble:");
while (!finished && lex.isOK() && !error) {
lex.next();
itemargs_[id] = arg;
else if (postcmd)
postcommandargs_[id] = arg;
- else
+ else if (listpreamble) {
+ // list preamble has no delimiters by default
+ arg.nodelims = true;
+ listpreamble_[id] = arg;
+ } else
latexargs_[id] = arg;
}
for (LaTeXArgMap::const_iterator it = postcommandargs_.begin();
it != postcommandargs_.end(); ++it)
writeArgument(os, it->first, it->second);
+ for (LaTeXArgMap::const_iterator it = listpreamble_.begin();
+ it != listpreamble_.end(); ++it)
+ writeArgument(os, it->first, it->second);
os << "\tNeedProtect " << needprotect << "\n"
"\tNeedCProtect " << needcprotect << "\n"
"\tKeepEmpty " << keepempty << '\n';
os << "\n\tEndAutoNests\n";
}
if (!autonested_by_.empty()) {
- os << "\tIsAutoNestedBy\n\t";
+ os << "\tIsAutoNestedBy\n\t\t";
for (set<docstring>::const_iterator it = autonested_by_.begin();
it != autonested_by_.end(); ++it) {
if (it != autonested_by_.begin())
os << ',';
os << to_utf8(*it);
}
- os << "\n\tIsAutoNestedBy\n";
+ os << "\n\tEndIsAutoNestedBy\n";
}
if (refprefix.empty())
os << "\tRefPrefix OFF\n";
bool Layout::hasArgs() const
{
return !latexargs_.empty() || !postcommandargs_.empty() ||
- !itemargs_.empty();
+ !itemargs_.empty() || !listpreamble_.empty();
}
LaTeXArgMap args = latexargs_;
if (!postcommandargs_.empty())
args.insert(postcommandargs_.begin(), postcommandargs_.end());
+ if (!listpreamble_.empty())
+ args.insert(listpreamble_.begin(), listpreamble_.end());
if (!itemargs_.empty())
args.insert(itemargs_.begin(), itemargs_.end());
return args;