Documentation

Programs for creating and viewing documentation.

To facilitate navigating in this list, projects are categorized by their purpose, authorship, and current state. Each project entry lists the categories it pertains to. Clicking on a category name will bring a listing of all projects in that category.

Additionally, a list of related projects is provided where applicable. Each element in that list is a link to the corresponding project entry.

Clicking on a project's name will bring this project's entry as a separate page (a permalink).

Hovering your mouse over the version information of a project shows the list of changes introduced by that version.

Sort controls below allow you to order the list either lexicographically or by the most recent release date, in both directions.

Using the Search control, you can select projects by name. Shell-style globbing patterns (wildcards) are accepted.

(Return to the project listing)

imprimatur

(Not released)
Category:
Description:

Imprimatur provides Texinfo macros for various editing tasks such as adding editor notes and annotations, as well as Makeinfo rules for verifying Texinfo document structure, format, and (to a certain extent) content coverage.

Related projects:

texinfo

Version: 7.0.1  —  30 November 2022
This is a bug-fix release with minimal changes.

* texi2any
  . avoid crashes on empty @image argument and other potential crashes
    (with "Can't use an undefined value as an ARRAY reference" message)
  . avoid hang on @ref command inside section command

* info
  . fix recoding of UTF-8 files to ASCII when run in C locale

* js
  . index search fixed for new HTML output
  . some obsolete files removed from distribution
	  
Category:
Description:

Texinfo is the official documentation format of the GNU project. It uses a single source file to produce output in a number of formats, both online and printed (dvi, html, info, pdf, xml, etc.).

Related projects:

xenv

Version: 4.0  —  2022-08-25
* Stash storage

Stash is a special kind of storage to hold temporary data.  It is
used to implement several preprocessor features: diversions,
conditionals and loops.  Data are written to the memory for as long
as their amount fits the memory buffer allotted for stash.  The size
of this buffer is controlled by the feature value "stashsize".  When
the buffer gets full, surplus data are written to a temporary
file.  Number of temporary files that can be open simultaneously is
controlled by the feature value "stashfiles".  This works as follows:
when a new stash file needs to be open and the number of already open
files hits the limit, the program will close the least recently used
stash file, thereby freeing a file descriptor for use in the new
stash.  The closed file will eventually be reopened when it is needed,
using the same process.

Default values are: for "stashsize" - the size of the system memory
page, and for "stashfiles" - 2/3 of the soft limit for open files.

* Sink streams

On systems where fopencookie(3) call is available, xenv uses special
"sink" streams for text that's going to be discarded.  This speeds up
the operation and spares open file descriptors.

* New directives: $$ifcom, $$ifncom

  $$ifcom COMMAND
  TEXT1
  $$else
  TEXT2
  $$endif

Runs COMMAND and substitutes TEXT1 if it exits with code 0 and TEXT2
otherwise.  $$incom is similar, but expands to TEXT1 if COMMAND exits
with a non-zero status and to TEXT2 otherwise.

COMMAND is passed to the shell verbatim, i.e. any variable an command
references in it are expanded by the shell and not by xenv (this is
similar to how command expansion behaves).

* Bugfixes

** $$set and $$unset ignored if evaluated in a false conditional branch
	  
Category:
Description:

Xenv is a text preprocessor. It reads input from files (or the standard input, if none are supplied) and prints it on the standard output, replacing references to environment variables with their actual values. Variables are referenced using POSIX-compatible shell syntax: $NAME, ${NAME}, ${NAME:-word}, ${NAME+=word}, ${NAME:=word}, ${NAME:?word}. A special ternary construct is provided: ${NAME:|word1|word2}, which substitutes the expansion of word1 if NAME is set and the expansion of word2 otherwise. Preprocessor directives provide support for inclusion of external files, conditional text expansion (depending on the value of an environment variable or exit code of an external command), diversions, for and foreach loops etc.