using std::vector;
using std::map;
+namespace biblio = lyx::biblio;
+
namespace {
}
-int InsetCitation::plaintext(Buffer const & buffer, ostream & os, int) const
+int InsetCitation::plaintext(Buffer const & buffer, ostream & os, OutputParams const &) const
{
if (cache.params == params() &&
cache.engine == biblio::getEngine(buffer))
}
+namespace {
+
+string const cleanupWhitespace(string const & citelist)
+{
+ string::const_iterator it = citelist.begin();
+ string::const_iterator end = citelist.end();
+ // Paranoia check: make sure that there is no whitespace in here
+ // -- at least not behind commas or at the beginning
+ string result;
+ char last = ',';
+ for (; it != end; ++it) {
+ if (*it != ' ')
+ last = *it;
+ if (*it != ' ' || last != ',')
+ result += *it;
+ }
+ return result;
+}
+
+// end anon namyspace
+}
+
+int InsetCitation::docbook(Buffer const &, ostream & os, OutputParams const &) const
+{
+ os << "<citation>" << cleanupWhitespace(getContents()) << "</citation>";
+ return 0;
+}
+
+
+int InsetCitation::textString(Buffer const & buf, ostream & os,
+ OutputParams const & op) const
+{
+ return plaintext(buf, os, op);
+}
+
+
// Have to overwrite the default InsetCommand method in order to check that
// the \cite command is valid. Eg, the user has natbib enabled, inputs some
// citations and then changes his mind, turning natbib support off. The output
biblio::CiteEngine const cite_engine = buffer.params().cite_engine;
string const cite_str =
biblio::asValidLatexCommand(getCmdName(), cite_engine);
-
+
os << "\\" << cite_str;
-
+
string const before = getSecOptions();
string const after = getOptions();
if (!before.empty() && cite_engine != biblio::ENGINE_BASIC)
else if (!after.empty())
os << '[' << after << ']';
- string::const_iterator it = getContents().begin();
- string::const_iterator end = getContents().end();
- // Paranoia check: make sure that there is no whitespace in here
- string content;
- char last = ',';
- for (; it != end; ++it) {
- if (*it != ' ')
- last = *it;
- if (*it != ' ' || last != ',')
- content += *it;
- }
-
- os << '{' << content << '}';
+ os << '{' << cleanupWhitespace(getContents()) << '}';
return 0;
}