xenial (1) stx2any.1.gz

Provided by: stx2any_1.56-2_all bug

NAME

       stx2any - converter from structured text to multiple formats

SYNOPSIS

       stx2any [ -T format ] [ stx and m4 options ] [ file  file ... ]

DESCRIPTION

       stx2any converts files in structured text (Stx) format into other formats.  Formats currently implemented
       are HTML, man, raw text, PostScript, LaTeX, XHTML and DocBook XML.

       The source format, structured text, is a kind of plain text format with standard markup for  representing
       headings,  lists,  emphasis  etc.   The  markup  is  both  quicker  to  write and easier to remember than
       conventional tag-based markup languages, and is beautifully legible also in source form.  Stx  markup  is
       better explained in Stx quickie guide, which is available in the examples directory.

       Most  of  the  conversion  happens  in  m4, and you can define your own macros and other stuff for giving
       structure to your documents.  stx2any provides a LaTeX-like extensible environment system and a diversion
       system for rearranging input.  (Tårta på tårta, as they say in Swedish.)

       Because  stx2any  doesn't  perform  any  kind of quoting on the input, markup that isn't available can be
       written directly in the destination language (losing convertibility to multiple languages).  This way, if
       you  are  only interested in one output format (eg. LaTeX), you can use Stx as an abbreviation format for
       the most common constructs.

       Some formatting is not available as abbreviations, but by calling m4 macros.  You need macros  relatively
       rarely: for example, floats (material that can “float” around in the document) are created by macros.

OPTIONS

       stx2any  accepts  all command line options of m4, passing them directly on.  Of these, the -D argument is
       important enough to mention here separately.

          -DNAME=VALUE
                 Define macro NAME to have the expansion VALUE.  This allows you to pass  information  into  the
                 document from the command line.

          -T format
                 Sets the output format.  Default format is html.  format should be one of:

             html   produces basic HTML (hypertext markup language) output.

             man    produces  man  macro  output.   This  output  is usable as a man page directly (although see
                    WRITING MAN PAGES below), or can be fed to troff / groff for formatting to e.g.  postscript.

             latex  produces LaTeX document preparation language output.  You can run latex  on  the  result  to
                    produce e.g. high quality pdf's.

             text   produces  raw  text  output by postprocessing HTML output with w3m.  The resulting output is
                    very basic, like stripping away most Stx markup; if you want more formatted output, consider
                    piping man output to nroff -man.

             ps     produces  simple  postscript output by postprocessing man output with groff.  If you want to
                    do real publishing, consider the LaTeX format instead.

             xhtml  produces XHTML output by postprocessing HTML output  with  W3C  tidy.   By  the  way,  check
                    http://hixie.ch/advocacy/xhtml for discussion about HTML and XHTML.

             docbook-xml
                    produces rudimentary DocBook XML output.  See BUGS below for more discussion about this.

          --link-abbrevs
                 Take  link abbreviation syntax into use.  Note that because link abbreviation processing occurs
                 in two phases, it doesn't work totally when the input comes from standard input  (for  example,
                 if you use stx2any as a middle part of a pipeline).

          --quote
                 Request  quoting  of  characters  (other  than  underscores  and dollar signs) that are somehow
                 magical in the requested output format.  This will make it quite difficult to put markup in the
                 output  format  directly  in your document, but will greatly increase the possibility that your
                 document will be correct (ie. does not have syntax errors) in the output format.

          --quote-me-harder
                 Request quoting of underscores and dollar signs.  This might make some LaTeX documents work but
                 might  break  some documents where underscores are used in macro names or dollar signs in macro
                 definitions.

          --numbering { on | off }
                 Request numbering of section headings.  The default varies by output format: section  numbering
                 is by default off for HTML, DocBook XML and man, on for LaTeX.

          --table-of-contents { on | off }
                 Request  producing a table of contents from the headings.  The default is to produce a TOC when
                 numbering is on.  Not implemented for DocBook XML.

          --make-title { on | off }
                 Request a “title page”.  The default is “on”.  This setting does not have any  effect  in  some
                 formats.   In  HTML,  it produces a big heading at the beginning of the document.  In LaTeX, it
                 produces the canonical maketitle.

          --no-template
                 Do not produce a document template at all, only the formatted input text.   You  probably  need
                 this if your document will be included as a part of a bigger document.  If that bigger document
                 is written totally in Stx, however, it will be cleaner to give all the source files directly as
                 arguments to stx2any rather than combine the results afterwards.

          --symmetric-crossrefs
                 In  document formats that support linking (HTML, DocBook), produce reverse links from labels to
                 referrers as well as links from referrers to labels.

          --latex-params params
                 Set the document class parameters for LaTeX documents.  The default is affected by system paper
                 size;   for   example,  on  a  European  system  it  is  typically  a4paper,notitlepage.   (See
                 “ENVIRONMENT” below.)

          --html-params params
                 Set the body tag parameters for HTML documents.  The default is no parameters.

          --picture-suffix suffix
                 Inline images will refer to files with suffix suffix.  The default is png for HTML and DocBook,
                 eps for LaTeX and man.

          --no-emdash-separate
                 In  the output, don't separate em dashes from adjacent text with spaces.  This is in accordance
                 to traditional English typography (if I understand correctly), but  is  not  standard  in  many
                 other languages — including Finnish, my mother tongue.

          --more-secure
                 Disable  some  insecure features of m4 and check some command line arguments that are passed to
                 shell for problematic characters.  This might be desirable if you've received the document from
                 somewhere  else and want to make sure it won't do anything malicious when converted.  Currently
                 this denies execution of shell escapes.

                 Note that clearly no implementation of m4 has  been  designed  with  security  in  mind.  As  a
                 consequence,  this option cannot prevent every potentially harmful thing.  Things not prevented
                 which I'm aware of are including contents of arbitrary files in the  output  and  writing  busy
                 loops (so that the conversion will use all processor time it can get, until terminated).

          --sed-preprocessor scriptname
                 Run  the  sed  script  scriptname  for  all  input.  This allows you to add custom abbreviation
                 markups.  It is almost the same as preprocessing input with sed, then piping it  into  stx2any,
                 but interacts better with --link-abbrevs (see its explanation for details).

          --version, -V
                 Just show version information and exit.

          --help, -?
                 Just show a short help message and exit.

WRITING MAN PAGES

       Basically,  man  pages are simply files in the man macro format.  However, there are some programs (first
       and foremost mandb) that require parts of man pages to be in a specific  format,  and  man  pages  should
       generally adhere to the standard sectioning and form (see man (1) and lexgrog (1) for details).

       When  writing a man page, the title (w_title) of the page should be the program/file/format/utility name,
       and you should define the section (w_section).  To make the page suitable for mandb parsing,  you  should
       start  the  page with one or more calls to w_man_desc.  This will create a proper “NAME” section for you.
       (Although you could write one by yourself.)

DIAGNOSTICS

       stx2any may give any error message that m4 may give, e.g.  on  malformatted  input  (a  macro  call  with
       missing closing parenthesis etc).  In addition, it has the following own error messages:

          unknown output format: “X”
                 You requested unsupported output format X with the -T option.

          unknown macro “X” called
                 stx2any  encountered  a  macro  beginning  with  w_, but knows no definition for it.  This is a
                 warning, not an error — the offending macro and its arguments are stripped from the output.

          environment “X” closed by “Y” in layer N
                 Environments in stx2any must be properly nested.  stx2any  encountered  w_end(Y)  when  it  was
                 expecting w_end(X).  Often this is a sign of a forgotten w_end(X).

                 If  N  (the  layer) is something other than 0, then the problem is probably in your environment
                 definitions, not at the point that stx2any was processing when it encountered the error.

          unknown environment “X”
                 There was an attempt to begin an environment whose name is unknown to  stx2any,  i.e.  no  such
                 environment has been defined.

          diversion “X” closed by “Y”

          unknown diversion “X”
                 Same as above, but for diversions (w_begdiv and w_enddiv).

          attempt to use “X” in secure environment
                 You  requested  secure  processing  with --more-secure and the document contained an “insecure”
                 macro.  This is a warning message, not an error —  the  causing  macro  is  left  in  the  text
                 verbatim.

          unknown cross link to “X”
                 There  was  a  cross  link  to  document  X,  but  stx2any does not know about such a document.
                 Probably you didn't gather /X/'s data with gather_stx_titles or  you  misspelled  the  document
                 reference.   This  is  a  warning, not an error — the reference is left in the output verbatim,
                 without any kind of link.

       The return value of stx2any is zero on success, one if there was some problem.

ENVIRONMENT

          PAPERCONF

          PAPERSIZE
                 used for determining the default paper size for LaTeX documents.

FILES

          /etc/papersize
                 used for determining the default paper size for LaTeX documents.

          /usr/share/stx2any/common
                 directory for the definitions shared by all formats

          /usr/share/stx2any/{html,man,latex,docbook-xml}
                 directory for output format specific definitions

SEE ALSO

       m4 (1), latex (1), groff (1), lexgrog (1), w3m (1), strip_stx (1), gather_stx_titles (1),  html2stx  (1),
       extract_usage_from_stx (1)
       Stx quickie guide (/usr/share/doc/stx2any/Stx-doc.txt)
       Stx markup reference (/usr/share/doc/stx2any/Stx-ref.txt)

BUGS

       The  structured  text  format  is  not  yet  fully standardised.  There are some corner cases where it is
       unclear what the result of the  formatting  should  be.   In  these  cases,  the  output  of  stx2any  is
       authoritative, so it cannot have bugs :)

       Some  old  GNU  libc's  seem to be abysmally slow on some instances of the emphasis regexps.  It would be
       possible to make the regexps faster and less correct, but as newer GNU libc's and BSD libc seem  to  work
       OK in these cases, I guess it's not worth it.

       The --more-secure switch is not really very secure for reasons explained above.

       The  support  for  DocBook  XML  sucks.  It is only included because someone will show up anyway and ask,
       “hey, does it support DocBook XML?”  Partly this sucking is due to my laziness, but partly it is  because
       of  the  nature of DocBook.  For instance, stx2any will transform literal formatting into DocBook Literal
       elements, but the point of using DocBook is to convey more information than that —  whether  it  is  some
       ComputerOutput,  UserInput,  EnVar,  or  Application,  or...  and  the result is still very abstract, not
       actually meant for humans to read but rather for computers to process into something readable.   Now  the
       truth  is  that I doubt you will ever come up with a DSSSL stylesheet whose output outperforms LaTeX (for
       publishing on paper) or direct conversion to HTML (for publishing on the web).

       The only sensible reasons I can think of for using Stx as a DocBook frontend are:

           1.  the ability to use both DocBook constructs and Stx abbreviations

           2.  if you have to write DocBook for some interesting reason (your boss told you so) but  don't  want
               to learn it

           3.  you  happen to already have infrastructure for processing DocBook documents, and you want to take
               advantage of it

AUTHOR

       This page is written by Panu A. Kalliokoski.