mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-28 20:32:28 +00:00
DocBook: fix XML in comments (-- forbidden for some historical reason).
This commit is contained in:
parent
f2e69c165e
commit
85946aae2b
@ -200,7 +200,7 @@ LaTeX-Vorspann.
|
|||||||
Dies öffnet ein Editierfenster, in das Sie Ihre bevorzugten Befehle schreiben
|
Dies öffnet ein Editierfenster, in das Sie Ihre bevorzugten Befehle schreiben
|
||||||
können.
|
können.
|
||||||
\begin_inset Foot
|
\begin_inset Foot
|
||||||
status collapsed
|
status open
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
Das Editierverhalten in diesem Fenster ist spezifisch, also erwarten Sie
|
Das Editierverhalten in diesem Fenster ist spezifisch, also erwarten Sie
|
||||||
@ -256,6 +256,18 @@ begin{document}
|
|||||||
|
|
||||||
.
|
.
|
||||||
Sollten Sie diese jemals bekommen, prüfen Sie Ihren Vorspann!.
|
Sollten Sie diese jemals bekommen, prüfen Sie Ihren Vorspann!.
|
||||||
|
|
||||||
|
\begin_inset ERT
|
||||||
|
status open
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
--
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
\begin_inset CommandInset index_print
|
\begin_inset CommandInset index_print
|
||||||
LatexCommand printindex
|
LatexCommand printindex
|
||||||
type "idx"
|
type "idx"
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<chapter>
|
<chapter>
|
||||||
<chapter>Einleitung</chapter>
|
<chapter>Einleitung</chapter>
|
||||||
<para>Wählen Sie hierfür <emphasis role='sans'>Dokument⇒Einstellungen⇒LaTeX-Vorspann. Dies öffnet ein Editierfenster, in das Sie Ihre bevorzugten Befehle schreiben können.<footnote><para>Das Editierverhalten in diesem Fenster ist spezifisch, also erwarten Sie nicht, dass die LyX<!-- „= -->Tastenkombinationen darin funktionieren.</para>
|
<para>Wählen Sie hierfür <emphasis role='sans'>Dokument⇒Einstellungen⇒LaTeX-Vorspann. Dies öffnet ein Editierfenster, in das Sie Ihre bevorzugten Befehle schreiben können.<footnote><para>Das Editierverhalten in diesem Fenster ist spezifisch, also erwarten Sie nicht, dass die LyX<!-- „= -->Tastenkombinationen darin funktionieren.</para>
|
||||||
</footnote> LyX fügt alles im <emphasis role='sans'>LaTeX-Vorspann-Fenster zu seinem eingebauten Vorspann hinzu. Bevor Sie Ihre eigenen Deklarationen zum Vorspann hinzufügen, sollten Sie prüfen, ob LyX das nicht bereits unterstützt (Erinnern Sie sich, was wir über das Rad noch einmal erfinden sagten?). Außerdem: <emphasis>stellen Sie sicher, dass Ihre Vorspannzeilen richtig sind. LyX prüft das nicht. Wenn der Vorspann fehlerhaft ist, bekommen Sie sehr wahrscheinlich die Fehlermeldung Missing \begin{document}. Sollten Sie diese jemals bekommen, prüfen Sie Ihren Vorspann!.</emphasis></emphasis></emphasis></para>
|
</footnote> LyX fügt alles im <emphasis role='sans'>LaTeX-Vorspann-Fenster zu seinem eingebauten Vorspann hinzu. Bevor Sie Ihre eigenen Deklarationen zum Vorspann hinzufügen, sollten Sie prüfen, ob LyX das nicht bereits unterstützt (Erinnern Sie sich, was wir über das Rad noch einmal erfinden sagten?). Außerdem: <emphasis>stellen Sie sicher, dass Ihre Vorspannzeilen richtig sind. LyX prüft das nicht. Wenn der Vorspann fehlerhaft ist, bekommen Sie sehr wahrscheinlich die Fehlermeldung Missing \begin{document}. Sollten Sie diese jemals bekommen, prüfen Sie Ihren Vorspann!. <!-- -- --></emphasis></emphasis></emphasis></para>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
</book>
|
</book>
|
@ -98,17 +98,23 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
|
|||||||
auto par = begin;
|
auto par = begin;
|
||||||
auto const end = paragraphs().end();
|
auto const end = paragraphs().end();
|
||||||
|
|
||||||
xs << XMLStream::ESCAPE_NONE << "<!-- ";
|
odocstringstream os2;
|
||||||
while (par != end) {
|
XMLStream xs2(os2);
|
||||||
|
|
||||||
// Recreate the logic of makeParagraphs in output_docbook.cpp, but much simplified: never open <para>
|
// Recreate the logic of makeParagraphs in output_docbook.cpp, but much simplified: never open <para>
|
||||||
// in an ERT, use simple line breaks.
|
// in an ERT, use simple line breaks.
|
||||||
par->simpleDocBookOnePar(buffer(), xs, runparams, text().outerFont(distance(begin, par)));
|
while (par != end) {
|
||||||
|
par->simpleDocBookOnePar(buffer(), xs2, runparams, text().outerFont(distance(begin, par)));
|
||||||
|
|
||||||
// New line after each paragraph of the ERT, save the last one.
|
// New line after each paragraph of the ERT, save the last one.
|
||||||
++par;
|
++par;
|
||||||
if (par != end)
|
if (par != end)
|
||||||
xs << "\n";
|
xs << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Output the ERT as a comment with the appropriate escaping.
|
||||||
|
xs << XMLStream::ESCAPE_NONE << "<!-- ";
|
||||||
|
xs << XMLStream::ESCAPE_COMMENTS << os2.str();
|
||||||
xs << XMLStream::ESCAPE_NONE << " -->";
|
xs << XMLStream::ESCAPE_NONE << " -->";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
48
src/xml.cpp
48
src/xml.cpp
@ -45,6 +45,7 @@ docstring escapeChar(char_type c, XMLStream::EscapeSettings e)
|
|||||||
docstring str;
|
docstring str;
|
||||||
switch (e) { // For HTML: always ESCAPE_NONE. For XML: it depends, hence the parameter.
|
switch (e) { // For HTML: always ESCAPE_NONE. For XML: it depends, hence the parameter.
|
||||||
case XMLStream::ESCAPE_NONE:
|
case XMLStream::ESCAPE_NONE:
|
||||||
|
case XMLStream::ESCAPE_COMMENTS:
|
||||||
str += c;
|
str += c;
|
||||||
break;
|
break;
|
||||||
case XMLStream::ESCAPE_ALL:
|
case XMLStream::ESCAPE_ALL:
|
||||||
@ -67,17 +68,6 @@ docstring escapeChar(char_type c, XMLStream::EscapeSettings e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// escape what needs escaping
|
|
||||||
docstring xmlize(docstring const &str, XMLStream::EscapeSettings e) {
|
|
||||||
odocstringstream d;
|
|
||||||
docstring::const_iterator it = str.begin();
|
|
||||||
docstring::const_iterator en = str.end();
|
|
||||||
for (; it != en; ++it)
|
|
||||||
d << escapeChar(*it, e);
|
|
||||||
return d.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
docstring escapeChar(char c, XMLStream::EscapeSettings e)
|
docstring escapeChar(char c, XMLStream::EscapeSettings e)
|
||||||
{
|
{
|
||||||
LATTEST(static_cast<unsigned char>(c) < 0x80);
|
LATTEST(static_cast<unsigned char>(c) < 0x80);
|
||||||
@ -85,6 +75,29 @@ docstring escapeChar(char c, XMLStream::EscapeSettings e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
docstring xml::escapeString(docstring const & raw, XMLStream::EscapeSettings e)
|
||||||
|
{
|
||||||
|
docstring bin;
|
||||||
|
bin.reserve(raw.size() * 2); // crude approximation is sufficient
|
||||||
|
for (size_t i = 0; i != raw.size(); ++i) {
|
||||||
|
char_type c = raw[i];
|
||||||
|
if (e == XMLStream::ESCAPE_COMMENTS && c == '-' && i > 0 && raw[i - 1] == '-')
|
||||||
|
bin += "-";
|
||||||
|
else
|
||||||
|
bin += xml::escapeChar(c, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return bin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// escape what needs escaping
|
||||||
|
docstring xmlize(docstring const &str, XMLStream::EscapeSettings e)
|
||||||
|
{
|
||||||
|
return xml::escapeString(str, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
docstring cleanAttr(docstring const & str)
|
docstring cleanAttr(docstring const & str)
|
||||||
{
|
{
|
||||||
docstring newname;
|
docstring newname;
|
||||||
@ -567,18 +580,7 @@ XMLStream &XMLStream::operator<<(xml::EndTag const &etag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
docstring xml::escapeString(docstring const & raw, XMLStream::EscapeSettings e)
|
docstring xml::uniqueID(docstring const & label)
|
||||||
{
|
|
||||||
docstring bin;
|
|
||||||
bin.reserve(raw.size() * 2); // crude approximation is sufficient
|
|
||||||
for (size_t i = 0; i != raw.size(); ++i)
|
|
||||||
bin += xml::escapeChar(raw[i], e);
|
|
||||||
|
|
||||||
return bin;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
docstring const xml::uniqueID(docstring const & label)
|
|
||||||
{
|
{
|
||||||
// thread-safe
|
// thread-safe
|
||||||
static atomic_uint seed(1000);
|
static atomic_uint seed(1000);
|
||||||
|
@ -82,7 +82,8 @@ public:
|
|||||||
enum EscapeSettings {
|
enum EscapeSettings {
|
||||||
ESCAPE_NONE,
|
ESCAPE_NONE,
|
||||||
ESCAPE_AND, // meaning &
|
ESCAPE_AND, // meaning &
|
||||||
ESCAPE_ALL // meaning <, >, &, at present
|
ESCAPE_ALL, // meaning <, >, &, at present
|
||||||
|
ESCAPE_COMMENTS // Anything that is forbidden within comments
|
||||||
};
|
};
|
||||||
/// Sets what we are going to escape on the NEXT write.
|
/// Sets what we are going to escape on the NEXT write.
|
||||||
/// Everything is reset for the next time.
|
/// Everything is reset for the next time.
|
||||||
@ -151,7 +152,7 @@ docstring escapeChar(char c, XMLStream::EscapeSettings e);
|
|||||||
docstring cleanID(docstring const &orig);
|
docstring cleanID(docstring const &orig);
|
||||||
|
|
||||||
/// returns a unique numeric ID
|
/// returns a unique numeric ID
|
||||||
docstring const uniqueID(docstring const & label);
|
docstring uniqueID(docstring const & label);
|
||||||
|
|
||||||
struct FontTag;
|
struct FontTag;
|
||||||
struct EndFontTag;
|
struct EndFontTag;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user