]> git.lyx.org Git - lyx.git/blobdiff - src/output_xhtml.cpp
Try to disambibuate the use of "xetex". Here, we actually require polyglossia.
[lyx.git] / src / output_xhtml.cpp
index 1c822a9bf529d4164462ff0e8d752ef4b74ea812..d8299ce5c4511a30df32133583a5f86fde4c6aa1 100644 (file)
@@ -32,6 +32,7 @@
 #include "support/debug.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
+#include "support/textutils.h"
 
 #include <vector>
 
@@ -128,11 +129,10 @@ docstring cleanAttr(docstring const & str)
        docstring newname;
        docstring::const_iterator it = str.begin();
        docstring::const_iterator en = str.end();
-       for (; it != en; ++it)
-               if (isalnum(*it))
-                       newname += *it;
-               else
-                       newname += '_';
+       for (; it != en; ++it) {
+               char_type const c = *it;
+               newname += isAlnumASCII(c) ? c : char_type('_');
+       }
        return newname; 
 }
 
@@ -292,8 +292,10 @@ XHTMLStream & XHTMLStream::operator<<(char c)
        if (nextraw_) {
                os_ << c;
                nextraw_ = false;
-       } else
-               os_ << html::escapeChar(c);
+       } else {
+               string const d = html::escapeChar(c);
+               os_ << from_ascii(d);
+       }
        return *this;
 }
 
@@ -503,7 +505,8 @@ inline void openTag(XHTMLStream & xs, Layout const & lay)
 }
 
 
-void openTag(XHTMLStream & xs, Layout const & lay, ParagraphParameters const & params)
+void openTag(XHTMLStream & xs, Layout const & lay, 
+             ParagraphParameters const & params)
 {
        // FIXME Are there other things we should handle here?
        string const align = alignmentToCSS(params.align());
@@ -540,6 +543,20 @@ inline void openItemTag(XHTMLStream & xs, Layout const & lay)
 }
 
 
+void openItemTag(XHTMLStream & xs, Layout const & lay, 
+             ParagraphParameters const & params)
+{
+       // FIXME Are there other things we should handle here?
+       string const align = alignmentToCSS(params.align());
+       if (align.empty()) {
+               openItemTag(xs, lay);
+               return;
+       }
+       string attrs = lay.htmlattr() + " style='text-align: " + align + ";'";
+       xs << html::StartTag(lay.htmlitemtag(), attrs);
+}
+
+
 inline void closeItemTag(XHTMLStream & xs, Layout const & lay)
 {
        xs << html::EndTag(lay.htmlitemtag());
@@ -722,7 +739,7 @@ ParagraphList::const_iterator makeEnvironmentHtml(Buffer const & buf,
                                
                                bool const labelfirst = style.htmllabelfirst();
                                if (!labelfirst)
-                                       openItemTag(xs, style);
+                                       openItemTag(xs, style, par->params());
                                
                                // label output
                                if (style.labeltype != LABEL_NO_LABEL && 
@@ -757,7 +774,7 @@ ParagraphList::const_iterator makeEnvironmentHtml(Buffer const & buf,
                                } // end label output
 
                                if (labelfirst)
-                                       openItemTag(xs, style);
+                                       openItemTag(xs, style, par->params());
 
                                par->simpleLyXHTMLOnePar(buf, xs, runparams, 
                                        text.outerFont(distance(begin, par)), sep);
@@ -820,7 +837,7 @@ void makeCommand(Buffer const & buf,
        if (!style.counter.empty())
                buf.params().documentClass().counters().step(style.counter, OutputUpdate);
 
-       openTag(xs, style);
+       openTag(xs, style, pbegin->params());
 
        // Label around sectioning number:
        // FIXME Probably need to account for LABEL_MANUAL