summaryrefslogtreecommitdiffstats
path: root/doc/kdvi/KDVI-features.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/kdvi/KDVI-features.tex')
-rw-r--r--doc/kdvi/KDVI-features.tex480
1 files changed, 480 insertions, 0 deletions
diff --git a/doc/kdvi/KDVI-features.tex b/doc/kdvi/KDVI-features.tex
new file mode 100644
index 00000000..66c3f9f5
--- /dev/null
+++ b/doc/kdvi/KDVI-features.tex
@@ -0,0 +1,480 @@
+\documentclass{article}
+
+\usepackage{amstext}
+\usepackage{colordvi}
+\usepackage{graphicx}
+\usepackage{times}
+\usepackage[arrow,matrix,curve,ps]{xy}
+\xyoption{dvips}
+\usepackage[active]{srcltx}
+\usepackage[hypertex]{hyperref}
+\sloppy
+
+\newcommand{\KDVI}{{\sf KDVI 1.1}}
+
+\begin{document}
+
+\title{Support for \TeX\ extensions in \KDVI}
+
+\author{Stefan Kebekus}
+
+\maketitle
+\begin{abstract}
+ This document describes the extensions to the standard format of DVI
+ files which \KDVI\ implements in order to support PostScript
+ inclusion and hyperlinks.
+
+ \KDVI\ is a program that displays DVI-files generated by the \TeX\
+ typesetting system. If you don't know what \TeX\ is then you are
+ most likely not interested in this. If you would like to know how to
+ use special features of \KDVI, then you can find examples here.
+\end{abstract}
+
+\tableofcontents
+
+\section{What's all this}
+
+The DVI-previewing program \KDVI\ is able to display standard
+DVI-files as specified in \cite{Level0Std}. In order to support
+graphics inclusion, hyperlinks and non-standard fonts, \KDVI\
+implements a number of features which extend \cite{Level0Std}. In
+particular, \KDVI\ supports a number of \TeX 's $\backslash${\tt
+ special} commands. The aim of this document is to describe these
+extensions and give examples of their use.
+
+Unfortunately, in spite of several attempts to find a sound standard
+for the use of $\backslash${\tt special} commands, there is now a
+wealth of competing and mutually incompatible definitions.
+
+\KDVI\ does not attempt to support all possible features. Instead, we
+tried to implement those which are most useful and used most commonly.
+In this, we have tried to be consistent with the {\sf dvips} program.
+\KDVI\ does not support a number of outdated and unsane standards, nor
+does it support features which impair the system security.
+
+
+\section{Virtual fonts}
+
+\KDVI\ supports ``virtual fonts''. This enables \TeX\ to use
+PostScript fonts. For more information, and a complete specification,
+consult \cite{dvips}.
+
+\paragraph*{Example}
+
+This text uses the ``Times'' family of fonts instead of the ``Computer
+Modern'' fonts which are usually used by \TeX. This was realized in
+\LaTeX 2$\epsilon$ by including the line
+\begin{verbatim}
+\usepackage{times}
+\end{verbatim}
+in the header of this document.
+
+
+\section{PostScript support}
+
+\KDVI\ implements basic facilities to include PostScript graphics in a
+DVI file, which will enable the reader to conviently read most
+scientific papers which use such features.
+
+\subsection{Literal PostScript}
+
+\KDVI\ supports the inclusion of PostScript into DVI-files by means of
+the quote-special. The syntax follows the specification of
+\cite{dvips}:
+\begin{verbatim}
+\special{" PostScript-commands}
+\end{verbatim}
+The PostScript-commands are not directly included, in fact they are
+sandwiched between a {\tt save} and {\tt restore} pair. That way
+\KDVI\ ensures that the command cannot affect PostScript-commands
+which appear somewhere else in your file.
+
+\paragraph*{Example}
+
+Figure~\ref{quote-special} shows an example taken from \cite{dvips}.
+The generating \TeX -code is
+\begin{verbatim}
+\vbox to 100bp{\vss
+\special{" newpath 0 0 moveto 100 100 lineto
+ 300 0 lineto closepath gsave 0.8 setgray fill
+ grestore stroke}}
+\end{verbatim}
+
+\begin{figure}
+\vbox to 100bp{\vss
+\special{" newpath 0 0 moveto 100 100 lineto 300 0 lineto closepath gsave 0.8 setgray fill grestore stroke}}
+\caption{Graphic generated by literal PostScript inclusion\label{quote-special}}
+\end{figure}
+
+
+\subsection{Direct PostScript}
+
+\KDVI\ supports the inclusion of PostScript into DVI-files by means of
+the direct-special. The syntax follows the specification of
+\cite{dvips}:
+\begin{verbatim}
+\special{ps: Postscript-commands}
+\end{verbatim}
+The PostScript-commands are directly included, and there is no
+protective {\tt save} and {\tt restore} pair. The use of this command
+is not recommended, as it may have funny side effects on other
+PostScript commands which appear later in your file.
+
+\KDVI\ also supports the following syntactical variants which are
+explained in \cite{dvips}:
+\begin{verbatim}
+\special{ps: Postscript-commands}
+\special{ps::[begin] Postscript-commands}
+\special{ps:: Postscript-commands}
+\special{ps::[end] Postscript-commands}
+\end{verbatim}
+The variant
+\begin{verbatim}
+\special{ps: plotfile filename}
+\end{verbatim}
+is not currently supported.
+
+\paragraph*{Example}
+
+The command
+\begin{verbatim}
+\includegraphics[height=3cm, angle=20]{aboutkde.ps}
+\end{verbatim}
+which is used in section~\ref{chap:eps} uses the direct-special
+internally in order to set the rotation.
+
+\subsection{Literal headers}
+
+Literal headers work as described in \cite{dvips}.
+\begin{verbatim}
+\special{! PostScript-Header-commands}
+\end{verbatim}
+
+\paragraph*{Example}
+The following diagram, which was generated using the \Xy -pic macro
+packages uses literal postscript inclusion which relies on literal
+headers.
+$$
+\xymatrix{ {\tilde X}
+ \ar@{-->}[rrd]_{\exists \alpha} \ar[rrrr]^{\eta}_{\txt{\tiny
+ normalization}} \ar@/_/ [rrdd]_ {\tilde \pi} & & & & {X}
+ \ar@/^/[lldd]^{\pi} \\ & & {X'}
+ \ar@{-->}[rru]_{\exists \beta} \ar@{-->}[d]_{\exists \pi'} & & \\ & &
+ {Y}& &}
+$$
+Note that the actual headers are defined on the first page of the
+document. This was a major source of trouble in earlier versions of
+KDVI.
+
+
+
+\subsection{PostScript headers}
+
+PostScript headers work as described in \cite{dvips}. This command is
+very similar to the literal header command, but expects the name of a
+file which should be included.
+\begin{verbatim}
+\special{header=filename}
+\end{verbatim}
+
+
+
+
+\subsection{EPS inclusion}\label{chap:eps}
+
+A popular way to include PostScript-files into \TeX\ documents uses
+the PSFile $\backslash${\tt special} command. Again this is explained
+in detail in \cite{dvips}. Currently \KDVI\ supports the syntax
+\begin{verbatim}
+\special{psfile=File keyword=value keyword=value ...}
+\end{verbatim}
+Where keyword is one of the following
+\begin{description}
+\item[llx] lower left corner of the bounding box, $x$-coordinate
+\item[lly] lower left corner of the bounding box, $y$-coordinate
+\item[urx] upper right corner of the bounding box, $x$-coordinate
+\item[ury] upper right corner of the bounding box, $y$-coordinate
+\item[rwi] width of the bounding box. If $llx-urx \not = rwi$, then
+the boundig box is scaled accordingly.
+\item[rhi] height of the bounding box If $lly-ury \not = rhi$, then
+the boundig box is scaled accordingly.
+\item[angle] rotates the picture counterclockwise
+\end{description}
+Unknown keywords are silently ignored. The keywords {\tt llx}, {\tt
+ lly}, {\tt urx}, {\tt ury} and {\tt rwi} are usually generated by
+the {\tt epsf} macros. The keywords {\tt hoffset}, {\tt voffset},
+{\tt hsize}, {\tt vsize}, {\tt hscale}, {\tt vscale}, {\tt angle} and
+{\tt clip} are not currently implemented. The ``uncompression''
+feature of {\sf dvips} and {\sf xdvi} which allows to execute
+arbitrary commands in via the syntactical variant
+\begin{verbatim}
+\special{psfile="'shell-command" keyword=value ...}
+\end{verbatim}
+is deliberately not implemented for security reasons.
+
+\paragraph*{Example}
+Figure~\ref{epsf-special} shows an embedded postscript-file.
+\begin{figure}
+ \begin{center}
+ \includegraphics[height=3cm]{aboutkde.ps}
+ \includegraphics[height=4cm]{aboutkde.ps}
+ \includegraphics[height=3cm, angle=20]{aboutkde.ps}
+ \end{center}
+\caption{Embedded PostScript graphic\label{epsf-special}}
+\end{figure}
+This was easily realized by including the line
+\begin{verbatim}
+\usepackage{graphicx}
+\end{verbatim}
+into the header of this document, and the lines
+\begin{verbatim}
+\includegraphics[height=3cm]{aboutkde.ps}
+\includegraphics[height=4cm]{aboutkde.ps}
+\includegraphics[height=3cm, angle=20]{aboutkde.ps}
+\end{verbatim}
+at the place where the graphic should appear. It is strongly
+recommended to use the {\tt graphicx} macro package for this purpose.
+\begin{figure}
+ \begin{center}
+ \includegraphics[height=2cm, bb=0 0 150 50]{nonexistent.ps}
+ \end{center}
+\caption{Reference to a non-existent PS-file\label{nonex-special}}
+\end{figure}
+Figure~\ref{nonex-special} shows how \KDVI\ warns you about
+non-existent files.
+
+
+\section{Hypertext support}
+
+\KDVI\ supports commands for hyperlink support which commands
+establish links between sections of documents in a manner exactly
+analogous to the HTML of the WWW. For a detailed specification we
+refer to \cite{HFAQ99} or \cite{Rah98}. Note, however, that \KDVI\
+does currently not allow nested hyperlinks.
+
+\subsection{Hyper-Labels}
+
+The commands
+\begin{verbatim}
+\special{html:<a name="namestring">}
+\special{html:</a>}
+\end{verbatim}
+labels the current point of the text for later reference.
+
+\subsection{Hyper-References}
+
+The commands
+\begin{verbatim}
+\special{html:<a href="hrefstring">}
+Text
+\special{html:</a>}
+\end{verbatim}
+makes {\tt Text} a link to {\tt hrefstring}, where {\tt hrefstring} is
+an absolute or relative URL in the standard format used on the
+internel. If {\tt hrefstring} is of the form {\tt \#label} then it
+points to the section of the current document which is labeled using
+the labeling command described above:
+\begin{verbatim}
+\special{html:<a name="namestring">}
+\end{verbatim}
+
+
+
+\paragraph*{Example}
+This document features a clickable table of contents, and also the
+references can be clicked on. This has been achieved by using the {\tt
+ hyperref} macro package in \LaTeX\ by including the line
+\begin{verbatim}
+\usepackage[hypertex]{hyperref}
+\end{verbatim}
+into the document preamble. Everything else is automatic.
+
+Here is an external link which points to the \href{http://www.kde.org}{main
+ website of the KDE project}. For this, the command {\tt href} of the
+{\tt hyperref} macro package was used:
+\begin{verbatim}
+\href{http://www.kde.org}{main
+ website of the KDE project}
+\end{verbatim}
+
+
+\paragraph{Warning.} On some installations, the {\tt
+ hyperref} macro package is configured to generate PostScript
+hyperlinks for {\tt dvips} by default. On these systems, using the
+line
+\begin{verbatim}
+\usepackage{hyperref}
+\end{verbatim}
+will generate DVI file whose hyperlinks are not visible in KDVI.
+Worse, KDVI will call the {\tt ghostview} PostScript interpreter for
+every page, which makes the display very slow.
+
+
+
+\section{Colored \Red{text} \Green{and} \Blue{background}}
+
+The DVI specials for colored text are supported as they are described
+in \cite{dvips}.
+
+\paragraph*{Example} In this document, the following code was used to
+generate the text below.
+\begin{verbatim}
+\usepackage{colordvi}
+
+...
+
+\textGreen This text is green but here we are
+\Red{switching to red, \Blue{nesting blue},
+recovering the red} and back to original green.
+\textCyan The text from here on will be cyan
+unless \Yellow{locally changed to yellow}. Now
+we are back to cyan. \textBlack
+\end{verbatim}
+
+This gave the following output:
+\begin{verse}
+ \textGreen This text is green but here
+we are \Red{switching to red, \Blue{nesting blue}, recovering the red}
+and back to original green. \textCyan The text from here on will be
+cyan unless \Yellow{locally changed to yellow}. Now we are back to
+cyan. \textBlack
+\end{verse}
+
+To set the background color of the page, the command
+\background{Lavender}
+\begin{verbatim}
+\background{Lavender}
+\end{verbatim}
+was used. To switch back to normal, the command
+\begin{verbatim}
+\background{White}
+\end{verbatim}
+was placed somewhere on the following page. As you see, the background
+command does not fit well into \LaTeX's philosophy and should be
+avoided.
+
+\section{Rotated Text}
+
+Rotated text can sometimes be useful, e.g. to fit large table onto a
+single page. This is used, e.g.~in the style files of journals of the
+American Astronomical Society. Here is one example.
+
+\begin{table}[h]
+ \centering
+\begin{tabular}{l|ll}
+ & \rotatebox{90}{uses \TeX} & \rotatebox{90}{uses Linux} \\ \hline
+ Stefan & $\times$ & $\times$ \\
+ Anke & & $\times$ \\
+ Thomas & $\times$ &\\
+\end{tabular}
+\end{table}
+
+This was easily realized by including the line
+\begin{verbatim}
+\usepackage{graphicx}
+\end{verbatim}
+into the header of this document. The table itself was then typeset by
+{\footnotesize
+\begin{verbatim}
+\begin{tabular}{l|ll}
+ & \rotatebox{90}{uses \TeX} & \rotatebox{90}{uses Linux} \\ \hline
+ Stefan & $\times$ & $\times$ \\
+ Anke & & $\times$ \\
+ Thomas & $\times$ &\\
+\end{tabular}
+\end{verbatim}
+}
+
+\section{Source text specials}
+
+\KDVI\ is able to make use of source file information which is included
+in the DVI file. To include source file information, a {\tt special}
+command like to following should be included at the beginning of every
+paragraph or every line:
+\begin{verbatim}
+\special{src:123text.tex}
+\end{verbatim}
+This tells \KDVI\ that the next paragraph should be associated with
+line 123 in the source file text.tex.
+
+It is of course not practical to add these commands manually to the
+beginning of every line ---see the \href{help:/kdvi}{Handbook of
+\KDVI} to learn how to add the special commands automatically to your
+DVI files.
+
+The main use of source file specials is the interaction between \KDVI\
+and your editor. Starting from version~1.0, both \emph{forward search}
+and \emph{inverse search} are supported.
+
+\subsection{Forward search}
+
+Forward search is a feature that helps you find the place in the DVI
+file that corresponds to a certain line in the source text. If source
+file information is included, you can find the place in the DVI file
+{\tt test.dvi} which corresponds to line 1234 in the source file {\tt
+text.tex} by starting \KDVI\ like this:
+\begin{verbatim}
+kdvi file:test.dvi#1234text.tex
+\end{verbatim}
+In pracitse, this command line will be generated by a script that
+communicates with your editor. Currently, scripts for Emacs and XEmacs
+exist. As usual, the \href{help:/kdvi/forward-search.html}{Handbook of
+\KDVI} explains how to set up your editor with thest scripts.
+
+
+\subsection{Inverse search}
+
+\background{White}
+Inverse search means that you can click into the document in \KDVI,
+and your editor will open, load the source file and jump to the proper
+place. \KDVI\ currently supports the editors Emacs, Kate, NEdit, VI
+and XEmacs. Users who prefer a different editor can specify shell
+commands which are to be used. Again we refer to the
+\href{help:/kdvi/inverse-search.html}{Handbook of \KDVI} for a detailed explanation.
+
+\paragraph*{Example}
+If you are viewing this document in \KDVI, you can click anywhere with
+the middle mouse button (if your mouse has only two buttons, click
+left and right simultaneously). An editor will pop up, load the
+\LaTeX\ sourcefile and jump to the appropriate line in the
+text. Source specials has been added using the {\tt srcltx} macro
+package in \LaTeX\ by including the line
+\begin{verbatim}
+\usepackage[active]{srcltx}
+\end{verbatim}
+into the document preamble. Everything else is automatic.
+
+
+\begin{thebibliography}{CM97}
+
+\bibitem[Bha99]{HFAQ99}
+T.~Bhattacharya et al.
+\newblock {\em Hyper\TeX\ FAQ}
+\newblock available on the internet site of the preprint server of the
+ Los Alamos National Labatories at
+\href{http://arXiv.org/hypertex}{\small \tt http://arXiv.org/hypertex}
+
+\bibitem[Rah98]{Rah98}
+S.~Rahts
+\newblock {\em Hypertext marks in \LaTeX: the {\sf hyperref} package}
+\newblock included in the tetex distribution. A copy can be found on KDVI's
+home page at \hfill \linebreak
+\href{http://devel-home.kde.org/~kdvi/DVI/hyperref-manual.pdf}{\small \tt http://devel-home.kde.org/$\sim$kdvi/DVI/hyperref-manual.pdf}
+
+\bibitem[Rok00]{dvips}
+T.~Rokicki
+\newblock {\em DVIPS: A \TeX\ Driver}
+\newblock included in the tetex distribution. A copy can be found on KDVI's
+home page at \hfill \linebreak
+\href{http://devel-home.kde.org/~kdvi/DVI/dvips.dvi}{\small \tt http://devel-home.kde.org/$\sim$kdvi/DVI/dvips.dvi}
+
+\bibitem[TUG0]{Level0Std}
+The TUG DVI Driver Standards Committee
+\newblock {\em The DVI Driver Standard, Level 0}
+\newblock included in the tetex distribution. A copy can be found on KDVI's
+home page at \hfill \linebreak
+\href{http://devel-home.kde.org/~kdvi/DVI/dvistd0.dvi}{\small \tt http://devel-home.kde.org/$\sim$kdvi/DVI/dvistd0.dvi}
+
+
+\end{thebibliography}
+\end{document}