= Metanorma processor for M3AAWG documents (M3D)
https://github.com/metanorma/metanorma-m3d[metanorma-m3d] image:https://img.shields.io/gem/v/metanorma-m3d.svg["Gem Version", link="https://rubygems.org/gems/metanorma-m3d"]::
image:https://github.com/metanorma/metanorma-m3d/workflows/macos/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-m3d/actions?workflow=macos"]
image:https://github.com/metanorma/metanorma-m3d/workflows/windows/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-m3d/actions?workflow=windows"]
image:https://github.com/metanorma/metanorma-m3d/workflows/ubuntu/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-m3d/actions?workflow=ubuntu"]
image:https://codeclimate.com/github/metanorma/metanorma-m3d/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/metanorma-m3d"]
image:https://img.shields.io/github/issues-pr-raw/metanorma/metanorma-m3d.svg["Pull Requests", link="https://github.com/metanorma/metanorma-m3d/pulls"]
image:https://img.shields.io/github/commits-since/metanorma/metanorma-m3d/latest.svg["Commits since latest",link="https://github.com/metanorma/metanorma-m3d/releases"]
Formerly known as asciidoctor-m3d
.
== Functionality
This gem processes http://asciidoctor.org/[Asciidoctor] documents following
a template for generating M3D documents.
The gem currently inherits from the https://github.com/metanorma/metanorma-standoc
gem, and aligns closely to it. Refer to the ISO gem documentation
for guidance, including https://github.com/metanorma/metanorma-iso/wiki/Guidance-for-authoring
The following outputs are generated.
- (Optional) An HTML preview generated directly from the Asciidoctor document,
using native Asciidoctor formatting.
** http://asciimath.org[AsciiMathML] is to be used for mathematical formatting.
The gem uses the https://github.com/asciidoctor/asciimath[Ruby AsciiMath parser],
which is syntactically stricter than the common MathJax processor;
if you do not get expected results, try bracketing terms your in AsciiMathML
expressions.
- an XML representation of the document, intended as a document model for M3D
International Standards.
- The XML representation is processed in turn to generate the following outputs
as end deliverable M3D standard drafts.
** HTML
** DOC
This AsciiDoc syntax for writing M3D standards is hereby named "AsciiM3D".
== Usage
The preferred way to invoke this gem is via the metanorma
script:
[source,console]
$ metanorma --type m3d a.adoc # output HTML and DOC
$ metanorma --type m3d --extensions html a.adoc # output just HTML
$ metanorma --type m3d --extensions doc a.adoc # output just DOC
$ metanorma --type m3d --extensions xml a.adoc # output M3D XML
The gem translates the document into M3D XML format, and then
validates its output against the M3D XML document model; errors are
reported to console against the XML, and are intended for users to
check that they have provided all necessary components of the
document.
The gem then converts the XML into HTML and DOC.
The gem can also be invoked directly within asciidoctor, though this is deprecated:
[source,console]
$ asciidoctor -b m3d -r 'metanorma-m3d' a.adoc
=== Installation
If you are using a Mac, the https://github.com/metanorma/metanorma-macos-setup
repository has instructions on setting up your machine to run Metanorma
scripts such as this one. You need only run the following in a Terminal console:
[source,console]
== Documentation
See https://www.metanorma.com/author/m3d/[Author M^3^AAWG documents with Metanorma-M3D]
== Data Models
The M3D Standard Document format is an instance of the
https://github.com/metanorma/metanorma-model-standoc[StandardDocument model]. Details of
this general model can be found on its page. Details of the M3D modifications
to this general model can be found on the https://github.com/metanorma/metanorma-model-m3d[M3D model]
repository.
////
== Examples
////