commit 633a617841f6a5fe1ca79ee28e555ec75985998e
Author: Thibaut Cuvelier <[email protected]>
Date:   Sat Nov 28 01:23:22 2020 +0100

    DocBook: implement Copernicus.
    
    Includes a fix when wrappers are used with empty paragraphs. The logic is 
probably wrong if two legit wrapped paragraphs have one empty paragraph in the 
middle. This is only for slightly convoluted cases... Wrapping decisions should 
rather be taken for a series of paragraphs at once, but it would be more 
complex to implement and would only solve very peculiar cases like these ones.
---
 development/autotests/invertedTests |    1 +
 lib/layouts/copernicus.layout       |   62 +++++++++++++++++++++++++++++++++++
 src/output_docbook.cpp              |    8 ++++
 3 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/development/autotests/invertedTests 
b/development/autotests/invertedTests
index 9e8ec54..3f8f72b 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -519,6 +519,7 @@ 
export/templates/Articles/Hebrew_Article_%28KOMA-Script%29_docbook5
 # - Empty figure. Broken references. Float notes not implemented (how to do 
it?).
 export/templates/Articles/American_Economic_Association_%28AEA%29_docbook5
 
export/templates/Articles/American_Psychological_Association_%28APA%29,_v._7_docbook5
+# - No author name.
 
 Sublabel: docbook poster
 # Posters cannot be properly exported, the LyX documents are too far from
diff --git a/lib/layouts/copernicus.layout b/lib/layouts/copernicus.layout
index dd6e67c..8eff50b 100644
--- a/lib/layouts/copernicus.layout
+++ b/lib/layouts/copernicus.layout
@@ -93,6 +93,12 @@ Style Affil
                LabelString     "Affiliation Mark"
                ToolTip         "identify the author with the corresponding 
affiliation. 1, 2, 3, etc. should be inserted."
        EndArgument
+       DocBookTag            address
+       DocBookTagType        block
+       DocBookWrapperTag     author
+       DocBookWrapperTagType inline
+       DocBookWrapperMergeWithPrevious  true
+       DocBookInInfo         always
 End
 
 Style Running_Title
@@ -101,6 +107,9 @@ Style Running_Title
        CopyStyle       InFrontmatter
        LatexName       runningtitle
        LabelString     "Running title:"
+       DocBookTag            titleabbrev
+       DocBookTagType        paragraph
+       DocBookInInfo         maybe
 End
 
 Style FirstPage
@@ -114,6 +123,8 @@ Style FirstPage
                Shape           Italic
                Color           Red
        EndFont
+       DocBookTag            IGNORE
+       DocBookInInfo         maybe
 End
 
 Style RunningAuthor
@@ -122,6 +133,9 @@ Style RunningAuthor
        CopyStyle       InFrontmatter
        LatexName       runningauthor
        LabelString     "Running author:"
+       DocBookTag            authorinitials
+       DocBookTagType        paragraph
+       DocBookInInfo         maybe
 End
 
 Style Publications
@@ -151,6 +165,9 @@ Style Correspondence
        CopyStyle       Publications
        LatexName       correspondence
        LabelString     "Correspondence:"
+       DocBookTag      address
+       DocBookAttr     role='correspondence'
+       DocBookInInfo   always
 End
 
 Style Received
@@ -159,6 +176,9 @@ Style Received
        CopyStyle       Publications
        LatexName       received
        LabelString     "Received:"
+       DocBookTag      date
+       DocBookAttr     role='received'
+       DocBookInInfo   always
 End
 
 Style Accepted
@@ -167,6 +187,9 @@ Style Accepted
        CopyStyle       Publications
        LatexName       accepted
        LabelString     "Accepted:"
+       DocBookTag      date
+       DocBookAttr     role='accepted'
+       DocBookInInfo   always
 End
 
 Style Pubdiscuss
@@ -176,6 +199,9 @@ Style Pubdiscuss
        CopyStyle       Publications
        LatexName       pubdiscuss
        LabelString     "Pubdiscuss:"
+       DocBookTag      date
+       DocBookAttr     role='pubdiscuss'
+       DocBookInInfo   always
 End
 
 Style Revised
@@ -185,6 +211,9 @@ Style Revised
        CopyStyle       Publications
        LatexName       revised
        LabelString     "Revised:"
+       DocBookTag      date
+       DocBookAttr     role='revised'
+       DocBookInInfo   always
 End
 
 Style Published
@@ -194,6 +223,9 @@ Style Published
        CopyStyle       Publications
        LatexName       published
        LabelString     "Published:"
+       DocBookTag      date
+       DocBookAttr     role='published'
+       DocBookInInfo   always
 End
 
 Style Abstract
@@ -224,12 +256,19 @@ Style Statements
        LatexType       Command
        Margin          Dynamic
        KeepEmpty       0
+       DocBookTag      para
+       DocBookAttr     role='statements'
 End
 
 Style Copyrightstatement
        CopyStyle       Statements
        LatexName       copyrightstatement
        LabelString     "Copyright:"
+       DocBookTag            para
+       DocBookWrapperTag     legalnotice
+       DocBookWrapperTagType block
+       DocBookWrapperMergeWithPrevious  true
+       DocBookInInfo         maybe
 End
 
 Style Introduction
@@ -238,6 +277,8 @@ Style Introduction
        LabelString     "\thesection Introduction"
        KeepEmpty       1
        LabelSep        ""
+       DocBookSection  true
+       DocBookSectionTag  section
 End
 
 Style Conclusions
@@ -246,6 +287,8 @@ Style Conclusions
        LabelString     "\thesection Conclusions"
        KeepEmpty       1
        LabelSep        ""
+       DocBookSection  true
+       DocBookSectionTag  section
 End
 
 Counter appendix
@@ -308,24 +351,32 @@ Style CodeAvailability
        CopyStyle       Statements
        LabelString     "Code availability."
        LatexName       codeavailability
+       DocBookTag      para
+       DocBookAttr     role='codeavailability'
 End
 
 Style DataAvailability
        CopyStyle       Statements
        LabelString     "Data availability."
        LatexName       dataavailability
+       DocBookTag      para
+       DocBookAttr     role='dataavailability'
 End
 
 Style CodeAndDataAvailability
        CopyStyle       Statements
        LabelString     "Code and data availability."
        LatexName       codedataavailability
+       DocBookTag      para
+       DocBookAttr     role='codedataavailability'
 End
 
 Style SampleAvailability
        CopyStyle       Statements
        LabelString     "Sample availability."
        LatexName       sampleavailability
+       DocBookTag      para
+       DocBookAttr     role='sampleavailability'
 End
 
 Style Statements2
@@ -334,30 +385,41 @@ Style Statements2
        TopSep          1.3
        BottomSep       0.7
        ParSep          0.7
+       DocBookTag      para
+       DocBookAttr     role='statements'
 End
 
 Style AuthorContribution
        CopyStyle       Statements2
        LabelString     "Author contributions."
        LatexName       authorcontribution
+       DocBookTag      para
+       DocBookAttr     role='authorcontribution'
 End
 
 Style CompetingInterests
        CopyStyle       Statements2
        LatexName       competinginterests
        LabelString     "Competing Interests."
+       DocBookTag      para
+       DocBookAttr     role='competinginterests'
 End
 
 Style Disclaimer
        CopyStyle       Statements2
        LatexName       disclaimer
        LabelString     "Disclaimer."
+       DocBookTag      para
+       DocBookAttr     role='disclaimer'
 End
 
 Style Acknowledgements
        CopyStyle       Statements2
        LatexName       acknowledgements
        LabelString     "Acknowledgements."
+       DocBookTag            para
+       DocBookWrapperTag     acknowledgements
+       DocBookSection        true
 End
 
 Style Bibliography
diff --git a/src/output_docbook.cpp b/src/output_docbook.cpp
index 96e83b2..ec11481 100644
--- a/src/output_docbook.cpp
+++ b/src/output_docbook.cpp
@@ -175,6 +175,10 @@ void openParTag(XMLStream & xs, const Paragraph * par, 
const Paragraph * prevpar
        if (par == prevpar)
                prevpar = nullptr;
 
+       // If the previous paragraph is empty, don't consider it when opening 
wrappers.
+       if (prevpar && prevpar->empty() && !prevpar->allowEmpty())
+               prevpar = nullptr;
+
        // When should the wrapper be opened here? Only if the previous 
paragraph has the SAME wrapper tag
        // (usually, they won't have the same layout) and the CURRENT one 
allows merging.
        // The main use case is author information in several paragraphs: if 
the name of the author is the
@@ -221,6 +225,10 @@ void closeParTag(XMLStream & xs, Paragraph const * par, 
Paragraph const * nextpa
        if (par == nextpar)
                nextpar = nullptr;
 
+       // If the next paragraph is empty, don't consider it when closing 
wrappers.
+       if (nextpar && nextpar->empty() && !nextpar->allowEmpty())
+               nextpar = nullptr;
+
        // See comment in openParTag.
        Layout const & lay = par->layout();
        bool closeWrapper = lay.docbookwrappertag() != "NONE" && 
!runparams.docbook_ignore_wrapper;
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to