default: {
docstring const label = par.params().labelString();
- os << label << ' ';
- currlinelen += label.length() + 1;
+ if (!label.empty()) {
+ os << label << ' ';
+ currlinelen += label.length() + 1;
+ }
break;
}
}
- if (!currlinelen) {
+ if (currlinelen == 0) {
pair<int, docstring> p = addDepth(depth, ltype_depth);
os << p.second;
currlinelen += p.first;
}
- // this is to change the linebreak to do it by word a bit more
- // intelligent hopefully! (only in the case where we have a
- // max runparams.linelength!) (Jug)
-
docstring word;
for (pos_type i = 0; i < par.size(); ++i) {
+ if (par.isDeleted(i)) // deleted characters don't make much sense in plain text output
+ continue;
+
char_type c = par.getUChar(buf.params(), i);
switch (c) {
case Paragraph::META_INSET: {
InsetBase const * inset = par.getInset(i);
+
os << word;
currlinelen += word.length();
word.erase();
+
OutputParams rp = runparams;
rp.depth = par.params().depth();
if (inset->plaintext(buf, os, rp)) {
case ' ':
if (runparams.linelen > 0 &&
- currlinelen + word.length() > runparams.linelen - 10) {
+ currlinelen + word.length() > runparams.linelen) {
os << '\n';
pair<int, docstring> p = addDepth(depth, ltype_depth);
os << p.second;
default:
word += c;
- if (runparams.linelen > 0 &&
- currlinelen + word.length() > runparams.linelen)
- {
- os << '\n';
- pair<int, docstring> p = addDepth(depth, ltype_depth);
- os << p.second;
- currlinelen = p.first;
- }
break;
}
}
+
+ if (runparams.linelen > 0 &&
+ currlinelen + word.length() > runparams.linelen) {
+ os << '\n';
+ pair<int, docstring> p = addDepth(depth, ltype_depth);
+ os << p.second;
+ currlinelen = p.first;
+ }
os << word;
}