TKDVI, A DVI PREVIEWER BASED ON TCL/TK
======================================

This is TkDVI, a DVI previewer built with the Tcl/Tk toolkit. The
previewer is built around a Tk extension, `dvi', which implements an
`image type' for displaying pages from DVI files (or DVI code in
general).

This README file corresponds to TkDVI 0.3, an alpha release.


Features
--------
Here are the basic features of the `dvi' Tk extension:

* Implements re-usable Tk `image type'. DVI material can occur
  wherever Tk allows images, e.g., on a canvas (which is the most
  sensible place), but also in labels, buttons etc.
* Supports multiple windows displaying multiple pages from multiple
  DVI files simultaneously.
* All DVI files share the same fonts (if resolution etc. allows).
* Supports fonts in PK format. (Virtual font support is forthcoming;
  in the meantime dvicopy can be used to de-reference virtual fonts
  in DVI files.) The standard Kpathsea library is used to locate
  (and make) fonts.
* Supports arbitrary (integer-factor) image shrinking as in xdvi.
* Supports anti-aliasing as in xdvi.
* Supports simple uses of colour.
* Comes with an (incomplete) self-test suite.

Here are the basic features of the TkDVI previewer:

* Multiple DVI files.
* Multiple DVI file windows.
* Each DVI file window supports various display modes:
  - `Single Page' as in xdvi
  - `Two-page spread': Two facing pages, like a book.
  - `16-page overview': Sixteen reduced pages at the same time, great
    for looking at page breaks and floats.
  - Full-screen mode for presentations.
* `Magnification glass' as in xdvi.
* `gv'-style page selector.
* PDF-style document info (experimental).
* PDF-style bookmarks when used with `hyperref' LaTeX extension
  (experimental)
* `Layering' of DVI material for presentations, fill-in-the-blanks etc.
  (experimental)
* Automatic reload of changed DVI files on Expose events as in xdvi.
  This updates all windows that the DVI file is displayed in
  (regardless of whether they are currently being exposed or not).
* Can be easily adapted, reconfigured or extended in Tcl.

The most notable omissions to date are:

* No support for EPS graphics inclusions.

As of now there is little or no documentation for most of the
experimental features. Most of the \special commands supported by
TkDVI are explained in doc/README.specials. See the testdvi/
subdirectory for some examples of TeX input and output.


Use and Distribution
--------------------
TkDVI is copyrighted © by Anselm Lingnau
<lingnau@tm.informatik.uni-frankfurt.de>.

TkDVI is NOT in the public domain but released as `free software'
under the same license as Tcl/Tk, meaning that you can use it for
whatever you want and also give away (possibly modified) copies to all
your relations, friends, and enemies (depending on how you like the
program). See the file COPYING for details.

If you do make modifications or extensions of general interest, I
would appreciate hearing about this. I'd be happy to include your
contributions in the general distribution as long as their licensing
doesn't interfere with the rest of the distribution (e.g., I can't
integrate GPL patches into the main code base because that would
`infect' the rest of TkDVI with the GPL -- I'd be happy to include
such patches in a `DIY' corner of the distribution, though.).

TkDVI uses the Kpathsea library by Karl Berry, which is licensed
unter the LGPL. Due to its size, Kpathsea is not distributed with
TkDVI but can be obtained separately.


Documentation and Other Resources
---------------------------------
There is some documentation in the `doc' subdirectory of the
distribution. As usual, this could be vastly improved.

TkDVI is available from

  ftp://ftp.tm.informatik.uni-frankfurt.de/pub/dist/tkdvi/

The current version is always available as `tkdvi-current.tar.gz',
which is a symbolic link to the real file, which will be called
something like `tkdvi-0.3.tar.gz'.

There is a World-Wide Web page dedicated to TkDVI at

  http://www.tm.informatik.uni-frankfurt.de/~lingnau/tkdvi/

There are two mailing lists about TkDVI:

  tkdvi-announce@tm.informatik.uni-frankfurt.de

    This low-volume mailing list carries announcements of general
    interest to TkDVI users, such as announcements of new releases or
    significant patches.  (This list is moderated by me.)

  tkdvi-users@tm.informatik.uni-frankfurt.de

    This is a mailing list for general discussion about TkDVI, its
    use, its advantages and disadvantages, bugs, features etc.
    Everybody can post to this list. Traffic from tkdvi-announce
    also appears here.

You can subscribe to either of these lists by sending a message with a
`Subject:' header of `subscribe' to

  tkdvi-announce-request@tm.informatik.uni-frankfurt.de		or
  tkdvi-users-request@tm.informatik.uni-frankfurt.de ,

respectively. You will be asked to confirm your subscription; just
follow the directions and everything should be fine and dandy.

Bugs can also be reported to

  tkdvi-bugs@tm.informatik.uni-frankfurt.de

Users of Debian GNU/Linux may feel free to use the Debian bug tracking
system.


Supported Platforms
-------------------
TkDVI has been tested on the following platforms:

      Debian GNU/Linux 2.2 (Tcl/Tk 8.2.3, gcc 2.9)
	     - Should run on other comparable Linuxes as well

Success stories, failure reports, patches etc. for other environments
are most welcome.


Installation
------------
Installation is described in the file INSTALL in the same directory.


History
-------
I have been working on this program off and on since early 1994, even
to the extent of giving talks on the software at DANTE conferences (in
Münster 1994 and Oldenburg 1998). The 1994 version was based on Tk 3.6
and implemented a full-blown DVI widget. Some code was released for
this, but it was too incomplete and buggy to be generally useful.
After Tk 4.0 came out, featuring the new image subsystem, I decided to
re-implement my DVI stuff as an image type instead of a widget, in
order to be able to use Tk canvas features in conjunction with DVI
material rather than having to reimplement the canvas from scratch for
the purposes of the DVI widget. Due to other distractions, I didn't
have much time for this but finished a working version in time for the
DANTE conference in February 1998. Since then, the code has matured
somewhat, and the current code base seems solid enough to release as
an alpha version.
