src/Tools/8bit/doc/manual.itex
author wenzelm
Mon, 29 Nov 1999 15:52:49 +0100
changeset 8039 a901bafe4578
parent 2392 2fb9659d30ca
permissions -rw-r--r--
Goal: tuned pris;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     1
\documentclass[]{article}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     2
\usepackage{latexsym,amssymb,isa2latex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     3
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     4
\newcommand{\bt}[1]{{\tt #1}}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     5
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     6
\title{The Isabelle 8bit Package}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     7
\author{
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     8
David von Oheimb and Franz Regensburger\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
     9
Technical University of Munich, Germany\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    10
E-mail: \bt{\{oheimb|regensbu\}@informatik.tu-muenchen.de}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    11
}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    12
\date{\today}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    13
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    14
\begin{document}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    15
\maketitle
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    16
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    17
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    18
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    19
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    20
\section{Introduction}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    21
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    22
The 8bit package enables you to view, edit and print Isabelle files and perform
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    23
proofs in a quite pleasant form. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    24
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    25
Instead of representing logical operators with ASCII character sequences, 
1858
513316fd1087 *** empty log message ***
oheimb
parents: 1826
diff changeset
    26
a special graphical character font, and alternatively a \LaTeX{} 
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    27
command format, is provided. There are editors and a terminal
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    28
capable of inputting and displaying the graphical characters, and converters
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    29
between the different representations. The graphical font extends the normal
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    30
ASCII 7bit character coding with (non-standard) character codes having the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    31
8th bit set. All this is described in section \ref{graph} of this manual.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    32
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    33
Even without employing the 8bit font, the \LaTeX{} output for 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    34
Isabelle files can be used for manuals, papers etc. This is the focus of
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    35
section \ref{latex}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    36
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    37
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    38
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    39
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    40
\section{Graphical Isabelle}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    41
\label{graph}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    42
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    43
This section describes the main purpose of the 8bit package, which is to provide
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    44
an extension to the ASCII character set that allows to formulate and display 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    45
many logical operators as graphical symbols. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    46
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    47
\subsection{Usage}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    48
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    49
To employ the graphical font within Isabelle, just (re-)formulate the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    50
logical operators of your Isabelle theory (and proof) files using this font. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    51
A graphical terminal and suitable editors are described in subsection 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    52
\ref{commands}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    53
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    54
As a typical example, consider the following fragment of an Isabelle theory, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    55
an alternative formulation of the bounded universal quantifier within the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    56
set theory of \bt{HOL}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    57
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    58
\label{ex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    59
Without graphical characters, the operator is defined as follows.
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    60
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    61
\pagebreak
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    62
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    63
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    64
consts	
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    65
    	Ball	:: "'a set => ('a => bool) => bool"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    66
syntax
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    67
	"@Ball"	:: "pttrn => 'a set => bool => bool"
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    68
						("(3!_:_./ _)" 10)
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    69
translations
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    70
		"!x:A. P" == "Ball A (%x. P)"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    71
defs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    72
     Ball_def	"Ball A P == ! x. x:A --> P x"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    73
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    74
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    75
Using the graphical font (and assuming a corresponding re-formulation of 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    76
\bt{HOL} operators), the definition of the operator can be improved to the following.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    77
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    78
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    79
consts
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    80
	Ball	:: "'a set ë ('a ë bool) ë bool"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    81
syntax
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    82
	"GBall"	:: "pttrn ë 'a set ë bool ë bool"
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
    83
						("(3Â_Î_./ _)" 10)
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    84
translations
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    85
		"ÂxÎA. P" == "Ball A (³x. P)"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    86
defs
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    87
     Ball_def	"Ball A P Ú Âx. xÎA çè P x"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    88
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    89
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    90
Note the appearance of the graphical characters, which makes the code much more
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    91
legible.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    92
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    93
\label{compat}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    94
It is also possible to retain pure ASCII versions of the logical operators while
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    95
offering the possibility of graphical input and output.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    96
This may be necessary for compatibility reasons or for providing
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    97
graphical versions of the meta logic \I@Pure\I@ or object logics already
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    98
defined. In these cases, the graphical syntax can be supplied additionally with 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
    99
appropriate \I@types\I@, \I@syntax\I@, and \I@translations\I@ sections, as done
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   100
for example in the Isabelle distribution of \bt{HOL}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   101
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   102
In the example given above, the ASCII formulation of the quantifier can be
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   103
augmented with a graphical version by the following definition.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   104
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   105
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   106
syntax
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   107
	"GBall"	:: "pttrn => 'a set => bool => bool"
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   108
						("(3Â_Î_./ _)" 10)
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   109
translations
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   110
		"ÂxÎA. P" == "!x:A. P"
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   111
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   112
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   113
With this approach, the operators can still be entered in ASCII form, which is
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   114
important for the usability of old (pure ASCII) Isabelle files, while they are
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   115
displayed in the new graphical form. The additional level of syntax 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   116
translations introduced in this way may interfere with other translation rules
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   117
and should therefore be designed carefully.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   118
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   119
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   120
\pagebreak
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   121
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   122
\subsection{User commands}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   123
\label{commands}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   124
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   125
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   126
A number of commands for manipulating files with graphical characters are 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   127
available, as described in this subsection.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   128
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   129
\subsubsection{Editors}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   130
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   131
The first group of commands includes versions of the most common editors that 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   132
can handle the graphical font for both keyboard input and display input. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   133
See the files \bt{doc/\{fontindex|keyindex|fkmatrix\}.dvi} for the keystrokes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   134
defined for inputting the special characters. The editors are
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   135
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   136
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   137
\item \bt{isa\_xemacs}		replaces \bt{xemacs}. You may provide a 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   138
				specific init file called 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   139
				\bt{.emacs\_isa\_xemacs} (in your home directory)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   140
				that is executed after the \bt{.emacs} file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   141
\item \bt{isa\_gnu\_emacs}	replaces \bt{emacs}. You may provide a 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   142
				specific init file called 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   143
				\bt{.emacs\_isa\_gnu\_emacs} (in your home 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   144
				directory) that is executed after the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   145
				\bt{.emacs} file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   146
\item \bt{isaaxe}		replaces \bt{axe}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   147
\item \bt{isavim}		replaces \bt{vim}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   148
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   149
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   150
For example, as \bt{emacs} user you may type
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   151
\bt{isa\_xemacs doc/Set2g.thy \&} to view and edit
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   152
the above sample theory fragment.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   153
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   154
\subsubsection{Display commands}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   155
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   156
The next group of commands is used to display files using the graphical font.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   157
With the terminal, of course also input is possible, using the same keystrokes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   158
as with the editors.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   159
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   160
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   161
\item \bt{isaterm} 		replaces \bt{xterm}. This is used as terminal
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   162
				for your ML interpreter running Isabelle with
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   163
				theories and proofs containing graphical 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   164
				characters. This terminal is also useful if
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   165
				you want to \bt{cat} or \bt{grep} the Isabelle
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   166
				files within your shell, and as
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   167
				environment for commands like \bt{isapal}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   168
\item \bt{isapal}		shows the palette of available graphical 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   169
				characters. A man page is available.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   170
\item \bt{codetable}		prints all 8bit characters with their codes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   171
\item \bt{isa\_xmosaic}	replaces \bt{xmosaic}. This is useful for
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   172
				browsing the index files of Isabelle theories
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   173
				(with graphical operators) that are generated
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   174
				if \I@make_html\I@ is set to \I@true\I@.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   175
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   176
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   177
\subsubsection{Converters}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   178
\label{conv}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   179
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   180
The last group of commands is built to enable conversion between ASCII, 8bit 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   181
font and
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   182
\LaTeX\ representations of the graphical characters within papers, manuals, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   183
and Isabelle theory and proof files. For the options of the converters, see 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   184
the corresponding man pages.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   185
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   186
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   187
\item \bt{isa2latex}	converts a file with 8bit characters to a LaTeX
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   188
			source. Pure ASCII input and conversion of 8bit 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   189
			characters to their ASCII representations is also 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   190
			possible.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   191
\item \bt{a2isa}	converts Isabelle files, from ASCII to 8bit characters.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   192
			It is used mainly to convert old files.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   193
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   194
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   195
In order to output the first theory fragment (formulated without the 8bit
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   196
font) in subsection \ref{ex} as LaTeX\ source using suitable graphical 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   197
characters, type\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   198
\bt{isa2latex -s -A -o Set2.tex doc/Set2\_a.thy}.\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   199
(It was necessary to insert some blank characters in the file \bt{Set2\_a.thy} 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   200
that enable \bt{isa2latex} to recognize all the operators intended to be 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   201
printed with graphical characters, as discussed in subsection \ref{ambig}.)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   202
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   203
For conversion of \bt{Set2.thy} to 8bit characters, type\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   204
\bt{a2isa -o Set2\_g.thy doc/Set2.thy}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   205
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   206
Further explanations of the use of the converter \bt{isa2latex} are given
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   207
in section \ref{latex}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   208
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   209
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   210
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   211
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   212
\section{\LaTeX\ output}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   213
\label{latex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   214
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   215
Independently of whether Isabelle files are formulated with the graphical font
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   216
or not, they can be converted to \LaTeX\ source using \bt{isa2latex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   217
and in this way (pretty-)printed with the familiar symbols for quantification, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   218
intersection, etc. The tool \bt{isa2latex} can also convert \LaTeX\ source
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   219
files containing Isabelle source to pure \LaTeX\ 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   220
files, by converting the special character sequences of the Isabelle parts to
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   221
appropriate \LaTeX\ commands, and handing through the rest (almost) verbatim.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   222
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   223
For example, this manual itself is converted to a \bt{.tex} file by \\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   224
\bt{isa2latex -x -e -o manual.tex doc/manual.itex}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   225
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   226
\pagebreak
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   227
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   228
\subsection{Conversion modes}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   229
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   230
To handle the different parts of an input file, \bt{isa2latex} has several 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   231
conversion modes, namely
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   232
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   233
\item \bt{LATEX}: The input is is literally copied to the output,
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   234
without conversion of any characters. This mode is used for the \LaTeX\ parts
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   235
 of the input document.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   236
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   237
\item \bt{INLINE}: The conversion of characters and scanning for 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   238
multi character sequences is active, while newline and tab characters are 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   239
treated as single blank character.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   240
Use this mode for inserting small parts of Isabelle source within 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   241
a line of text.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   242
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   243
\item \bt{ISA}: The conversion of characters and scanning for 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   244
multi character sequences is active, while newline and tab characters are 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   245
treated according to an open tabbing environment. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   246
This mode is used for displaying multiple lines of Isabelle source.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   247
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   248
\item \bt{ESC}: In this mode the input is literally copied to the output.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   249
This mode is intended as an escape mode from the \bt{INLINE} and \bt{ESC} modes.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   250
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   251
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   252
Upon entrance of the conversion modes, \bt{isa2latex} generates the \LaTeX\ 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   253
commands \bt{\mbox{$\backslash$}isamode} for \bt{ISA}, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   254
\bt{\mbox{$\backslash$}isainline} for \bt{INLINE}, 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   255
and \bt{\mbox{$\backslash$}isaescape} for the \bt{ESC} mode. These act as
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   256
environment delimiters and may also set the appropriate fonts, styles etc. The 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   257
commands 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   258
are defined in the file \bt{latex/isa2latex.sty} and may be adapted as desired.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   259
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   260
\subsection{Conversion mode switching}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   261
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   262
The initial conversion mode of \bt{isa2latex} and the set of available modes 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   263
depend on the options given on the command line. Switching of the modes
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   264
relies on special toggles (like \I@\I\E@\E@@isa\I@, within the input
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   265
file) that indicate the beginning and end of the different parts of the input.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   266
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   267
The following diagrams show the initial mode (enclosed in sqare brackets), 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   268
the available mode switches (in the arrow symbols)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   269
and the modes reachable with them.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   270
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   271
If the \bt{-x} option is not given:
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   272
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   273
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   274
[ISA]  <-- \E\E@\E@@ -->  ESC
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   275
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   276
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   277
If the \bt{-x} option is given:
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   278
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   279
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   280
[LATEX]  <-- \I\E@\E@@ -->  INLINE  <-- \E\E@\E@@ -->  ESC
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   281
   ^
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   282
   |------ \I\E@\E@@isa -->  ISA  <-- \E\E@\E@@ -->  ESC
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   283
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   284
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   285
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   286
\pagebreak
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   287
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   288
\subsection{Ambiguity problems}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   289
\label{ambig}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   290
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   291
As \bt{isa2latex} converts its input files on a lexical level, it has limited
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   292
capability of dealing with ambiguities that are caused by using the same 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   293
characters for different operators. A typical examle
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   294
is the `\I@|\I@' character, which is used within the object logic \bt{HOL} both
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   295
as disjunction operator and as separator within \I@case\I@ expressions. In the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   296
former case, it should be converted to `\I@Á\I@', and in the latter case 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   297
retained as `\I@|\I@'. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   298
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   299
As a workaround, in the current version of \bt{isa2latex},
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   300
such ``dangerous'' characters are converted only if followed by a blank 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   301
character. Thus to enforce a conversion, append a blank character behind it, and
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   302
to prohibit it even if a blank character follows, you may insert a double 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   303
\I@\E\E@\E@@\I@, i.e. the string becomes `\I@|\E\E@\E@@\E\E@\E@@ \I@'. 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   304
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   305
You may also redefine the critical entries of the conversion tables in the file
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   306
\bt{config/conv-tables.inp}. The entry for the `\I@|\I@' character, for example,
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   307
looks like
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   308
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   309
>  "\|\ "		"|"		"\mbox{$\vee$}" 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   310
\I@isa
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   311
The first string, which (as described by the verbose comments in that file)
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   312
is the lex expression for the ASCII input, could be adapted to require an 
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   313
additional blank character before the `\I@|\I@'.
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   314
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   315
Most of these amibiguity problems can be avoided if you decide to employ the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   316
graphical font for your Isabelle source files. In this case, we recommend 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   317
using this font as early as possible, in order to avoid later conversions.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   318
For the conversion of old files, the tool \bt{a2isa} is provided. It
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   319
normally requires no changes of the original files and only minor corrections
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   320
of the files it produces. Thus the preferred way is to apply \bt{a2isa} once and
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   321
for all on the source files, correct all conversion mistakes, and then use the 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   322
new files with the graphical font. With these files, the ambiguity problems 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   323
should have gone.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   324
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   325
As the converter \bt{a2isa} is a bit smarter than \bt{isa2latex} in converting
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   326
ASCII input, it is also useful if you do not employ the 8bit font directly. To
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   327
convert a problematic ASCII file containing Isabelle source, first apply
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   328
\bt{a2isa} and then \bt{isa2latex} without option \bt{-A}. For example, type\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   329
\bt{a2isa Set2.thy | isa2latex -s -o doc/Set2a.tex}\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   330
to generate a better output than in the example conversion given in subsection
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   331
\ref{conv}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   332
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   333
\pagebreak
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   334
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   335
\section{Technical issues}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   336
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   337
\subsection{Preparations}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   338
1907
d069f23e941f Minor improvements of the scripts
oheimb
parents: 1858
diff changeset
   339
To use the 8bit package, you have to set (respectively extend) the content of
d069f23e941f Minor improvements of the scripts
oheimb
parents: 1858
diff changeset
   340
the following environment variables and export them:
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   341
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   342
\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   343
\item \bt{ISABELLE8BIT}: set the directory of the Isabelle 8bit package,\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   344
	e.g.  \bt{/usr/proj/isabelle/src/Tools/8bit}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   345
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   346
\item \bt{PATH}: add the absolute path of the executables,\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   347
	e.g.  \bt{\$ISABELLE8BIT/bin}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   348
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   349
\item \bt{MANPATH}: add the absolute path of the manual pages,\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   350
	e.g.  \bt{\$ISABELLE8BIT/man}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   351
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   352
\item \bt{TEXINPUTS}: add the absolute path of special LaTeX style files
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   353
			used by the 8bit package (if necessary),
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   354
	e.g. \bt{\$ISABELLE8BIT/latex:}\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   355
                the trailing `\bt{:}' makes latex search subdirectories!\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   356
	The 8bit package uses
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   357
	\begin{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   358
	\item the AMSFONT package
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   359
        \item the supertab style (clarkson)	
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   360
        \item the special style \bt{isa2latex.sty}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   361
	\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   362
	Some of them are contained in that directory.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   363
\end{itemize}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   364
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   365
Before the first use of any executable of subdirectory {\tt bin}, call
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   366
the scripts \bt{fonts/install} and \bt{keyboard/install}. This is done best
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   367
in your \bt{.login} file.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   368
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   369
\subsection{Installation and Configuration}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   370
1858
513316fd1087 *** empty log message ***
oheimb
parents: 1826
diff changeset
   371
To install the 8bit package, change directory to \bt{\$ISABELLE8BIT}.
513316fd1087 *** empty log message ***
oheimb
parents: 1826
diff changeset
   372
Configure the \bt{Makefile} there, then run \bt{gmake clean} 
513316fd1087 *** empty log message ***
oheimb
parents: 1826
diff changeset
   373
(\bt{gmake} is the gnu version of \bt{make}) and then \bt{gmake}.
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   374
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   375
If you want to adapt the configuration of the font (keyboard bindings or
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   376
conversion tables used by \bt{isa2latex}), change directory to\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   377
\bt{\$ISABELLE8BIT/config} ,
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   378
edit the files \bt{key-table.inp} and \bt{conv-tables.inp} 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   379
as described below, 
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   380
and run \bt{gmake} in this directory to generate new versions of 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   381
\bt{isa2latex}, editor support, and documentation.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   382
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   383
For adapting the conversion table of \bt{a2isa}, change directory to \\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   384
\bt{\$ISABELLE8BIT/c-sources/a2isa}, edit the file \bt{lex.x}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   385
accordingly, and run \bt{gmake} there.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   386
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   387
%%%% FRANZ
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   388
\subsubsection{Configuring conversion tables and keyboard bindings}
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   389
%\label{subsub:gens}
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   390
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   391
The 8bit package comes along with several perl%
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   392
\footnote{the scripts are written in perl4. In order to run them with later
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   393
  versions of perl, you have to patch the scripts in some places since perl4
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   394
  and later versions differ in the way they expand backslashes.} scripts that
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   395
allow you to configure the package for your own needs in a convenient way.
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   396
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   397
Keyboard bindings and the major behaviour of the converter \bt{isa2latex} are
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   398
controlled by the two configuration files \bt{key-table.inp} and
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   399
\bt{conv-tables.inp} which reside in the directory \bt{\$ISABELLE8BIT/config}.
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   400
As these files contain a lot of comments, their formats are rather 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   401
self explanatory.
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   402
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   403
To change the conversions performed by \bt{isa2latex}, you just
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   404
have to alter the file \bt{conv-tables.inp}. This file mainly contains the
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   405
conversion tables for single characters in the code ranges 32 -- 127 and
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   406
(usually) 161 -- 255.  The last part of the configuration file describes how the
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   407
lexical analyser of the converter \bt{isa2latex} treats special character
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   408
sequences. It is most likely that you change this part of the configuration
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   409
file. 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   410
In order to activate your changes, you have to run the Makefile with \bt{gmake}.
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   411
This invokes the perl script \bt{gen-isa2latex} with \bt{conv-tables.inp} as
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   412
an argument. See the man page on \bt{gen-isa2latex} for more details about
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   413
command line arguments. According to the configuration file, the perl script
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   414
patches specific portions of the C source of the 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   415
converter in the directory \bt{\$ISABELLE8BIT/c-sources/isa2latex} and
2392
2fb9659d30ca minor adaptions
oheimb
parents: 1986
diff changeset
   416
calls the C compiler to generate a new binary for \bt{isa2latex}\footnote{
2fb9659d30ca minor adaptions
oheimb
parents: 1986
diff changeset
   417
The \bt{Makefile} uses the lexical analyzer \bt{flex}. Make sure that you
2fb9659d30ca minor adaptions
oheimb
parents: 1986
diff changeset
   418
use a recent version of it.}.
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   419
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   420
If you want to alter the keyboard bindings for the various editors and the
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   421
terminal, you have to change the configuration file \bt{key-table.inp}. 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   422
The file contains as its main part a table relating keystrokes to the 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   423
keyboard codes to be generated. Then run the Makefile with \bt{gmake}.
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   424
For every editor that the 8bit package supports, \bt{gmake} starts a perl script
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   425
that patches the start up file for the specific editor. For example, for the 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   426
\bt{vim} editor the script \bt{gen-isavim} is started, which patches the shell 
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   427
script
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   428
\bt{\$ISABELLE8BIT/vim/isavim}.  As the last action, the perl script
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   429
\bt{gen-isadoc} is invoked which generates some \bt{.dvi} files for reference
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   430
cards which document the new keyboard mapping.
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   431
%%%% FRANZ
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   432
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   433
\subsection{Management of alternative sources}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   434
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   435
If you retain ASCII versions of logical operators for compatibility reasons,
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   436
as described in subsection \ref{compat}, you may want to export versions of your
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   437
Isabelle theories that contain no 8bit characters. To support this, a patching
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   438
mechanism is provided as follows. Encapsulate each section of your files dealing
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   439
solely with the 8bit font with suitable begin and end pragmas (some pair of 
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   440
unique comment lines) and configure three configuration files analogously to\\
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   441
\bt{\$ISABELLE8BIT/isa-patches/HOL/\{extract|clean|add\}-HOL.cfg}.
1986
36f6bbf41477 new \subsubsection{Configuring conversion tables and keyboard bindings}
oheimb
parents: 1907
diff changeset
   442
You can call the \bt{patcher} than with the first file to extract and store to
1826
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   443
a file, the second to remove, and the third to re-add the 8bit section of the
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   444
Isabelle files. See also the man page of \bt{patcher}.
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   445
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   446
\end{document}
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   447
2a2c0dbeb4ac Initial revision
oheimb
parents:
diff changeset
   448