This is the todo list for GNU Texinfo.
If you are interested in working on any of these, email bug-texinfo@gnu.org.

  Copyright 1992-2026 Free Software Foundation.

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

* Language:
  - tagging system for definitions - (Robert Dodier for Maxima,
    https://lists.gnu.org/archive/html/help-texinfo/2021-12/msg00012.html)
  - generalize @vtable/@ftable to any defined index.
  - user-defined macros cannot be used as argument to @table or @itemize.
    Add specific macro commands, @highlightingmacro and @glyphmacro? Or
    accept one arg macro on @table line and no arg macro on @itemize line?
  - @mergeindex to do @syn*index without changing fonts.
  - multicolumn * width to take up `the rest'.
  - Allow @hsep/@vsep at @item, instead of just in template.
  - another table command to take N succeeding items and split them
    into M columns (see eplain).
  - support bibliographies with BibTeX (see web2c/doc for kludge prototype).
  - Support automatic line numbering of examples.
  - Glossary/general definition support (dumas msg 28 Nov 2003 17:09:57 +0100).
    https://lists.gnu.org/archive/html/bug-texinfo/2003-11/msg00092.html
    An issue with the proposal is that glossary definitions could be quite
    long and not suitable for an optional argument.
  - related to the @documentinfo command, add more metadata, in particular
    for books but not only:
     * make it easier to gather author metadata
     * short information on licence

    It could be relevant to have up to three dates:
     * Last modified date.  In EPUB the dcterms:modified property.  Defaults
       to the generation date;
     * a date corresponding to the modification of the Texinfo manual (what is
       currectly set with automake and accessible as @value{UPDATED}),
       with default set with the modification timestamp of the main texinfo
       file (or the newest for the main and all @include'd files);
     * a publication date.  In EPUB the dc:date optional element, to be set
       manually by the user.

  - unique identifiers/way to disambiguate manuals with the same name?
  - reflection on guide/topic document structure and pluggable content
    for extensible documents (Mallard format ideas)
  - to be discussed tabs or similar when documenting code for different
    languages such that the user is probably only interested by one only
      https://sphinx-tabs.readthedocs.io/en/latest/
    example:
      https://developer.gnome.org/documentation/tutorials/beginners/getting_started/content_view.html#bind-the-text-view-in-the-source-code

* texi2any:
  - HTML: support thumbnails.
  - HTML: have a library of different CSS styles.
    http://mail.gnu.org/archive/html/bug-texinfo/2004-01/msg00025.html
  - Support output formats retaining the tree structure of Texinfo documents
    as parsed by the Parser.  A lisp-like format for GUILE? Maybe JSON?
  - Support other graphical documentation browsers like GNOME DevHelp
    - DevHelp support could need to wait for a specification of the DevHelp
      XML file format, which was not documented in 2025. From DevHelp help
      in 'Index file format':
      "Unfortunately the *.devhelp2 XML file format is not well documented.
      There is still some hope that it will be fixed in the near future."
      There was an early discussion in 2015. The *.devhelp format at that time
      was the first devhelp file format, now obsolete:
      (https://lists.gnu.org/archive/html/bug-texinfo/2015-03/msg00041.html)
  - Support the MediaWiki output format.
  - LaTeX: customization and internationalization.
  - Info: render math as png and include as an image.  Using LaTeX preview
    package and dvipng could be the best option.  Rahguzar for SageMath
    (https://lists.gnu.org/archive/html/help-texinfo/2024-08/msg00001.html)
    This is implemented, questions/issues that remains:
    * add to NEWS and documentation
    * images are not well scaled, need probably to add information on
      scale to be used by Emacs.
     https://lists.gnu.org/archive/html/emacs-devel/2025-01/msg00339.html
     https://lists.gnu.org/archive/html/emacs-devel/2025-02/msg00089.html

* TeX:
  - Index above @item allows page break.
  - Table of contents is misaligned if there are 10 or more [sub]sections.
  - @float captions should be typeset in a smaller font?
  - Reset the scriptfonts and scriptscriptfonts when font size changes.
  - Reasonable way to change fonts from the default (some work has been
    done), to allow for PostScript fonts, for example.
  - @multitable: handle @hsep and @vsep.
  - @multitable: repeat table headings if multiple pages long.
  - @multitable: support a heading line concept (<thead> in HTML).
  - Introduce new command to change \bindingoffset.
  - Include synctex support.
  - Include hyperlink \special's in the DVI output for xdvi, etc.
  - PDF: make each letter of the index (A, B, ...) a section in the TOC.
    From Carsten Dominik.
  - clear out support for \ as the index file escape character (instead
    of @).

* texindex:
  - check if messages are translated via po/POTFILES.in.  check if twjr
    format can be supported in po/Makevars and "make po-check" target.

* Doc:
  - Verify/proofread Documentation of the HTML customization.

* Info:
  - try to use the right index entry for invocations like 'info cp -- -s'.
    since cp is in the coreutils manual, this uses -s from the indices of
    that manual.  however, coreutils.info documents many programs, so this
    goes to the wrong place. (one version had 31 different index entries
    documenting an '-s' option.)  however, it should be possible to use
    the correct index entry by checking for index entries in the initial
    node, and possibly its subnodes via menus, *first*.  this should
    mean that we correctly find the index entry, which looks like:

      * -s <15>:                      cp invocation.       (line  337)

   and not

      * -s:                           cat invocation.      (line   36)

  - If K is describe-key, K M-left changes the node as M-left is
    analysed as multiple keys
  - unnecessary screen redrawing when scroll-last-node=Stop and you
    try to scroll at the bottom of the last node
  - a line continuation backslash sometimes flickers when moving a cursor
  - Perhaps comply with LANGUAGE setting on a per-node basis, to allow
    incremental translation of Texinfo files.
  - Display images when running under X, as Emacs 22+ can.
  - Handle M-n, C-u m, and C-u g like Emacs Info (opening new windows).

* install-info:
  - install-info --dir-file=dir2 --entry=info foo.info installs garbage
    from the misformatted --entry (and no entries from foo.info).
  - support info dir entries for other than the current info file name;
    see comments in menu_item_equal.

* Distribution:
  - generate txi-??.tex from .po's to make translators' jobs easier.
    From Akim and Karl E.
  - use SHELL more to make sure that it is possible to customize the shell
    used for building and testing.

* Other
  - Info format - Get Emacs to support : in index entries by changing
    the interpretation of index nodes slightly.  See
    https://lists.gnu.org/archive/html/bug-gnu-emacs/2019-01/msg00235.html
    Get Emacs to support node name quoting. See
    https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-08/msg01756.html
  - Process Texinfo files directly instead of converting to other formats.
    There is no plan to process Texinfo files directly in the Texinfo
    project, only to convert to output formats.  New output formats
    representing the Texinfo input could be output if useful.

***********************************************************************
Post-release:

* texi2any:
  Change DUMP_TREE behaviour.
  (see git commit c7490e3cb4be27, 2025-03-01, Patrice Dumas, for affected
  files.)

* texi2any, Texinfo TeX:
  Decide if deprecated clickstyle command should be removed completely
  for this release, if yes, remove it (leave at least for one release after
  7.2).

***********************************************************************

* Ideas that will not be implemented:

- Support installation of manuals in different languages, along these lines:
  . support a LINGUAS file or variable saying which subdirs LL in the
    source to descend into (under doc/).
  . within each subdir LL, install the info files into $infodir/LL,
    and run install-info on $infodir/LL/dir.
  . info (both emacs and standalone) should read $infodir/$LANG/dir
    as the first dir file, and likewise read info files first from
    $infodir/$LANG, before falling back to $infodir.
  . consider ways to avoid installing images in both places.
    In fact, images probably need to be installed in a subdir
    $infodir/MANUAL/ in the first place, to avoid conflicts of having
    the same image name in different manuals.
  For a test case, see texinfo cvs, with its one translated manual
  (info-fr.texi).
  From Wojciech Polak.
  ... Except, in practice, people just name their manuals with a
  suffix for the language, and that seems to work well enough.  There
  aren't that many manuals even in English, let alone other languages,
  and there are almost no manuals in multiple languages.

- Call Ghostscript to get ASCII/jpg output for the @image command.
  [makeinfo should not try to be make, or assume it knows how the user
   wants to generate images.  Too many different methods are possible.]

- Get Info declared as a MIME Content-Type, and an `info:' URI scheme;
  A library consortium had an URI scheme for a completely different
  purpose than info documentation accepted:
    https://datatracker.ietf.org/doc/html/rfc4452
  There is mail about this in the bug-texinfo archives:
    http://mail.gnu.org/archive/html/bug-texinfo/2003-09/msg00086.html
  However, the registration of those URI and the use of those URI is
  discontinued since 2010:
    https://en.wikipedia.org/wiki/Info_URI_scheme
  Meanwhile the use of info: in free softwares is still documented in
  man uri.

- Change bars.  This is difficult or impossible in TeX,
  unfortunately.  To do it right requires device driver support.
  wdiff or ediff may be all we can do.  Merely specifying what should be
  changed is not obvious.  texdiff (http://www.robmar.net/TexDiff) does
  something reasonable for LaTeX, maybe it can be adapted.

- @else for the @if... conditionals.  Using (for example) an @iftex block
  followed by an @ifnottex block is good enough.

- A running view mode in Info, to display the next node after the end of the
  last one, and be able to toggle display of a node's subnodes.  
  [Too hard to implement because of how much code assumes 
   that only one node is in a window at once.]


