diff options
Diffstat (limited to 'doc/asciidoc/examples/website/faq.txt')
-rw-r--r-- | doc/asciidoc/examples/website/faq.txt | 1358 |
1 files changed, 1358 insertions, 0 deletions
diff --git a/doc/asciidoc/examples/website/faq.txt b/doc/asciidoc/examples/website/faq.txt new file mode 100644 index 0000000..2723f20 --- /dev/null +++ b/doc/asciidoc/examples/website/faq.txt @@ -0,0 +1,1358 @@ +AsciiDoc Frequently Asked Questions +=================================== + + +NOTE: New FAQs are appended to the bottom of this document. + +///////////////////////////////////////////////////////////////// +ADD NEW FAQS TO THE BOTTOM OF THIS DOCUMENT TO MAINTAIN NUMBERING +///////////////////////////////////////////////////////////////// + +== How do you handle spaces in included file names? +Spaces are not allowed in macro targets so this include macro will not +be processed: + + include::my document.txt[] + +The work-around is to replace the spaces with the `{sp}` (space +character) attribute, for example: + + include::my{sp}document.txt[] + + +== How do I number all paragraphs? +Some documents such as specifications and legalese require all +paragraphs to be sequentially numbered through the document, and to be +able to reference these numbers. + +This can be achieved by using the DocBook toolchain but numbering the +paragraphs with AsciiDoc using a custom config file containing the +following (see http://www.methods.co.nz/asciidoc/userguide.html#X27 +for ways to include such a file): + +--------------------------------------------------------------------- +[paragraph] +<formalpara{id? id="{id}"}{role? role="{role}"}{id? xreflabel="{paracounter}"}><title>{title}</title><para> +{title%}<simpara{id? id="{id}"}{role? role="{role}"}{id? xreflabel="{paracounter}"}> +{paracounter} | +{title%}</simpara> +{title#}</para></formalpara> +{counter2:paracounter} +{empty} +--------------------------------------------------------------------- + +References to the paragraphs operate in the normal way, you label the +paragraph: + +----------------------------- +[[some_label_you_understand]] +paragraph contents +----------------------------- + +and reference it in the normal manner: + +----------------------------- +<<some_label_you_understand>> +----------------------------- + +The text of the reference will be the paragraph number. + +For this to work for HTML you have to generate it via the DocBook +toolchain. + + +== Sources of information on configuring DocBook toolchains +DocBook is a content and structure markup language, therefore +AsciiDoc generated DocBook markup is also limited to content and +structure. Layout and formatting definition is specific to the +DocBook toolchain. + +The dblatex toolchain can be configured by setting parameters defined +at http://dblatex.sourceforge.net/doc/manual/sec-params.html or for +more complex styling by custom Latex stylesheets described at +http://dblatex.sourceforge.net/doc/manual/sec-custom-latex.html. + +Similarly FOP can be configured by parameters described at +http://sagehill.net/docbookxsl/OptionsPart.html and with custom xsl +stylesheets generating formatting objects as described at +http://sagehill.net/docbookxsl/CustomizingPart.html. + + +[[X5]] +== How can I include embedded fonts in an EPUB document? +This is a two step process: + +1. Declare the font files and their use in your document's CSS + stylesheet. For example: ++ +[listing] +......................................... +@font-face { + font-family : LiberationSerif-Regular; + font-weight : normal; + font-style: normal; + src : url(LiberationSerif-Regular.ttf); +} + +body { + font-family: LiberationSerif-Regular, serif; +} +......................................... + +2. Declare the font file as resource when you use `a2x(1)` to + compile the EPUB. For example: + + a2x -f epub -d book --epubcheck --stylesheet epubtest.css --resource .ttf=application/x-font-ttf --resource LiberationSerif-Regular.ttf epubtest.txt + +[NOTE] +====== +- Requires AsciiDoc 8.6.5 or better. +- The True Type Font mimetype had to be declared explicitly with the + `--resource .ttf=application/x-font-ttf` option because it wasn't + registered on my Linux system. +- In the above example the font file is in the same directory as the + AsciiDoc source file and is installed to the same relative location + in the EPUB archive OEBPS directory -- if your font file resides in + a different location you'll need to adjust the `--resource` option + accordingly (see the 'RESOURCES' section in the `a2x(1)` man page + for details). +- The URL value of the CSS 'src' property is set to the destination + font file relative to the CSS file. +- The `--resource` option allows you to inject any file (not just font + files) into the EPUB output document. +- Using the CSS '@font-face' rule is a complex subject and is outside + the scope of this FAQ. +- Many EPUB readers do not process embedded fonts. +====== + + +== What's the difference between + quoted text and ` quoted monospaced text? +`+` (plus) quoted text is implemented as an AsciiDoc 'quotes' whereas ++`+ (grave accent or backtick) quoted text is implemented as an +AsciiDoc 'inline literal' passthrough macro. The semantics are +different: + +1. Inline passthrough macros are processed before any other inline + substitutions e.g. all of the following line will be processed as a + single inline passthrough and rendered as monospaced text (which is + not the intended result): ++ +-- + `single quoted text' and `monospaced quoted text` + +This line works as expected: + + `single quoted text' and +monospaced quoted text+ +-- + +2. Backtick quoted text is rendered literally i.e. no substitutions + are performed on the enclosed text. Here are some examples that + would have to be escaped if plus quoting were used (<<X4,see + also>>): + + The `++i` and `++j` auto-increments. + Paths `~/.vim` and `~/docs`. + The `__init__` method. + The `{id}` attribute. + + +== Why is the generated HTML title element text invalid? +Probably because your document title contains formatting that has +generated HTML title markup. You can resolve this by explicitly +defining the 'title' attribute in your document's header. + + +== AsciiDoc sometimes generates invalid output markup, why? +AsciiDoc is backend agnostic, the 'asciidoc' command has no knowledge +of the syntax or structure of the backend format that it generates. +Output document validation (syntactic and structural) should be +performed separately by external validation tools. For example, +AsciiDoc's 'a2x' toolchain command automatically performs validation +checks using 'xmllint'. + + +== The AsciiDoc toclevels attribute does not work with DocBook outputs, why? +DocBook has no provision for specifying table of contents levels but +you can set the TOC level further down the toolchain by passing the +DocBook XSL Stylesheets +http://docbook.sourceforge.net/release/xsl/current/doc/html/toc.section.depth.html[toc.section.depth] +parameter to 'dblatex' (using the `--param` option) or 'xsltproc' +(using the `--stringparam` option). For example to show only chapter +titles in the TOC of a 'book' document set 'toc.section.depth' to '0'. +Increment the 'toc.section.depth' value to show more sub-section +titles. If you are using 'a2x' you can set the options in the source +file, for example: + + // a2x: --xsltproc-opts "--stringparam toc.section.depth 0" + // a2x: --dblatex-opts "--param toc.section.depth=0" + +If the document is of type 'article' use the value '1' to show only +top level section titles in the TOC, use the value '2' for two levels +etc. + + +== How can I include chapter and section tables of contents? +DocBook outputs processed by DocBook XSL Stylesheets (either manually +or via 'a2x') can generate additional separate section and chapter +tables of contents using combinations of the +http://www.sagehill.net/docbookxsl/TOCcontrol.html[TOC parameters]. +Here are some examples using combinations of the +`generate.section.toc.level` and `toc.section.depth` DocBook XSL +Stylesheets parameters: + +[cols="2*l,4",width="90%",frame="topbot",options="header"] +|====================================================== +|generate.section.toc.level |toc.section.depth | +|1 | +|Single level book chapter TOCs or article section TOCs + +|1 | 3 +|Article section TOCs with two levels + +|1 | 2 +|Book chapter TOCs with two levels +|====================================================== + + +== How can I customize the appearance of XHTML and EPUB documents generated by a2x? +You can customize the appearance of an EPUB document with CSS. See +the link:publishing-ebooks-with-asciidoc.html[Sherlock Holmes eBook +example] on the AsciiDoc website. + + +== DocBook has many elements for document meta-data -- how can I use them from AsciiDoc? +The 'docinfo', 'docinfo1' and 'docinfo2' attributes allow you include +link:userguide.html#X97[document information files] containing DocBook +XML into the header of the output file. + + +== Do element titles automatically generate link captions? +If you go the DocBook route then yes -- just omit the caption from the +AsciiDoc 'xref' (`<<...>>`) macro. Both dblatex and DocBook XSL will +use the target element's title text. Examples: + +[listing] +.................................................................. +[[X1]] +Section One +----------- +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas +ultrices justo porttitor augue. Vestibulum pretium. Donec porta + +See also <<X3>> (this link displays the text 'A titled paragraph'). + +[id="X2",reftext="2nd section"] +Section Two +----------- +See also <<X1>> (this link displays the text 'Section One'). + +[[X3]] +.A titled paragraph +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + +See also <<X2>> (this link displays the text '2nd section'). +.................................................................. + +The AsciiDoc 'reftext' attribute has been used to explicitly set the +link text to '2nd section' for 'Section Two'. + + +== Can I define my own table styles? +In addition to the built-in styles you can define your own. This +(simplified) example for HTML backends defines a table style called +'red' which sets the background cell color to red. First put the +definition in a configuration file: + +[listing] +......................................... +[tabledef-default] +red-style=tags="red" + +[tabletags-red] +bodydata=<td style="background-color:red;">|</td> +......................................... + +Now you can use the style name to style cells or columns (in this +example we use an unambiguous shortened abbreviation 'r'): + +[listing] +......................................... +|================================== +|Normal cell r|Red cell +|================================== +......................................... + + +== How can I add highlighted editorial comments to an AsciiDoc document? +Both block and inline link:userguide.html#X25[comment lines] are +displayed on the output if the 'showcomments' attribute is defined. +Example: + +[listing] +......................................... +:showcomments: +// A block comment line. + +Qui in magna commodo, est labitur dolorum an. Est ne magna primis +// An inline comment line. +adolescens. +......................................... + +Is rendered as: + +:showcomments: +// A block comment line. + +Qui in magna commodo, est labitur dolorum an. Est ne magna primis +// An inline comment line. +adolescens. + +NOTE: link:userguide.html#X26[Comment blocks] are never displayed. + + +== What is the preferred file name extension for AsciiDoc files? +The `.txt` http://en.wikipedia.org/wiki/Text_file[text file] extension +is preferred, but it's just a convention and it's not enforced by the +software. + +AsciiDoc source files are human readable +http://en.wikipedia.org/wiki/Plain_text[plain text] files which is +what the `.txt` extension is for. All text editors recognize and open +files with a `.txt` extension. The `.txt` extension is universally +recognized and unambiguous -- you are not left asking questions like +``What on earth is this file with the funny extension?'', ``How do I +open it?'' and ``Is it safe to open?''. + + +== How can I generate numbered bibliographic entries? +If your outputs are DocBook generated then adding the following inline +macro to a custom configuration file will result in auto-incrementing +bibliography entry numbers (instead of displaying the bibliographic +identifiers): + + [anchor3-inlinemacro] + <anchor id="{1}" xreflabel="[{counter:bibliography1}]"/>[{counter:bibliography2}] + +This FAQ submitted by Bela Hausmann. + + +== How can I include lines of dashes inside a listing block? +A line of four or more dashes will be mistaken for the ListingBlock +terminator, one way round this problem is to use a LiteralBlock styled +as a listing block. For example: + + [listing] + ........................... + Lorum ipsum + ----------- + ........................... + + +== How can I customize PDF files generated by dblatex? + +There are a number of dblatex XSL parameters that can be used to +customize PDF output. You can set them globally in the AsciiDoc +`./dblatex/asciidoc-dblatex.xsl` configuration file or you can also +pass them on the a2x(1) command-line. Here are some examples: + +The +http://dblatex.sourceforge.net/doc/manual/latex.output.revhistory.html[latex.output.revhistory] +parameter is used to suppress the revision history: + + a2x -f pdf --dblatex-opts "-P latex.output.revhistory=0" doc/article.txt + +The +http://dblatex.sourceforge.net/doc/manual/doc.layout.html[doc.layout] +parameter is used to include the cover page and document body (i.e. excludes +table of contents and index), the +http://dblatex.sourceforge.net/doc/manual/doc.publisher.show.html[doc.publisher.show] +parameter is used to exclude the cover page logo: + + a2x -f pdf --dblatex-opts " -P doc.layout=\"coverpage mainmatter\" -P doc.publisher.show=0" doc/article.txt + +See also the +http://dblatex.sourceforge.net/doc/manual/sec-params.html[dblatex XSL +parameter reference]. + + +== How can I add lists of figures and tables to PDFs created by dblatex? +Set the +http://dblatex.sourceforge.net/doc/sec-custom.html[doc.lot.show XSL +parameter] -- you can set it using the dblatex `--param` command-line +option, for example: + + a2x --dblatex-opts="--param=doc.lot.show=figure,table" doc/article.txt + + +== How can I stop the document title being displayed? +You could simply omit the document title, but this will result in a +blank 'title' element in HTML outputs. If you want the HTML 'title' +element to contain the document title then define the 'notitle' +attribute (this will just suppress displaying the title), for example: + + My document title + ================= + :no title: + + +== Why am I having trouble getting nested macros to work? +The following example expands the 'image' inline macro, but the +expansion contains double-quote characters which confuses the ensuing +'footnoteref' macro expansion: + + footnoteref:["F1","A footnote, with an image image:smallnew.png[]"] + +The solution is to use unquoted attribute values, replacing embedded +commas with the comma character entity (`,`): + + footnoteref:[F1,A footnote, with an image image:smallnew.png[]] + +Similarly, you can embed double-quote characters in unquoted attribute +values using the `"` character entity. + + +== Why am I getting DocBook validation errors? +Not all valid AsciiDoc source generates valid DocBook, for example +'special sections' (abstract, preface, colophon, dedication, +bibliography, glossary, appendix, index, synopsis) have different +DocBook schema's to normal document sections. For example, a paragraph +is illegal in a bibliography. + +Don't forget if your document is a book you need to specify the +asciidoc `-d book` command option, if you don't an article DocBook +document will be generated, possibly containing book specific +sections, resulting in validation errors. + + +== How can I disable special section titles? +For example, you want to use 'References' as a normal section name but +AsciiDoc is auto-magically generating a DocBook 'bibliography' +section. All you need to do is explicitly specify the section template +name, for example: + + [sect1] + References + ---------- + + +== How can I insert XML processing instructions into output documents? +Use an inline or block passthrough macros. This example inserts +`<?dblatex bgcolor="#cceeff"?>` into the DocBook output generated by +AsciiDoc: + + pass::[<?dblatex bgcolor="#cceeff"?>] + +NOTE: XML processing instructions are specific to the application that +processes the XML (the previous `dblatex` processing instruction is +recognized by `dblatex(1)` when it processes the DocBook XML generated +by Asciidoc). + + +[[X4]] +== How do I prevent double-quoted text being mistaken for an inline literal? +Mixing doubled-quoted text with inline literal passthroughs can +produce undesired results, for example, all of the following line is +interpreted as an inline literal passthrough: + + ``XXX'' `YYY` + +In this case the solution is to use monospace quoting instead of the +inline literal: + + ``XXX'' +YYY+ + +Use the +\pass:[]+ macro if it's necessary to suppress +substitutions in the monospaced text, for example: + + ``XXX'' +pass:[don't `quote` me]+ + + +== How can I generate a single HTML document file containing images and CSS styles? +With the advent of Internet Explorer 8 all major web browsers now +support the +http://en.wikipedia.org/wiki/Data:_URI_scheme[data URI scheme] for +embedded images. The AsciiDoc 'xhtml11' and 'html5' backends supports +the data URI scheme for embedded images and by default it embeds the +CSS stylesheet. For example the following command will generate a +single `article.html` file containing embedded images, admonition +icons and the CSS stylesheet: + + asciidoc -a data-uri -a icons article.txt + + +== Are there any tools to help me understand what's going on inside AsciiDoc? + +AsciiDoc has a built-in trace mechanism which is controlled by the +'trace' attribute; there is also the `--verbose` command-line option. +These features are detailed in +http://www.methods.co.nz/asciidoc/userguide.html#X82[Appendix G of the +User Guide]. + + +== One-liner ifdef::[]'s are disproportionately verbose can they shortened? + +This is the response to a question posted on the AsciiDoc discussion +list, it illustrates a number of useful techniques. The question arose +because the source highlight filter language identifier for the C++ +language is `c++` when generating PDFs via dblatex (LaTeX listings +package) or `cpp` when generating HTML (GNU source-highlight). + +Using straight `ifdef::[]` block macros we have: + +[listing] +......................................... +\ifdef::basebackend-docbook[] +[source,c++] +\endif::basebackend-docbook[] +\ifdef::basebackend-html[] +[source,cpp] +\endif::basebackend-html[] +----------------------------------------- +class FooParser { +public: + virtual void startDocument() = 0; + virtual void endDocument() = 0; +}; +----------------------------------------- +......................................... + + +This can be shortened using the short form of the `ifdef::[]` macro: + +[listing] +......................................... +\ifdef::basebackend-docbook[[source,c++]] +\ifdef::basebackend-html[[source,cpp]] +----------------------------------------- +class FooParser { +public: + virtual void startDocument() = 0; + virtual void endDocument() = 0; +}; +----------------------------------------- +......................................... + + +Using a conditional attribute instead of the `ifdef::[]` macro is even +shorter: + +[listing] +......................................... +[source,{basebackend@docbook:c++:cpp}] +----------------------------------------- +class FooParser { +public: + virtual void startDocument() = 0; + virtual void endDocument() = 0; +}; +----------------------------------------- +......................................... + + +If you have a number of listings it makes sense to factor the +conditional attribute to a normal attribute: + +[listing] +......................................... +:cpp: {basebackend@docbook:c++:cpp} + +[source,{cpp}] +----------------------------------------- +class FooParser { +public: + virtual void startDocument() = 0; + virtual void endDocument() = 0; +}; +----------------------------------------- +......................................... + + +Even shorter, set the default source highlight filter `language` +attribute so you don't have to specify it every time: + +[listing] +......................................... +:language: {basebackend@docbook:c++:cpp} + +[source] +----------------------------------------- +class FooParser { +public: + virtual void startDocument() = 0; + virtual void endDocument() = 0; +}; +----------------------------------------- +......................................... + + +== Some of my inline passthroughs are not passed through, why? + +Most likely the passthrough encloses another passthrough with a higher +precedence. For example trying to render this +\pass:[]+ with this ++\`\pass:[]`+ results in a blank string because the +\pass:[]+ +passthrough evaluates first, instead use monospaced quoting and escape +the passthrough i.e. ++ \+\\pass:[]+ ++ + + +== How can I place an anchor (link target) on a list item? + +You can't use a 'BlockId' block element inside a list but you can use +the syntactically identical 'anchor' inline macro. For example: + +--------------------- +one:: Item one. +[[X2]]two:: Item two. +three:: Item three. +--------------------- + +This *will not* work: + +--------------------- +one:: Item one. +[[X2]] +two:: Item two. +three:: Item three. +--------------------- + + +== How can I stop lists from nesting? + +If you place two lists with different syntax hard up against each +other then the second list will be nested in the first. If you don't +want the second list to be nested separate them with a comment line +block macro. For example: + +------------------- +1. List 1. +2. List 1. + +// +a. List 2. +b. List 2. +------------------- + + +== Is it possible to include charts in AsciiDoc documents? + +There are a number of programs available that generate presentation +charts from textual specification, for example +http://home.gna.org/pychart/[Pychart] is a library for writing chart +scripts in Python. Here's an example from the 'Pychart' documentation: + +.barchart.py +--------------------------------------------------------------------- +# +# Example bar chart (from Pychart documentation http://home.gna.org/pychart/). +# +from pychart import * +theme.get_options() + +data = [(10, 20, 30, 5), (20, 65, 33, 5), (30, 55, 30, 5), (40, 45, 51, 7), + (50, 25, 27, 3), (60, 75, 30, 5), (70, 80, 42, 5), (80, 62, 32, 5), + (90, 42, 39, 5), (100, 32, 39, 4)] + +# The attribute y_coord=... tells that the Y axis values +# should be taken from samples. +# In this example, Y values will be [40,50,60,70,80]. +ar = area.T(y_coord = category_coord.T(data[3:8], 0), + x_grid_style=line_style.gray50_dash1, + x_grid_interval=20, x_range = (0,100), + x_axis=axis.X(label="X label"), + y_axis=axis.Y(label="Y label"), + bg_style = fill_style.gray90, + border_line_style = line_style.default, + legend = legend.T(loc=(80,10))) + +# Below call sets the default attributes for all bar plots. +chart_object.set_defaults(bar_plot.T, direction="horizontal", data=data) + +# Attribute cluster=(0,3) tells that you are going to draw three bar +# plots side by side. The plot labeled "foo" will the leftmost (i.e., +# 0th out of 3). Attribute hcol tells the column from which to +# retrive sample values from. It defaults to one. +ar.add_plot(bar_plot.T(label="foo", cluster=(0,3))) +ar.add_plot(bar_plot.T(label="bar", hcol=2, cluster=(1,3))) +ar.add_plot(bar_plot.T(label="baz", hcol=3, cluster=(2,3))) +ar.draw() +--------------------------------------------------------------------- + +To execute the script and include the generated chart image in your +document add the following lines to the AsciiDoc source: + +--------------------------------------------------------------------- +// Generate chart image file. +\sys2::[python "{indir}/barchart.py" --format=png --output="{outdir}/barchart.png" --scale=2] + +// Display chart image file. +image::barchart.png[] +--------------------------------------------------------------------- + +[NOTE] +===================================================================== +- The `barchart.py` script is located in the same directory as the + AsciiDoc source file (`{indir}`). +- The generated chart image file (`barchart.png`) is written to the + same directory as the output file (`{outdir}`). +===================================================================== + + +== How can I render indented paragraphs? + +Styling is backend dependent: + +[float] +==== Create an indented paragraph style (xhtml11 and html5 backends) +. Define an 'indented' paragraph style, for example, by putting this + in a custom configuration file: ++ +--------------------------------------------------------------------- +[paradef-default] +indented-style=template="indentedparagraph" + +[indentedparagraph] +<div class="paragraph"{id? id="{id}"} style="text-indent:3em;">{title?<div class="title">{title}</div>}<p> +| +</p></div> +--------------------------------------------------------------------- + +. Now apply the 'indented' style to normal paragraphs, for example: ++ +--------------------------------------------------------------------- +[indented] +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas +ultrices justo porttitor augue. Vestibulum pretium. Donec porta +vestibulum mi. Aliquam pede. Aenean lobortis lorem et lacus. Sed +lacinia. Vivamus at lectus. +--------------------------------------------------------------------- + +[float] +==== Use the role attribute (xhtml11 and html5 backends) +. Add the following line to custom stylesheet: ++ +--------------------------------------------------------------------- +div.paragraph.indented p {text-indent: 3em;} +--------------------------------------------------------------------- + +. Apply the 'role' attribute to indented paragraphs, for example: ++ +--------------------------------------------------------------------- +[role="indented"] +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas +ultrices justo porttitor augue. Vestibulum pretium. Donec porta +vestibulum mi. Aliquam pede. Aenean lobortis lorem et lacus. Sed +lacinia. Vivamus at lectus. +--------------------------------------------------------------------- + +. Include the custom stylesheet by setting the 'stylesheet' attribute + (either from the command-line or with an attribute entry in the + document header). + +[float] +==== Use the role attribute (docbook backend) +. Add the following line to the distributed `docbook-xsl.css` + stylesheet or include it in a custom stylesheet: ++ +--------------------------------------------------------------------- +p.indented {text-indent: 3em;} +--------------------------------------------------------------------- + +. Apply the 'role' attribute to indented paragraphs, for example: ++ +--------------------------------------------------------------------- +[role="indented"] +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas +ultrices justo porttitor augue. Vestibulum pretium. Donec porta +vestibulum mi. Aliquam pede. Aenean lobortis lorem et lacus. Sed +lacinia. Vivamus at lectus. +--------------------------------------------------------------------- + +. If you have included the custom CSS in a separate stylesheet you + will need to specify the stylesheet file name (along with the + default `docbook-xsl.css` stylesheet file name) with the + `html.stylesheet` XSL parameter. If you are using 'a2x(1)' use the + `--stylesheet` option (it sets the `html.stylesheet` XSL parameter), + for example: `--stylesheet "docbook-xsl.css mycss.css"`. + +NOTE: This applies to HTML outputs not PDF. To achieve the same +results with PDF outputs you will need to customize the DocBook XSL +Stylesheets to render indented paragraphs from DocBook `simpara` +elements containing the the `role="indented"` attribute. + + +== Is there a way to set default table grid and frame attributes? + +You can set the 'grid' and 'frame' attributes globally in your +document header with Attribute Entries or from the command-line using +the `--attribute` option. In the following example tables that don't +explicitly set the 'grid' and 'frame' values will default to 'all' and +'topbot' respectively: + +--------------------------------------------------------------------- +:grid: all +:frame: topbot +--------------------------------------------------------------------- + +TIP: This technique can be applied to any block element attribute +(just beware of possible ambiguity, for example, table and image +blocks both have a 'width' attribute). + + +== How can I place a backslash character in front of an attribute reference without escaping the reference? + +Use the predefined `{backslash}` attribute reference instead of an +actual backslash, for example if the `{projectname}` attribute has +the value `foobar` then: + + d:\data{backslash}{projectname} + +would be rendered as: + + d:\data\foobar + +== How can I escape AsciiDoc markup? + +Most AsciiDoc inline elements can be suppressed by preceding them with +a backslash character. These elements include: + +- Attribute references. +- Text formatting. +- Quoting, +- Macros. +- Replacements. +- Special words. +- Table cell separators. + +But there are exceptions -- see the next question. + + +== Some elements can't be escaped with a single backslash + +There are a number of exceptions to the usual single backslash rule +-- mostly relating to URL macros that have two syntaxes or quoting +ambiguity. Here are some non-standard escape examples: + +[cols="l,v",width="40%",frame="topbot",options="header"] +|======================================== +|AsciiDoc | Renders + +2*| +\srackham@methods.co.nz +<\srackham@methods.co.nz> +\mailto:[\srackham@methods.co.nz] + +2*| +\http://www.foo1.co.nz +\\http://www.foobar.com[] +\\http://www.foobar.com[Foobar Limited] + +2*| +A C\++ Library for C++ +\\``double-quotes'' +\*\*F**ile Open\... +|======================================== + +The source of this problem is ambiguity across substitution types -- +the first match unescapes allowing the second to substitute. A +work-around for difficult cases is to side-step the problem using the ++\pass:[]+ passthrough inline macro. + +NOTE: Escaping is unnecessary inside 'inline literal passthroughs' +(backtick quoted text). + + +== How can I escape a list? +Here's how to handle situations where the first line of a paragraph is +mistaken for a list item. + +[float] +==== Numbered and bulleted lists +Precede the bullet or index of the first list item with an `{empty}` +attribute, for example: + + {empty}- Qui in magna commodo est labitur dolorum an. Est ne magna + primis adolescens. + +The predefined `{empty}` attribute is replaced by an empty string and +ensures the first line is not mistaken for a bulleted list item. + +[float] +==== Labeled lists +Two colons or semicolons in a paragraph may be confused with a labeled +list entry. Use the predefined `{two-colons}` and `{two-semicolons}` +attributes to suppress this behavior, for example: + + Qui in magna commodo{two-colons} est labitur dolorum an. Est ne + magna primis adolescens. + +Will be rendered as: + +Qui in magna commodo{two-colons} est labitur dolorum an. Est ne +magna primis adolescens. + + +== How can I set default list and tables styles? + +You can set the element's 'style' entry in a global or custom +configuration file. + +This example this will horizontally style all labeled lists that don't +have an explicit style attribute: + +---------------------------------- +[listdef-labeled] +style=horizontal + +[listdef-labeled2] +style=horizontal +---------------------------------- + +This example will put a top and bottom border on all tables that don't +already have an explicit style attribute: + +---------------------------------- +[tabledef-default] +style=topbot +topbot-style=frame="topbot" +---------------------------------- + +Alternatively you can set the configuration entries from inside your +document, the above examples are equivalent to: + +---------------------------------- +:listdef-labeled.style: horizontal +:listdef-labeled2.style: horizontal + +:tabledef-default.topbot-style: frame="topbot" +:tabledef-default.style: topbot +---------------------------------- + + +== Why do I get a filter non-zero exit code error? + +An error was returned when AsciiDoc tried to execute an external +filter command. The most common reason for this is that the filter +command could not be found by the command shell. To figure out what +the problem is run AsciiDoc with the `--verbose` option to determine +the command that is failing and then try to run the command manually +from the command-line. + + +== Are there any DocBook viewers? + +http://live.gnome.org/Yelp[Yelp], the GNOME help viewer, does a +creditable job of displaying DocBook XML files directly. + + +== Can you create ODF and PDF files using LibreOffice? + +https://www.libreoffice.org/[LibreOffice] can convert HTML produced by +AsciiDoc to ODF text format and PDF format (I used LibreOffice 3.5 at +the time of writing, the fidelity is very good but it's not perfect): + +. Create the HTML file using AsciiDoc, for example: + + asciidoc -a icons -a numbered -a disable-javascript article.txt ++ +JavaScript is disabled because LibreOffice does not execute +JavaScript, this means that AsciiDoc table of contents and footnotes +will not be rendered into ODF (if you want the table of contents and +footnotes you could manually cut and paste them from a Web browser). + +. Convert the HTML file to an ODF text file using LibreOffice: + + lowriter --invisible --convert-to odt article.html ++ +-- +The images imported from an HTML file will be linked, if your document +contains images you should convert them to embedded images: + +[lowerroman] +. Open the document in LibreOffice Writer. +. Run the 'Edit->Links...' menu command. +. Select all links and press the 'Break Link' button. + +Some images may also have been resized. To restore an image to its +original size: + +[lowerroman] +. Right-click on the image and select the 'Picture...' menu item. +. Click on the 'Crop' tab. +. Press the 'Original Size' button. + +-- + +. Convert the ODF file to an PDF text file using LibreOffice: + + lowriter --invisible --convert-to pdf article.odt ++ +A PDF index is automatically created using the section headings. + +Alternatively you could manually copy-and-paste the entire document +from a Web browser into a blank ODF document in LibreOffice -- this +technique will bring through the table of contents and footnotes. + +This tip was originally contributed by Bernard Amade. + + +== How can I suppress cell separators in included table data files? + +Use the `{include:}` system attribute instead of the `include::[]` +macro (the former is not expanded until after the table data has been +parsed into cells, whereas the latter is included before the table is +processed. + + +== How can I preserve paragraph line boundaries? + +Apply the The 'verse' paragraph style, the rendered text preserves +line boundaries and is useful for lyrics and poems. For example: + +--------------------------------------------------------------------- +[verse] +Consul *necessitatibus* per id, +consetetur, eu pro everti postulant +homero verear ea mea, qui. +--------------------------------------------------------------------- + +Alternatively, if you are generating PDF files, you can use line +breaks. For example: + +--------------------------------------------------------------------- +Consul *necessitatibus* per id, + +consetetur, eu pro everti postulant + +homero verear ea mea, qui. +--------------------------------------------------------------------- + + +== How can I include non-breaking space characters? + +Use the non-breaking space character entity reference ` ` (see +the next question). You could also use the predefined `{nbsp}` +attribute reference. + + +== Can I include HTML and XML character entity references in my document? + +Yes, just enter the reference in your document. For example `β` +will print a Greek small beta character β + + +[[X1]] +== How do I include spaces in URLs? + +URL inline macro targets (addresses) cannot contain white space +characters. If you need spaces encode them as `%20`. For example: + + image:large%20image.png[] + http://www.foo.bar.com/an%20example%20document.html + + +== How can I get AsciiDoc to assign the correct DocBook language attribute? + +Set the AsciiDoc 'lang' attribute to the appropriate language code. +For example: + + a2x -a lang=es doc/article.txt + +This will ensure that downstream DocBook processing will generate the +correct language specific document headings (things like table of +contents, revision history, figure and table captions, admonition +captions). + + +== How can I turn off table and image title numbering? +For HTML outputs set the 'caption' attribute to an empty string, +either globally: + +------------------------- +:caption: +------------------------- + +or on an element by element basis, for example: + +------------------------- +.Tiger +[caption=""] +image::images/tiger.png[] +------------------------- + + +== How can I assign multiple author names? + +A quick way to do this is put both authors in a single first name, for +example: + +--------------------------------------- +My Document +=========== +:Author: Bill_and_Ben_the_Flowerpot_Men +:Author Initials: BB & BC +--------------------------------------- + +asciidoc(1) replaces the underscores with spaces. + +If you are generating DocBook then a more flexible approach is to +create a 'docinfo' file containing a DocBook 'authorgroup' element +(search the 'User Guide' for 'docinfo' for more details). + + +== How can I selectively disable a quoted text substitution? + +Omitting the tag name will disable quoting. For example, if you don't +want superscripts or subscripts then put the following in a custom +configuration file or edit the global `asciidoc.conf` configuration +file: + +------------------- +[quotes] +^= +~= +------------------- + +Alternatively you can set the configuration entries from within your +document, the above examples are equivalent to: + +------------------- +:quotes.^: +:quotes.~: +------------------- + + +== How can I customize the \{localdate} format? + +The default format for the `{localdate}` attribute is the ISO 8601 +`yyyy-mm-dd` format. You can change this format by explicitly setting +the `{localdate}` attribute. For example by setting it using the +asciidoc(1) `-a` command-line option: + + asciidoc -a localdate=`date +%d-%m-%Y` mydoc.txt + +You could also set it by adding an Attribute Entry to your source +document, for example: + + :localdate: {sys: date +%Y-%m-%d} + + +== Where can I find examples of commands used to build output documents? + +The User Guide has some. You could also look at `./doc/main.aap` and +`./examples/website/main.aap` in the AsciiDoc distribution, they have +all the commands used to build the AsciiDoc documentation and the +AsciiDoc website (even if you don't use A-A-P you'll still find it +useful). + + +== Why have you used the DocBook <simpara> element instead of <para>? + +`<simpara>` is really the same as `<para>` except it can't contain +block elements -- this matches, more closely, the AsciiDoc paragraph +semantics. + + +== How can I format text inside a listing block? + +By default only 'specialcharacters' and 'callouts' are substituted in +listing blocks; you can add quotes substitutions by explicitly setting +the block 'subs' attribute, for example: + +[listing] +.......................................... +[subs="quotes"] +------------------------------------------ +$ ls *-al* +------------------------------------------ +.......................................... + +The `-al` will rendered bold. Note that: + +- You would need to explicitly escape text you didn't want quoted. +- Don't do this in source code listing blocks because it modifies the + source code which confuses the syntax highlighter. +- This only works if your DocBook processor recognizes DocBook + `<emphasis>` elements inside `<screen>` elements. + +Alternative, if the lines are contiguous, you could use the 'literal' +paragraph style: + +------------------------------------------ +["literal",subs="quotes"] +$ ls *-al* +------------------------------------------ + + +== Why doesn't the include1::[] macro work? + +Internally the `include1` macro is translated to the `include1` system +attribute which means it must be evaluated in a region where attribute +substitution is enabled. `include1` won't work, for example, in a +ListingBlock (unless attribute substitution is enabled). `include1` +is intended for use in configuration files, use the `include` macro +and set the attribute `depth=1` instead, for example: + +[listing] +................................................ +------------------------------------------------ +\include::blogpost_media_processing.txt[depth=1] +------------------------------------------------ +................................................ + + +== How can I make the mailto macro work with multiple email addresses? + +For the AsciiDoc 'mailto' macro to work with multiple email addresses +(as per RFC2368) you need to URL encode the '@' characters (replace +them with '%40'), if you don't the individual addresses will be +rendered as separate links. You also need to <<X1,replace spaces with +'%20'>>. + +For example, the following call won't work: + + mailto:jb@foobar.com,jd@acme.co.nz?subject=New foofoo release[New foofoo release] + +Use this instead: + + mailto:jb%40foobar.com,jd%40acme.co.nz?subject=New%20foofoo%20release[New foofoo release] + + +== How can a replacement have a trailing backslash? +Quote the entry name -- this nonsensical example replaces `x\` with +`y`: + + "x\\"=y + +If quoting were omitted the equals character (separating the +entry name `x` from the value `y`) would be escaped. + + +== How can I control page breaks when printing HTML outputs? +Here are some techniques you can use to control page breaks in HTML +outputs produced by the 'xhtml11' and 'html5' backends: + +- You can generate a page break with the '<<<' block macro. The + following example prints the 'Rats and Mice' section on a new page: ++ +---------------- +<<< +== Rats and Mice +Lorum ipsum ... +---------------- + +- You can use the 'unbreakable' option to instruct the browser not to + break a block element. The following image and it's caption will be + kept together the printed page: ++ +------------------------------------ +[options="unbreakable"] +.Tiger block image +image::images/tiger.png[Tiger image] +------------------------------------ + +- You can apply the 'unbreakable' option globally to all block + elements by defining the 'unbreakable-option' attribute in your + document header. + +- Finally, the most powerful technique is to create custom CSS + containing paged media properties. For example this asciidoc(1) + command: ++ +-- + + asciidoc --attribute stylesheet=article.css article.txt + +Will include the following `article.css` file in the output document: + +------------------------------------------------- +div#toc, div.sect1 { page-break-before: always; } +------------------------------------------------- + +Which will ensure the table of contents and all top level sections +start on a new printed page. +-- + + +== Is it possible to reposition the Table of Contents in HTML outputs? +By default the 'xhtml11' and 'html5' backends auto-position the TOC +after the header. You can manually position the TOC by setting the +'toc-placement' attribute value to 'manual' and then inserting the +`toc::[]` block macro where you want the TOC to appear. For example, +put this in the document header: + +---------------------- +:toc: +:toc-placement: manual +---------------------- + +The put this where you want the TOC to appear: + +------- +toc::[] +------- + + +== HTML generated by AsciiDoc fills the width of the browser, how can I limit it to a more readable book width? +You can set the maximum with for outputs generated by 'html5', +'xhtml11' and 'slidy' backends by assigning the +link:userguide.html#X103[max-width] attribute (either from the +command-line or with an attribute entry in the document header). For +example: + + asciidoc -a max-width=55em article.txt + + +== Using roles to select fonts for PDF +Some applications require mixing fonts beyond the set of faces +normally provided by default (normal, monospace, italic etc.) for +example mixed language text where the font used for the majority of +text does not contain suitable glyphs in the minority language. + +As AsciiDoc can not provide presentation markup since it is not +provided by Docbook this is achieved by marking text which should use +a different font with a custom role which can be rendered by the the +docbook toolchain. + +NOTE: For XHTML outputs AsciiDoc translates the role attribute to a +class which can be selected and styled by CSS as described in the +AsciiDoc users guide. + +The Docbook toolchains will have to be configured to render the text +that you mark with the custom role. + +For FOP a small XSL wrapper is needed, say a file called `my_fo.xsl` +containing: + +--------------------------------------------------------------- +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:import href="/etc/asciidoc/docbook-xsl/fo.xsl"/> + <xsl:template match="phrase[@role='f2']"> + <fo:inline font-family="the font for f2"> + <xsl:apply-templates/> + </fo:inline> + </xsl:template> +</xsl:stylesheet> +--------------------------------------------------------------- + +This is used with `a2x` by: + + a2x -f pdf --fop --xsl-file=my_fo.xsl input.txt + +and the AsciiDoc source marked by: + + normal text [f2]#special font is like this# and back to normal + +Thanks to Antonio Borneo for this answer. + + +== How can I place a footnote immediately following quoted text? +A closing quote is not recognised if it is immediately followed by a +letter (the 'f' in 'footnote' in the following example): + + ``Double-quoted text''footnote:[Lorum ipsum...] + +A workaround is to put a word-joiner between the trailing quote +and the footnote (the `{empty}` attribute would also work), for +example: + + ``Double-quoted text''{wj}footnote:[Lorum ipsum...] + |