void writeString(docstring const & s, WriteStream & os)
{
- if (!os.latex() || os.lockedMode()) {
+ if (!os.latex()) {
os << (os.asciiOnly() ? escape(s) : s);
return;
}
+ if (os.lockedMode()) {
+ bool space;
+ docstring cmd;
+ for (char_type c : s) {
+ try {
+ Encodings::latexMathChar(c, true, os.encoding(), cmd, space);
+ os << cmd;
+ os.pendingSpace(space);
+ } catch (EncodingException const & e) {
+ switch (os.output()) {
+ case WriteStream::wsDryrun: {
+ os << "<" << _("LyX Warning: ")
+ << _("uncodable character") << " '";
+ os << docstring(1, e.failed_char);
+ os << "'>";
+ break;
+ }
+ case WriteStream::wsPreview: {
+ // indicate the encoding error by a boxed '?'
+ os << "{\\fboxsep=1pt\\fbox{?}}";
+ LYXERR0("Uncodable character" << " '"
+ << docstring(1, e.failed_char)
+ << "'");
+ break;
+ }
+ case WriteStream::wsDefault:
+ default:
+ // throw again
+ throw(e);
+ }
+ }
+ }
+ return;
+ }
+
docstring::const_iterator cit = s.begin();
docstring::const_iterator end = s.end();
Encodings::MATH_CMD | Encodings::TEXT_CMD,
is_combining, termination);
}
- if (c) {
+ if (c && buf->params().encoding().encodable(c)) {
if (termination) {
if (nextToken().cat() == catBegin) {
getToken();
- Avoid superfluous braces in the optional argument of a macro (bug 11552).
+- Do not replace a latex command with the corresponding symbol in the
+ unicodesymbols file, unless it can be encoded in the document encoding
+ (bug 11586).
+
* USER INTERFACE