[[asciidoc]]
== AsciiDoc documentation

Erlang.mk provides rules for generating documentation from
AsciiDoc files. It can automatically build a user guide PDF,
chunked HTML documentation and Unix manual pages.

=== Requirements

It is necessary to have http://asciidoc.org/[AsciiDoc], 
http://xmlsoft.org/XSLT/xsltproc2.html[xsltproc] and
http://dblatex.sourceforge.net/[dblatex] installed on your
system for erlang.mk to generate documentation from AsciiDoc sources.

=== Writing AsciiDoc documentation

http://asciidoc.org/[AsciiDoc] is a text document format for
writing notes, documentation, articles, books, ebooks, slideshows,
web pages, man pages and blogs. AsciiDoc files can be translated
to many formats including HTML, PDF, EPUB, man page.

The http://asciidoc.org/userguide.html[AsciiDoc user guide]
describes the AsciiDoc syntax.

The https://github.com/ninenines/erlang.mk/tree/master/doc/src/guide[Erlang.mk user guide]
is written in AsciiDoc and can be used as an example. The entry
file is https://github.com/ninenines/erlang.mk/blob/master/doc/src/guide/book.asciidoc[book.asciidoc].

Erlang.mk expects you to put your documentation in a specific
location. This is 'doc/src/guide/' for the user guide, and
'doc/src/manual/' for the function reference. In the case of
the user guide, the entry point is always 'doc/src/guide/book.asciidoc'.

For manual pages, it is good practice to use section 3 for
modules, and section 7 for the application itself.

=== Configuration

All of the AsciiDoc related configuration can be done directly
inside the files themselves.

=== Usage

To build all documentation:

[source,bash]
$ make docs

To build only the AsciiDoc documentation:

[source,bash]
$ make asciidoc

To build only the user guide:

[source,bash]
$ make asciidoc-guide

To build only the manual:

[source,bash]
$ make asciidoc-manual

To install man pages on Unix:

[source,bash]
$ make install-docs

Erlang.mk allows customizing the installation path and sections
of the man pages to be installed. The `MAN_INSTALL_PATH` variable
defines where man pages will be installed. It defaults to
'/usr/local/share/man'. The `MAN_SECTIONS` variable defines
which manual sections are to be installed. It defaults to `3 7`.

To install man pages to a custom location:

[source,bash]
$ make install-docs MAN_INSTALL_PATH=/opt/share/man

Note that you may need to run the install commands using
`sudo` or equivalent if the location is not writeable by
your user.
