= asciidoctor(1)
Dan Allen; Sarah White
:doctype: manpage
:release-version: 2.0.26
:man manual: Asciidoctor Manual
:man source: Asciidoctor {release-version}
ifdef::backend-manpage[:!author:]

== Name

asciidoctor - converts AsciiDoc source files to HTML, DocBook, and other formats

== Synopsis

*asciidoctor* [_OPTION_]... _FILE_...

== Description

The asciidoctor(1) command converts the AsciiDoc source file(s) _FILE_ to HTML5, DocBook 5, man(ual) page, and other custom output formats.

If _FILE_ is _-_ then the AsciiDoc source is read from standard input.

== Options

// tag::options[]
=== Security Settings

*-B, --base-dir*=_DIR_::
  Base directory containing the document and resources.
  Defaults to the directory containing the source file or, if the source is read from a stream, the working directory.
  When combined with the safe mode setting, can be used to chroot the execution of the program.

*-S, --safe-mode*=_SAFE_MODE_::
  Set safe mode level: _unsafe_, _safe_, _server_, or _secure_.
  Disables potentially dangerous macros in source files, such as `include::[]`.
  If not set, the safe mode level defaults to _unsafe_ when Asciidoctor is invoked using this script.

*--safe*::
  Set safe mode level to _safe_.
  Enables include directives, but prevents access to ancestor paths of source file.
  Provided for compatibility with the asciidoc command.
  If not set, the safe mode level defaults to _unsafe_ when Asciidoctor is invoked using this script.

=== Document Settings

*-a, --attribute*=_ATTRIBUTE_::
  Define, override, or unset a document attribute.
  Command-line attributes take precedence over attributes defined in the source file unless either the name or value ends in _@_.
  No substitutions are applied to the value.
+
_ATTRIBUTE_ is normally formatted as a key-value pair, in the form _NAME=VALUE_.
Alternate forms are _NAME_ (where the _VALUE_ defaults to an empty string), _NAME!_ (unsets the _NAME_ attribute), and _NAME=VALUE@_ (or _NAME@=VALUE_) (where _VALUE_ does not override the _NAME_ attribute if it's already defined in the source document).
A value containing spaces must be enclosed in quotes, in the form _NAME="VALUE WITH SPACES"_.
+
This option may be specified more than once.

*-b, --backend*=_BACKEND_::
  Backend output file format: _html5_, _docbook5_, and _manpage_ are supported out of the box.
  You can also use the backend alias names _html_ (aliased to _html5_) or _docbook_ (aliased to _docbook5_).
  Other values can be passed, but if Asciidoctor cannot resolve the backend to a converter, it will fail.
  Defaults to _html5_.

*-d, --doctype*=_DOCTYPE_::
  Document type: _article_, _book_, _manpage_, or _inline_.
  Sets the root element when using the _docbook_ backend and the style class on the HTML body element when using the _html_ backend.
  The _book_ document type allows multiple level-0 section titles in a single document.
  The _manpage_ document type enables parsing of metadata necessary to produce a man page.
  The _inline_ document type allows the content of a single paragraph to be formatted and returned without wrapping it in a containing element.
  Defaults to _article_.

=== Document Conversion

*-D, --destination-dir*=_DIR_::
  Destination output directory.
  Defaults to the directory containing the source file or, if the source is read from a stream, the working directory.
  If specified, the directory is resolved relative to the working directory.

*-E, --template-engine*=_NAME_::
  Template engine to use for the custom converter templates.
  The gem with the same name as the engine will be loaded automatically.
  This name is also used to build the full path to the custom converter templates.
  If a template engine is not specified, it will be auto-detected based on the file extension of the custom converter templates found.

*-e, --embedded*::
  Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document.
  This option is useful for producing documents that can be inserted into an external template.

*-I, --load-path*=_DIRECTORY_::
  Add the specified directory to the load path, so that _-r_ can load extensions from outside the default Ruby load path.
  This option may be specified more than once.

*-n, --section-numbers*::
  Auto-number section titles.
  Synonym for *--attribute sectnums*.

*-o, --out-file*=_OUT_FILE_::
  Write output to file _OUT_FILE_.
  Defaults to the base name of the input file suffixed with _backend_ extension.
  The file is resolved relative to the working directory.
  If the input is read from standard input or a named pipe (fifo), then the output file defaults to stdout.
  If _OUT_FILE_ is _-_, then the output file is written to standard output.

*-R, --source-dir*=_DIR_::
  Source directory.
  Currently only used if the destination directory is also specified.
  Used to preserve the directory structure of files converted within this directory in the destination directory.
  If specified, the directory is resolved relative to the working directory.

*-r, --require*=_LIBRARY_::
  Require the specified library before executing the processor, using the standard Ruby require.
  This option may be specified more than once.

*-s, --no-header-footer*::
  Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document.
  This option is useful for producing documents that can be inserted into an external template.

*-T, --template-dir*=_DIR_::
  A directory containing custom converter templates that override one or more templates from the built-in set.
  (requires _tilt_ gem)
+
If there is a subfolder that matches the engine name (if specified), that folder is appended to the template directory path.
Similarly, if there is a subfolder in the resulting template directory that matches the name of the backend, that folder is appended to the template directory path.
+
This option may be specified more than once.
Matching templates found in subsequent directories override ones previously discovered.

=== Processing Information

*--failure-level*=_LEVEL_::
  Set the minimum logging level (default: FATAL) that yields a non-zero exit code (i.e., failure).
  If this option is not set, the program exits with a zero exit code even if warnings or errors have been logged.

*-q, --quiet*::
  Silence application log messages and script warnings.

*--trace*::
  Include backtrace information when reporting errors.

*-v, --verbose*::
  Sets log level to DEBUG so application messages logged at INFO or DEBUG level are printed to stderr.

*-w, --warnings*::
  Turn on script warnings (applies to executed code).

*-t, --timings*::
  Print timings report to stderr (time to read, parse, and convert).

=== Program Information

*-h, --help* [_TOPIC_]::
  Print a help message.
  Show the command usage if _TOPIC_ is not specified or recognized.
  Dump the Asciidoctor man page (in troff/groff format) if _TOPIC_ is _manpage_.
  Print an AsciiDoc syntax crib sheet (in AsciiDoc) if _TOPIC_ is _syntax_.

*-V, --version*::
  Print program version number.
+
*-v* can also be used if no source files are specified.
// end::options[]

== Environment

*Asciidoctor* honors the *SOURCE_DATE_EPOCH* environment variable.
If this variable is assigned an integer value, that value is used as the epoch of all input documents and as the local date and time.
See https://reproducible-builds.org/specs/source-date-epoch/ for more information about this environment variable.

== Exit Status

*0*::
  Success.

*1*::
  Failure (syntax or usage error; configuration error; document processing failure; unexpected error).

== Bugs

Refer to the *Asciidoctor* issue tracker at https://github.com/asciidoctor/asciidoctor/issues?q=is%3Aopen.

== Authors

*Asciidoctor* is led and maintained by Dan Allen and Sarah White and has received contributions from many individuals in the Asciidoctor community.
The project was started in 2012 by Ryan Waldron based on a prototype written by Nick Hengeveld for the Git website.
Jason Porter wrote the first implementation of the CLI interface provided by this command.

*AsciiDoc.py* was created by Stuart Rackham and has received contributions from many individuals in the AsciiDoc.py community.

== Resources

*Project website:* https://asciidoctor.org

*Project documentation:* https://docs.asciidoctor.org

*Community chat:* https://chat.asciidoctor.org

*Source repository:* https://github.com/asciidoctor/asciidoctor

*Mailing list archive:* https://discuss.asciidoctor.org

== Copying

Copyright \(C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor.
Use of this software is granted under the terms of the MIT License.
