]> git.lyx.org Git - lyx.git/commitdiff
Revert "DocBook: add a layout tag to tell whether an item is the abstract or not."
authorThibaut Cuvelier <tcuvelier@lyx.org>
Mon, 3 Aug 2020 20:55:52 +0000 (22:55 +0200)
committerThibaut Cuvelier <tcuvelier@lyx.org>
Mon, 3 Aug 2020 20:55:52 +0000 (22:55 +0200)
This reverts commit 5ccd63eff6731a972f1d65d855859a65fe8e3a5b.

autotests/export/docbook/bibliography_precooked_aastex.xml
lib/layouts/aastex.layout
lib/layouts/stdstruct.inc
lib/scripts/layout2layout.py
src/Layout.cpp
src/Layout.h
src/output_docbook.cpp
src/xml.h

index fe77b7249449726d61d3eb879b9c722bcf7f7eb5..e15bfddc51e0e445f8d9b2ce69a322af457fe44b 100644 (file)
@@ -3,8 +3,8 @@
   See http://www.lyx.org/ for more information -->
 <article xml:lang="en_US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
 <info>
-<!-- shouldBeInInfo --><title>Collapsed Cores in Globular Clusters,  Gauge-Boson Couplings, and AASTeX Examples</title>
-<!-- mustBeInInfo --><author><personname>S. Djorgovski and Ivan R. King</personname>
+<title>Collapsed Cores in Globular Clusters,  Gauge-Boson Couplings, and AASTeX Examples</title>
+<author><personname>S. Djorgovski and Ivan R. King</personname>
 <affiliation><orgname>Astronomy Department, University of California, Berkeley, CA 94720</orgname></affiliation>
 <affiliation role="alternate"><orgname>Visiting Astronomer Cerro Tololo Inter-American Observatory.CTIO is operated by AURA Inc. under contract to the National Science Foundation.</orgname></affiliation>
 <affiliation role="alternate"><orgname>Society of Fellows, Harvard University.</orgname></affiliation>
 <author><personname>R. J. Hanisch</personname>
 <affiliation><orgname>Space Telescope Science Institute, Baltimore, MD 21218</orgname></affiliation>
 <affiliation role="alternate"><orgname>Patron, Alonso's Bar and Grill</orgname></affiliation></author>
-<keywordset><keyword>clusters: globular, peanut—bosons: bozos</keyword></keywordset>
-<!-- /info --><!-- abs --><abstract><para>
+<abstract><para>
 <para>This is a preliminary report on surface photometry of the major fraction of known globular clusters, to see which of them show the signs of a collapsed core. We also explore some diversionary mathematics and recreational tables. </para>
-</para></abstract>
-<!-- 15 --><!-- /abs --></info>
+<!-- Output Error: Tried to close `keyword' when tag was not open. Tag discarded. -->
+<!-- Output Error: Tried to close `keywordset' when tag was not open. Tag discarded. -->
+
+<keywordset><keyword>clusters: globular, peanut—bosons: bozos</keyword></keywordset>
+<!-- Output Error: Closing tag `info' when other tags are open, namely: -->
+<!-- Output Error: para -->
+</para><!-- Output Error: abstract -->
+</abstract></info>
 <section>
 <title>Introduction</title>
 <para>A focal problem today in the dynamics of globular clusters is core collapse. It has been predicted by theory for decades <biblioref endterm="hen61" />, <biblioref endterm="lyn68" />, <biblioref endterm="spi85" />, but observation has been less alert to the phenomenon. For many years the central brightness peak in M15 <biblioref endterm="kin75" />, <biblioref endterm="new78" /> seemed a unique anomaly. Then <biblioref endterm="aur82" /> suggested a central peak in NGC 6397, and a limited photographic survey of ours <biblioref endterm="djo84" /> found three more cases, including NGC 6624, whose sharp center had often been remarked on <biblioref endterm="can78" />. </para>
 </section>
 <section>
 <title>Helicity Amplitudes</title>
-<para>It has been realized that helicity amplitudes provide a convenient means for Feynman diagram<footnote><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><para>Footnotes can be inserted like this.</para>
+<para>It has been realized that helicity amplitudes provide a convenient means for Feynman diagram<footnote><para>Footnotes can be inserted like this.</para>
 </footnote> evaluations. These amplitude-level techniques are particularly convenient for calculations involving many Feynman diagrams, where the usual trace techniques for the amplitude squared becomes unwieldy. Our calculations use the helicity techniques developed by other authors <biblioref endterm="hag86" />; we briefly summarize below.</para>
 <section>
 <title>Formalism</title>
@@ -689,7 +694,8 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mtable>
  </m:math>
 </informalequation>
-</MathLetters>
+<!-- Output Error: Tried to close `title' when tag was not open. Tag discarded. -->
+
 </section>
 </section>
 <section>
@@ -951,7 +957,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
   </m:msub>
  </m:mrow>
  </m:math>
-</inlineequation>, but the assumption is that the alternate results should be less than 90° out of phase with previous values. We have no observations of <!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><!-- \ion{Ca}{2} -->. Roughly <inlineequation>
+</inlineequation>, but the assumption is that the alternate results should be less than 90° out of phase with previous values. We have no observations of <!-- \ion{Ca}{2} -->. Roughly <inlineequation>
 <alt role='tex'>\nicefrac{4}{5}</alt>
  <m:math>
  
@@ -965,13 +971,14 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation> of the electronically submitted abstracts for AAS meetings are error-free. </para>
-<acknowledgement><para>We are grateful to V. Barger, T. Han, and R. J. N. Phillips for doing the math in section&#xA0;<xref linkend="bozomath" />. More information on the AASTeX macros package are available at <link xlink:href="http://www.aas.org/publications/aastex"><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->http://www.aas.org/publications/aastex</link> or the <link xlink:href="ftp://www.aas.org/pubs/AAS ftp site">AAS ftp site</link>.</para>
+<acknowledgement><para>We are grateful to V. Barger, T. Han, and R. J. N. Phillips for doing the math in section&#xA0;<xref linkend="bozomath" />. More information on the AASTeX macros package are available at <link xlink:href="http://www.aas.org/publications/aastex">http://www.aas.org/publications/aastex</link> or the <link xlink:href="ftp://www.aas.org/pubs/AAS ftp site">AAS ftp site</link>.</para>
 <application>IRAF, AIPS, Astropy, ...</application><!-- Output Error: Tried to close `para' when tag was not open. Tag discarded. -->
 
+<Appendix></Appendix>
 <bibliography>
 <bibliomixed xml:id='aur82'>Aurière, M. 1982, <!-- \aap -->, 109, 301 </bibliomixed>
 <bibliomixed xml:id='can78'>Canizares, C. R., Grindlay, J. E., Hiltner, W. A., Liller, W., and McClintock, J. E. 1978, <!-- \apj -->, 224, 39 </bibliomixed>
-<bibliomixed xml:id='djo84'>Djorgovski, S., and King, I. R. 1984, <!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><!-- \apjl -->, 277, L49 </bibliomixed>
+<bibliomixed xml:id='djo84'>Djorgovski, S., and King, I. R. 1984, <!-- \apjl -->, 277, L49 </bibliomixed>
 <bibliomixed xml:id='hag86'>Hagiwara, K., and Zeppenfeld, D. 1986, Nucl.Phys., 274, 1 </bibliomixed>
 <bibliomixed xml:id='har84'>Harris, W. E., and van den Bergh, S. 1984, <!-- \aj -->, 89, 1816 </bibliomixed>
 <bibliomixed xml:id='hen61'>Hénon, M. 1961, Ann.d'Ap., 24, 369 </bibliomixed>
@@ -979,19 +986,19 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
 <bibliomixed xml:id='kin75'>King, I. R. 1975, Dynamics of Stellar Systems, A. Hayli, Dordrecht: Reidel, 1975, 99 </bibliomixed>
 <bibliomixed xml:id='kin68'>King, I. R., Hedemann, E., Hodge, S. M., and White, R. E. 1968, <!-- \aj -->, 73, 456 </bibliomixed>
 <bibliomixed xml:id='kro84'>Kron, G. E., Hewitt, A. V., and Wasserman, L. H. 1984, <!-- \pasp -->, 96, 198 </bibliomixed>
-<bibliomixed xml:id='lyn68'>Lynden-Bell, D., and Wood, R. 1968, <!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><!-- \mnras -->, 138, 495 </bibliomixed>
+<bibliomixed xml:id='lyn68'>Lynden-Bell, D., and Wood, R. 1968, <!-- \mnras -->, 138, 495 </bibliomixed>
 <bibliomixed xml:id='new78'>Newell, E. B., and O'Neil, E. J. 1978, <!-- \apjs -->, 37, 27 </bibliomixed>
 <bibliomixed xml:id='ort85'>Ortolani, S., Rosino, L., and Sandage, A. 1985, <!-- \aj -->, 90, 473 </bibliomixed>
 <bibliomixed xml:id='pet76'>Peterson, C. J. 1976, <!-- \aj -->, 81, 617 </bibliomixed>
 <bibliomixed xml:id='spi85'>Spitzer, L. 1985, Dynamics of Star Clusters, J. Goodman and P. Hut, Dordrecht: Reidel, 109 </bibliomixed>
 </bibliography>
 <table xml:id="tbl-2">
-<caption><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->Terribly relevant tabular information.</caption>
-<!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><tbody>
+<caption>Terribly relevant tabular information.</caption>
+<tbody>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->Star </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> Height </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='center' valign='top'>Star </td>
+<td align='right' valign='top'> Height </td>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>d_{x}</alt>
  <m:math>
  
@@ -1005,7 +1012,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>d_{y}</alt>
  <m:math>
  
@@ -1019,7 +1026,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>n</alt>
  <m:math>
  
@@ -1027,7 +1034,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>\chi^{2}</alt>
  <m:math>
  
@@ -1041,7 +1048,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>R_{maj}</alt>
  <m:math>
  
@@ -1057,7 +1064,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>R_{min}</alt>
  <m:math>
  
@@ -1073,15 +1080,15 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='center' valign='top' colspan='1'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><inlineequation>
+<td align='center' valign='top' colspan='1'><inlineequation>
 <alt role='tex'>P</alt>
  <m:math>
  
  <m:mrow><m:mi>P</m:mi>
  </m:mrow>
  </m:math>
-</inlineequation><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->a</td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+</inlineequation>a</td>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>PR_{maj}</alt>
  <m:math>
  
@@ -1099,7 +1106,7 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> <inlineequation>
+<td align='right' valign='top'> <inlineequation>
 <alt role='tex'>PR_{min}</alt>
  <m:math>
  
@@ -1117,105 +1124,105 @@ v(p,\lambda)_{\pm} &amp; = &amp; \pm\lambda(E\mp\lambda|{\textbf{p}}|)^{1/2}\chi
  </m:mrow>
  </m:math>
 </inlineequation></td>
-<td align='center' valign='top' colspan='1'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><inlineequation>
+<td align='center' valign='top' colspan='1'><inlineequation>
 <alt role='tex'>\Theta</alt>
  <m:math>
  
  <m:mrow><m:mo>&#x398;</m:mo>
  </m:mrow>
  </m:math>
-</inlineequation><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->b</td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->Ref.</td>
+</inlineequation>b</td>
+<td align='center' valign='top'>Ref.</td>
 </tr>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --><!-- \tableline\tableline -->1 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->33472.5 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-0.1 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->0.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->53 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->27.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->2.065 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.940 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->3.900 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->68.3 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->116.2 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-27.639</td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1,2</td>
+<td align='center' valign='top'><!-- \tableline\tableline -->1 </td>
+<td align='right' valign='top'>33472.5 </td>
+<td align='right' valign='top'>-0.1 </td>
+<td align='right' valign='top'>0.4 </td>
+<td align='right' valign='top'>53 </td>
+<td align='right' valign='top'>27.4 </td>
+<td align='right' valign='top'>2.065 </td>
+<td align='right' valign='top'>1.940 </td>
+<td align='right' valign='top'>3.900 </td>
+<td align='right' valign='top'>68.3 </td>
+<td align='right' valign='top'>116.2 </td>
+<td align='right' valign='top'>-27.639</td>
+<td align='center' valign='top'>1,2</td>
 </tr>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 2 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->27802.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-0.3 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-0.2 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->60 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->3.7 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.628 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.510 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->2.156 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->6.8 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->7.5 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-26.764</td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->3</td>
+<td align='center' valign='top'> 2 </td>
+<td align='right' valign='top'>27802.4 </td>
+<td align='right' valign='top'>-0.3 </td>
+<td align='right' valign='top'>-0.2 </td>
+<td align='right' valign='top'>60 </td>
+<td align='right' valign='top'>3.7 </td>
+<td align='right' valign='top'>1.628 </td>
+<td align='right' valign='top'>1.510 </td>
+<td align='right' valign='top'>2.156 </td>
+<td align='right' valign='top'>6.8 </td>
+<td align='right' valign='top'>7.5 </td>
+<td align='right' valign='top'>-26.764</td>
+<td align='center' valign='top'>3</td>
 </tr>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 3 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->29210.6 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->0.9 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->0.3 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->60 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->3.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.622 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.551 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->2.159 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->6.7 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->7.3 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-40.272</td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->4</td>
+<td align='center' valign='top'> 3 </td>
+<td align='right' valign='top'>29210.6 </td>
+<td align='right' valign='top'>0.9 </td>
+<td align='right' valign='top'>0.3 </td>
+<td align='right' valign='top'>60 </td>
+<td align='right' valign='top'>3.4 </td>
+<td align='right' valign='top'>1.622 </td>
+<td align='right' valign='top'>1.551 </td>
+<td align='right' valign='top'>2.159 </td>
+<td align='right' valign='top'>6.7 </td>
+<td align='right' valign='top'>7.3 </td>
+<td align='right' valign='top'>-40.272</td>
+<td align='center' valign='top'>4</td>
 </tr>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->32733.8 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-1.2<!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->c</td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-0.5 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->41 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->54.8 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->2.282 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->2.156 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->4.313 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->117.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->78.2 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-35.847</td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->5,6</td>
+<td align='center' valign='top'> 4 </td>
+<td align='right' valign='top'>32733.8 </td>
+<td align='right' valign='top'>-1.2c</td>
+<td align='right' valign='top'>-0.5 </td>
+<td align='right' valign='top'>41 </td>
+<td align='right' valign='top'>54.8 </td>
+<td align='right' valign='top'>2.282 </td>
+<td align='right' valign='top'>2.156 </td>
+<td align='right' valign='top'>4.313 </td>
+<td align='right' valign='top'>117.4 </td>
+<td align='right' valign='top'>78.2 </td>
+<td align='right' valign='top'>-35.847</td>
+<td align='center' valign='top'>5,6</td>
 </tr>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 5 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 9607.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-0.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-0.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->60 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.4 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.669<!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->c</td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.574 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->2.343 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->8.0 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->8.9 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-33.417</td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->7</td>
+<td align='center' valign='top'> 5 </td>
+<td align='right' valign='top'> 9607.4 </td>
+<td align='right' valign='top'>-0.4 </td>
+<td align='right' valign='top'>-0.4 </td>
+<td align='right' valign='top'>60 </td>
+<td align='right' valign='top'>1.4 </td>
+<td align='right' valign='top'>1.669c</td>
+<td align='right' valign='top'>1.574 </td>
+<td align='right' valign='top'>2.343 </td>
+<td align='right' valign='top'>8.0 </td>
+<td align='right' valign='top'>8.9 </td>
+<td align='right' valign='top'>-33.417</td>
+<td align='center' valign='top'>7</td>
 </tr>
 <tr>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 6 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->31638.6 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->1.6 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->0.1 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->39 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->315.2 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info --> 3.433 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->3.075 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->7.488 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->92.1 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->25.3 </td>
-<td align='right' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->-12.052 </td>
-<td align='center' valign='top'><!-- shouldBeInInfo --><!-- mustBeInInfo --><!-- /info -->8</td>
+<td align='center' valign='top'> 6 </td>
+<td align='right' valign='top'>31638.6 </td>
+<td align='right' valign='top'>1.6 </td>
+<td align='right' valign='top'>0.1 </td>
+<td align='right' valign='top'>39 </td>
+<td align='right' valign='top'>315.2 </td>
+<td align='right' valign='top'> 3.433 </td>
+<td align='right' valign='top'>3.075 </td>
+<td align='right' valign='top'>7.488 </td>
+<td align='right' valign='top'>92.1 </td>
+<td align='right' valign='top'>25.3 </td>
+<td align='right' valign='top'>-12.052 </td>
+<td align='center' valign='top'>8</td>
 </tr>
 </tbody>
 <Table note>a<!-- }{ -->Sample footnote for table&#xA0;<xref linkend="tbl-2" /> that was generated with the LaTeX table environment</Table note>
index 74d2ab6adea3a599edca1f98dcb5e04c55d17c17..97c8b64940590c8cac1362d9b6a573e94d2eec5a 100644 (file)
@@ -282,6 +282,9 @@ Style Abstract
          Series        Bold
          Size          Normal
        EndFont
+       DocBookTag            abstract
+       DocBookItemTag        para
+       DocBookInInfo         always
 End
 
 
index b02499ff51de3d6319a5b5dff2a02a34b03433c6..83d46e99351ba58489d475335393b60930fedafa 100644 (file)
@@ -49,10 +49,9 @@ Style Abstract
                        font-weight: bold;
                }
        EndHTMLStyle
-       DocBookAbstract       true
-       DocBookInInfo         always
        DocBookTag            abstract
        DocBookItemTag        para
+       DocBookInInfo         always
 End
 
 
index 2bb62e37c96f7868e216d266ef489d58fd73ffd3..e69deba6241bc3e765cbe0ecbeeb49e22106796c 100644 (file)
@@ -282,7 +282,7 @@ currentFormat = 83
 # - Removed tag Element for flex insets
 
 # Incremented to format 83, 2 August 2020 by dourouc05
-# New tags DocBookWrapperMergeWithPrevious and DocBookAbstract
+# New tag DocBookWrapperMergeWithPrevious
 
 # Do not forget to document format change in Customization
 # Manual (section "Declaring a new text class").
index 50475061edcd9f2a5a09b49ae08e5b9f6b2e6fd1..eeb58d04527246aa1cb01c697de99808d8f35555 100644 (file)
@@ -107,7 +107,6 @@ enum LayoutTags {
        LT_DOCBOOKTAG,
        LT_DOCBOOKATTR,
        LT_DOCBOOKININFO,
-       LT_DOCBOOKABSTRACT,
        LT_DOCBOOKWRAPPERTAG,
        LT_DOCBOOKWRAPPERATTR,
        LT_DOCBOOKWRAPPERMERGEWITHPREVIOUS,
@@ -178,7 +177,6 @@ Layout::Layout()
        htmllabelfirst_ = false;
        htmlforcecss_ = false;
        htmltitle_ = false;
-       docbookabstract_ = false;
        docbookwrappermergewithprevious_ = false;
        spellcheck = true;
        forcelocal = 0;
@@ -223,7 +221,6 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                { "commanddepth",   LT_COMMANDDEPTH },
                { "copystyle",      LT_COPYSTYLE },
                { "dependson",      LT_DEPENDSON },
-               { "docbookabstract",         LT_DOCBOOKABSTRACT },
                { "docbookattr",             LT_DOCBOOKATTR },
                { "docbookforceabstracttag", LT_DOCBOOKFORCEABSTRACTTAG },
                { "docbookininfo",           LT_DOCBOOKININFO },
@@ -741,10 +738,6 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                        lex >> docbookininfo_;
                        break;
 
-               case LT_DOCBOOKABSTRACT:
-                       lex >> docbookabstract_;
-                       break;
-
                case LT_DOCBOOKWRAPPERTAG:
                        lex >> docbookwrappertag_;
                        break;
@@ -1610,7 +1603,6 @@ void Layout::write(ostream & os) const
                os << "\tDocBookAttr " << docbookattr_ << '\n';
        if(!docbookininfo_.empty())
                os << "\tDocBookInInfo " << docbookininfo_ << '\n';
-       os << "\tDocBookAbstract " << docbookabstract_ << '\n';
        if(!docbookwrappertag_.empty())
                os << "\tDocBookWrapperTag " << docbookwrappertag_ << '\n';
        if(!docbookwrapperattr_.empty())
index a894142a9725d7b11ba8acbd779418a4ec73b662..d9eb893c2e447353fd5eba62ba20103e0da59e98 100644 (file)
@@ -199,8 +199,6 @@ public:
        ///
        std::string const & docbookininfo() const;
        ///
-       bool docbookabstract() const { return docbookabstract_; }
-       ///
        std::string const & docbookwrappertag() const;
        ///
        std::string const & docbookwrapperattr() const;
@@ -518,14 +516,11 @@ private:
        mutable std::string docbookwrapperattr_;
        /// Whether this wrapper tag may be merged with the previously opened wrapper tag.
        bool docbookwrappermergewithprevious_;
-       /// Outer tag for this section, only if this layout represent a sectionning item, including chapters
-       /// (default: section).
+       /// Outer tag for this section, only if this layout represent a sectionning item, including chapters (default: section).
        mutable std::string docbooksectiontag_;
        /// Whether this tag must/can/can't go into an <info> tag (default: never, as it only makes sense for metadata).
        mutable std::string docbookininfo_;
-       /// Wehther this paragraph should be considered as abstract.
-       bool docbookabstract_;
-       /// Whether this element (root or not) does not accept text without a section (i.e. the first text that is met
+       /// whether this element (root or not) does not accept text without a section(i.e. the first text that is met
        /// in LyX must be considered as the abstract if this is true); this text must be output with the specific tag
        /// held by this attribute
        mutable std::string docbookforceabstracttag_;
index 443004143444106cffa8b6c907b7185ea7cc6d7e..fd38940064c744f4dcbee4d581d7e2d3aaa92640 100644 (file)
@@ -219,8 +219,7 @@ void openParTag(XMLStream & xs, const Paragraph * par, const Paragraph * prevpar
        if (tag == "Plain Layout")
                tag = "para";
 
-       if (!xs.isTagOpen(xml::ParTag(tag, lay.docbookattr()), 1)) // Don't nest a paragraph directly in a paragraph.
-               xs << xml::ParTag(tag, lay.docbookattr());
+       xs << xml::ParTag(tag, lay.docbookattr());
 
        if (lay.docbookitemtag() != "NONE")
                xs << xml::StartTag(lay.docbookitemtag(), lay.docbookitemattr());
@@ -555,38 +554,30 @@ ParagraphList::const_iterator makeEnvironment(
        ParagraphList::const_iterator par = pbegin;
        depth_type const origdepth = pbegin->params().depth();
 
-       // Output the opening tag for this environment.
-       {
-               // Find the previous paragraph.
-               auto prevpar = begin;
-               if (prevpar != par) {
-                       auto prevpar_next = prevpar;
-                       ++prevpar_next;
+       // Find the previous paragraph.
+       auto prevpar = begin;
+       if (prevpar != par) {
+               auto prevpar_next = prevpar;
+               ++prevpar_next;
 
-                       while (prevpar_next != par) {
-                               ++prevpar_next;
-                               ++prevpar;
-                       }
+               while (prevpar_next != par) {
+                       ++prevpar_next;
+                       ++prevpar;
                }
-
-               // Open tag for this environment.
-               openParTag(xs, &*par, &*prevpar);
-               xs << xml::CR();
        }
 
+       // open tag for this environment
+       openParTag(xs, &*par, &*prevpar);
+       xs << xml::CR();
+
        // we will on occasion need to remember a layout from before.
        Layout const *lastlay = nullptr;
-       auto prevpar = par;
 
        while (par != pend) {
                Layout const & style = par->layout();
                ParagraphList::const_iterator send;
 
-               auto parnext = par;
-               ++parnext;
-
                // Actual content of this paragraph.
-               prevpar = par;
                switch (style.latextype) {
                case LATEX_ENVIRONMENT:
                case LATEX_LIST_ENVIRONMENT:
@@ -710,15 +701,15 @@ ParagraphList::const_iterator makeEnvironment(
                        break;
                }
                case LATEX_PARAGRAPH:
-//                     send = findLast(par, pend, LATEX_PARAGRAPH);
-                       par = makeParagraphs(buf, xs, runparams, text, par, parnext);
+                       send = findLast(par, pend, LATEX_PARAGRAPH);
+                       par = makeParagraphs(buf, xs, runparams, text, par, send);
                        break;
                case LATEX_BIB_ENVIRONMENT:
-//                     send = findLast(par, pend, LATEX_BIB_ENVIRONMENT);
-                       makeParagraphBibliography(buf, xs, runparams, text, par, parnext);
+                       send = findLast(par, pend, LATEX_BIB_ENVIRONMENT);
+                       par = makeParagraphBibliography(buf, xs, runparams, text, par, send);
                        break;
                case LATEX_COMMAND:
-                       par = parnext;
+                       ++par;
                        break;
                }
        }
@@ -730,10 +721,9 @@ ParagraphList::const_iterator makeEnvironment(
                        xs << xml::CR();
                }
        }
-//     auto nextpar = par;
-//     ++nextpar;
-       closeTag(xs, &*prevpar, &*par);
-//     closeTag(xs, &*par, (nextpar != end) ? &*nextpar : nullptr);
+       auto nextpar = par;
+       ++nextpar;
+       closeTag(xs, &*par, (nextpar != end) ? &*nextpar : nullptr);
        xs << xml::CR();
        return pend;
 }
@@ -783,80 +773,43 @@ pair<ParagraphList::const_iterator, ParagraphList::const_iterator> makeAny(
                ParagraphList::const_iterator send,
                ParagraphList::const_iterator pend)
 {
-       switch (par->layout().latextype) {
-       case LATEX_COMMAND: {
-               // The files with which we are working never have more than
-               // one paragraph in a command structure.
-               // FIXME
-               // if (ourparams.docbook_in_par)
-               //   fix it so we don't get sections inside standard, e.g.
-               // note that we may then need to make runparams not const, so we
-               // can communicate that back.
-               // FIXME Maybe this fix should be in the routines themselves, in case
-               // they are called from elsewhere.
-               makeCommand(buf, xs, ourparams, text, par);
-               ++par;
-               break;
-       }
-       case LATEX_ENVIRONMENT:
-       case LATEX_LIST_ENVIRONMENT:
-       case LATEX_ITEM_ENVIRONMENT:
-               // FIXME Same fix here.
-               send = findEndOfEnvironment(par, pend);
-               par = makeEnvironment(buf, xs, ourparams, text, par, send);
-               break;
-       case LATEX_PARAGRAPH:
-               send = findLast(par, pend, LATEX_PARAGRAPH);
-               par = makeParagraphs(buf, xs, ourparams, text, par, send);
-               break;
-       case LATEX_BIB_ENVIRONMENT:
-               send = findLast(par, pend, LATEX_BIB_ENVIRONMENT);
-               par = makeParagraphBibliography(buf, xs, ourparams, text, par, send);
-               break;
+       Layout const & style = par->layout();
+
+       switch (style.latextype) {
+               case LATEX_COMMAND: {
+                       // The files with which we are working never have more than
+                       // one paragraph in a command structure.
+                       // FIXME
+                       // if (ourparams.docbook_in_par)
+                       //   fix it so we don't get sections inside standard, e.g.
+                       // note that we may then need to make runparams not const, so we
+                       // can communicate that back.
+                       // FIXME Maybe this fix should be in the routines themselves, in case
+                       // they are called from elsewhere.
+                       makeCommand(buf, xs, ourparams, text, par);
+                       ++par;
+                       break;
+               }
+               case LATEX_ENVIRONMENT:
+               case LATEX_LIST_ENVIRONMENT:
+               case LATEX_ITEM_ENVIRONMENT:
+                       // FIXME Same fix here.
+                       send = findEndOfEnvironment(par, pend);
+                       par = makeEnvironment(buf, xs, ourparams, text, par, send);
+                       break;
+               case LATEX_PARAGRAPH:
+                       send = findLast(par, pend, LATEX_PARAGRAPH);
+                       par = makeParagraphs(buf, xs, ourparams, text, par, send);
+                       break;
+               case LATEX_BIB_ENVIRONMENT:
+                       send = findLast(par, pend, LATEX_BIB_ENVIRONMENT);
+                       par = makeParagraphBibliography(buf, xs, ourparams, text, par, send);
+                       break;
        }
 
        return make_pair(par, send);
 }
 
-ParagraphList::const_iterator makeAnySimple(
-               Text const &text,
-               Buffer const &buf,
-               XMLStream &xs,
-               OutputParams const &ourparams,
-               ParagraphList::const_iterator par)
-{
-       auto parnext = par;
-       ++parnext;
-
-       switch (par->layout().latextype) {
-       case LATEX_COMMAND: {
-               // The files with which we are working never have more than
-               // one paragraph in a command structure.
-               // FIXME
-               // if (ourparams.docbook_in_par)
-               //   fix it so we don't get sections inside standard, e.g.
-               // note that we may then need to make runparams not const, so we
-               // can communicate that back.
-               // FIXME Maybe this fix should be in the routines themselves, in case
-               // they are called from elsewhere.
-               makeCommand(buf, xs, ourparams, text, par);
-               return parnext;
-       }
-       case LATEX_ENVIRONMENT:
-       case LATEX_LIST_ENVIRONMENT:
-       case LATEX_ITEM_ENVIRONMENT:
-               // FIXME Same fix here.
-               return makeEnvironment(buf, xs, ourparams, text, par, parnext);
-       case LATEX_PARAGRAPH:
-               return makeParagraphs(buf, xs, ourparams, text, par, parnext);
-       case LATEX_BIB_ENVIRONMENT:
-               return makeParagraphBibliography(buf, xs, ourparams, text, par, parnext);
-       }
-
-       // This should never happen. Return the next paragraph to avoid an infinite loop.
-       return parnext;
-}
-
 } // end anonymous namespace
 
 
@@ -930,7 +883,7 @@ DocBookInfoTag getParagraphsWithInfo(ParagraphList const &paragraphs, pit_type b
                        continue;
                }
 
-               if (par.layout().docbookabstract())
+               if (par.layout().name() == from_ascii("Abstract"))
                        hasAbstractLayout = true;
 
                // Based on layout information, store this paragraph in one set: should be in <info>, must be.
@@ -955,7 +908,7 @@ DocBookInfoTag getParagraphsWithInfo(ParagraphList const &paragraphs, pit_type b
        if (hasAbstractLayout) {
                pit_type pit = bpit;
                while (pit < cpit) { // Don't overshoot the <info> part.
-                       if (paragraphs[pit].layout().docbookabstract())
+                       if (paragraphs[pit].layout().name() == from_ascii("Abstract"))
                                abstract.emplace(pit);
                        pit++;
                }
@@ -1000,22 +953,17 @@ pit_type generateDocBookParagraphWithoutSectioning(
                XMLStream & xs,
                OutputParams const & runparams,
                ParagraphList const & paragraphs,
-               DocBookInfoTag const & info)
+               pit_type bpit,
+               pit_type epit)
 {
-       auto bpit = info.bpit;
        auto par = paragraphs.iterator_at(bpit);
        auto lastStartedPar = par;
        ParagraphList::const_iterator send;
        auto const pend =
-                       (info.epit == (int) paragraphs.size()) ?
-                       paragraphs.end() : paragraphs.iterator_at(info.epit);
-
-       while (bpit < info.epit) {
-               if (info.abstract.find(bpit) != info.abstract.end()) {
-                       bpit += 1;
-                       continue;
-               }
+                       (epit == (int) paragraphs.size()) ?
+                       paragraphs.end() : paragraphs.iterator_at(epit);
 
+       while (bpit < epit) {
                tie(par, send) = makeAny(text, buf, xs, runparams, par, send, pend);
                bpit += distance(lastStartedPar, par);
                lastStartedPar = par;
@@ -1040,25 +988,18 @@ void outputDocBookInfo(
        bool hasAbstract = !info.abstract.empty();
        docstring abstract;
        if (hasAbstract) {
+               pit_type bpitAbstract = *std::min_element(info.abstract.begin(), info.abstract.end());
+               pit_type epitAbstract = *std::max_element(info.abstract.begin(), info.abstract.end());
+
                odocstringstream os2;
-               {
-                       XMLStream xs2(os2);
-                       auto bpit = *std::min_element(info.abstract.begin(), info.abstract.end());
-                       auto epit = 1 + *std::max_element(info.abstract.begin(), info.abstract.end());
-                       // info.abstract is inclusive, epit is exclusive, hence +1 for looping.
-
-                       while (bpit < epit) {
-                               makeAnySimple(text, buf, xs2, runparams, paragraphs.iterator_at(bpit));
-                               xs2 << XMLStream::ESCAPE_NONE << from_ascii("<!-- " + to_string(bpit) + " -->");
-                               bpit += 1;
-                       }
-               }
+               XMLStream xs2(os2);
+               generateDocBookParagraphWithoutSectioning(text, buf, xs2, runparams, paragraphs, bpitAbstract, epitAbstract);
 
                // Actually output the abstract if there is something to do. Don't count line feeds or spaces in this,
                // even though they must be properly output if there is some abstract.
-               abstract = os2.str();
+               docstring abstractContent = os2.str();
                static const lyx::regex reg("[ \\r\\n]*");
-               docstring abstractContent = from_utf8(lyx::regex_replace(to_utf8(abstract), reg, string("")));
+               abstractContent = from_utf8(lyx::regex_replace(to_utf8(abstractContent), reg, string("")));
 
                // Nothing? Then there is no abstract!
                if (abstractContent.empty())
@@ -1075,29 +1016,19 @@ void outputDocBookInfo(
                xs << xml::CR();
        }
 
-       // Output the elements that should go in <info>, before and after the abstract.
-       xs << XMLStream::ESCAPE_NONE << "<!-- shouldBeInInfo -->";
-       for (auto pit : info.shouldBeInInfo) // Typically, the title: these elements are so important and ubiquitous
-               // that mandating a wrapper like <info> would repel users.
-               makeAnySimple(text, buf, xs, runparams, paragraphs.iterator_at(pit));
-       xs << XMLStream::ESCAPE_NONE << "<!-- mustBeInInfo -->";
-       for (auto pit : info.mustBeInInfo)
-               if (info.abstract.find(pit) == info.abstract.end()) // The abstract must be in info, but is dealt with after.
-                       makeAnySimple(text, buf, xs, runparams, paragraphs.iterator_at(pit));
-       xs << XMLStream::ESCAPE_NONE << "<!-- /info -->";
+       // Output the elements that should go in <info>.
+       generateDocBookParagraphWithoutSectioning(text, buf, xs, runparams, paragraphs, info.bpit, info.epit);
 
-       if (hasAbstract) {
-//             string tag = paragraphs[*info.abstract.begin()].layout().docbookforceabstracttag();
-//             if (tag == "NONE")
-//                     tag = "abstract";
-//
-//             xs << xml::StartTag(tag);
-//             xs << xml::CR();
-               xs << XMLStream::ESCAPE_NONE << "<!-- abs -->";
+       if (hasAbstract && !abstract.empty()) { // The second test is probably superfluous.
+               string tag = paragraphs[*info.abstract.begin()].layout().docbookforceabstracttag();
+               if (tag == "NONE")
+                       tag = "abstract";
+
+               xs << xml::StartTag(tag);
+               xs << xml::CR();
                xs << XMLStream::ESCAPE_NONE << abstract;
-               xs << XMLStream::ESCAPE_NONE << "<!-- /abs -->";
-//             xs << xml::EndTag(tag);
-//             xs << xml::CR();
+               xs << xml::EndTag(tag);
+               xs << xml::CR();
        }
 
        // End the <info> tag if it was started.
@@ -1126,14 +1057,23 @@ void docbookFirstParagraphs(
 }
 
 
+bool isParagraphEmpty(const Paragraph &par)
+{
+       InsetList const &insets = par.insetList();
+       size_t insetsLength = distance(insets.begin(), insets.end());
+       bool hasParagraphOnlyNote = insetsLength == 1 && insets.get(0) && insets.get(0)->asInsetCollapsible() &&
+                                                               dynamic_cast<InsetNote *>(insets.get(0));
+       return hasParagraphOnlyNote;
+}
+
+
 void docbookSimpleAllParagraphs(
                Text const & text,
                Buffer const & buf,
                XMLStream & xs,
                OutputParams const & runparams)
 {
-       // Handle the given text, supposing it has no sections (i.e. a "simple" text). The input may vary in length
-       // between a single paragraph to a whole document.
+       // Handle the document, supposing it has no sections (i.e. a "simple" document).
 
        // First, the <info> tag.
        ParagraphList const &paragraphs = text.paragraphs();
@@ -1141,14 +1081,27 @@ void docbookSimpleAllParagraphs(
        pit_type const epit = runparams.par_end;
        DocBookInfoTag info = getParagraphsWithInfo(paragraphs, bpit, epit);
        outputDocBookInfo(text, buf, xs, runparams, paragraphs, info);
+       bpit = info.bpit;
+
+       // Then, the content.
+       ParagraphList::const_iterator const pend =
+                       (epit == (int) paragraphs.size()) ?
+                       paragraphs.end() : paragraphs.iterator_at(epit);
 
-       // Then, the content. It starts where the <info> ends.
-       bpit = info.epit;
        while (bpit < epit) {
                auto par = paragraphs.iterator_at(bpit);
-               if (!hasOnlyNotes(*par))
-                       makeAnySimple(text, buf, xs, runparams, par);
-               bpit += 1;
+               ParagraphList::const_iterator const lastStartedPar = par;
+               ParagraphList::const_iterator send;
+
+               if (isParagraphEmpty(*par)) {
+                       ++par;
+                       bpit += distance(lastStartedPar, par);
+                       continue;
+               }
+
+               // Generate this paragraph.
+               tie(par, send) = makeAny(text, buf, xs, runparams, par, send, pend);
+               bpit += distance(lastStartedPar, par);
        }
 }
 
@@ -1202,7 +1155,7 @@ void docbookParagraphs(Text const &text,
                ParagraphList::const_iterator const lastStartedPar = par;
                ParagraphList::const_iterator send;
 
-               if (hasOnlyNotes(*par)) {
+               if (isParagraphEmpty(*par)) {
                        ++par;
                        bpit += distance(lastStartedPar, par);
                        continue;
@@ -1297,4 +1250,4 @@ void docbookParagraphs(Text const &text,
        }
 }
 
-} // namespace lyx
\ No newline at end of file
+} // namespace lyx
index 3c409c2376e89bddeeed8dfb0da1f74ab684f23d..12e7f25fa52b593245cb1be6b595f9954dc55c30 100644 (file)
--- a/src/xml.h
+++ b/src/xml.h
@@ -18,8 +18,6 @@
 #include <deque>
 #include <memory>
 
-#include <iostream>
-
 namespace lyx {
 
 class Buffer;