}
-int InsetBibtex::plaintext(odocstream & os, OutputParams const &) const
+int InsetBibtex::plaintext(odocstringstream & os,
+ OutputParams const & op, size_t max_length) const
{
+ docstring const reflabel = buffer().B_("References");
+
+ // We could output more information here, e.g., what databases are included
+ // and information about options. But I don't necessarily see any reason to
+ // do this right now.
+ if (op.for_tooltip || op.for_toc || op.for_search) {
+ os << '[' << reflabel << ']' << '\n';
+ return PLAINTEXT_NEWLINE;
+ }
+
BiblioInfo bibinfo = buffer().masterBibInfo();
bibinfo.makeCitationLabels(buffer());
vector<docstring> const & cites = bibinfo.citedEntries();
+ size_t start_size = os.str().size();
docstring refoutput;
- docstring const reflabel = buffer().B_("References");
-
refoutput += reflabel + "\n\n";
// Now we loop over the entries
vector<docstring>::const_iterator vit = cites.begin();
vector<docstring>::const_iterator const ven = cites.end();
for (; vit != ven; ++vit) {
+ if (start_size + refoutput.size() >= max_length)
+ break;
BiblioInfo::const_iterator const biit = bibinfo.find(*vit);
if (biit == bibinfo.end())
continue;