I would like to share with you some tools I’ve working on, which I call JATSetter. It’s still under development but it’s at the point where most of the features are present and able to help during me during the typesetting process.
These use Python 3 and XSLT so that you can work on the production of XML and LaTeX using your own computer. There’s probably some feature overlap with the JATS2LaTeX parser. Some code is journal-specific, but it should not be too difficult to customise the XSLT for other use cases.
Its main features:
- Extract metadata from OJS using the API and output it in TOML format. This allows me to feed metadata into Hugo to generate a static mirror of the OJS frontend. This collects information on the article type, author names, affiliations, issue details, abstract, keywords and reference list. It doesn’t link author names to affiliations because people often have more than one affiliation, so I need to manually enter data there anyway. It also doesn’t extract funder information because that info seems to be handled separately.
- Help out with Texture-generated XML. Texture is now abandonware, but I still find it useful for producing either the main body or reference list in JATS. However, I dislike its xref linking and (I find) it can’t handle long reference lists (>80-100 references) and is prone to crashing. So I have a script here to tag the body of the JATS XML and do the xrefs for figures, tables and references (assumes a Vancouver in-text citation style).
- Convert components between LaTeX and JATS XML formats, e.g. create a JATS-formatted reference list from a .bib file or vice-versa. It also has some custom XSLT stylesheets for converting XML to LaTeX. If you need a different layout to me, you can use it with any XSLT 1.0 stylesheet.
I do my JATS frontmatter using a custom Hugo template, but am planning to bring that into JATSetter once I’m happy with it. I also plan to eventually use this to generate Crossref XML in the 5.3 schema, so that it include ROR, multiple affiliations and Crossmark.