Move SUrflet howto into main documentation.
Merge 2 decls.tex together. Drawback: can't use url package anymore.
This commit is contained in:
parent
25e03fe5e4
commit
63d708b219
|
@ -5,6 +5,8 @@
|
||||||
\def\Eg{\mbox{\emph{E.g.}}}
|
\def\Eg{\mbox{\emph{E.g.}}}
|
||||||
\def\etc{{\em etc.}}
|
\def\etc{{\em etc.}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\def\Lisp{\textsc{Lisp}}
|
\def\Lisp{\textsc{Lisp}}
|
||||||
\def\CommonLisp{\textsc{Common Lisp}}
|
\def\CommonLisp{\textsc{Common Lisp}}
|
||||||
\def\Ascii{\textsc{Ascii}}
|
\def\Ascii{\textsc{Ascii}}
|
||||||
|
@ -275,4 +277,62 @@
|
||||||
{\begin{figure}[#1]\begin{boxedminipage}{\linewidth}\vskip 1.5ex}
|
{\begin{figure}[#1]\begin{boxedminipage}{\linewidth}\vskip 1.5ex}
|
||||||
{\end{boxedminipage}\end{figure}}
|
{\end{boxedminipage}\end{figure}}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%for surflet howto
|
||||||
|
\def\surflet{SUrflet\xspace}
|
||||||
|
\def\surflets{SUrflets\xspace}
|
||||||
|
\def\scsh{scsh\xspace}
|
||||||
|
\def\sunet{SUnet\xspace}
|
||||||
|
|
||||||
|
%From surflet/decls.tex
|
||||||
|
{\theoremstyle{break}
|
||||||
|
\theoremheaderfont{\normalfont\bfseries\em}
|
||||||
|
\newtheorem{proglist}{Listing}[section]}
|
||||||
|
\setlength{\theorempreskipamount}{1.5ex plus0.2ex minus0.2ex}
|
||||||
|
\setlength{\theorempostskipamount}{2ex plus0.5ex minus0.2ex}
|
||||||
|
|
||||||
|
% These environments differ from the other definition by the
|
||||||
|
% positioning of \normalem
|
||||||
|
\newenvironment{listing}
|
||||||
|
{\ULforem\begin{proglist}\begin{alltt}\small\normalem}
|
||||||
|
{\end{alltt}\end{proglist}}
|
||||||
|
|
||||||
|
\newenvironment{reflisting}[1]
|
||||||
|
{\ULforem\begin{proglist}[\refinlisting{#1}]\begin{alltt}\small\normalem}
|
||||||
|
{\end{alltt}\end{proglist}}
|
||||||
|
|
||||||
|
\newcommand{\contatlisting}[1]{%
|
||||||
|
{\normalfont\textit{$<$continued in listing~\ref{#1}\/$>$}}}
|
||||||
|
\newcommand{\contfromlisting}[1]{%
|
||||||
|
{\normalfont\textit{$<$continued from listing~\ref{#1}\/$>$}}}
|
||||||
|
\newcommand{\refinlisting}[1]{%
|
||||||
|
{\normalfont\textit{referenced in listing~\ref{#1}}}}
|
||||||
|
\newcommand{\seelisting}[1]{%
|
||||||
|
{\normalfont{\textit{$<$see listing~\ref{#1}\/$>$}}}}
|
||||||
|
|
||||||
|
\newfloat{program}{t}{lop}
|
||||||
|
\floatname{program}{Programm}
|
||||||
|
\newenvironment{floatprog}[2]
|
||||||
|
{\begin{program}[ht] \caption{#1} \label{#2} \begin{alltt}}
|
||||||
|
{\end{alltt} \end{program}%
|
||||||
|
% Force output of even long floating figs
|
||||||
|
\afterpage{\clearpage}}
|
||||||
|
|
||||||
|
% Use url-package to get function names line-breaked at - / +
|
||||||
|
% by infos in /usr/share/texmf/tex/latex/misc/url.sty
|
||||||
|
%%\newcommand\breakfuntt{\begingroup \urlstyle{tt}%
|
||||||
|
%%\@ifundefined{selectfont}{\def\UrlFont{\tt}}{\def\UrlFont{\ttfamily}}%
|
||||||
|
%%\def\UrlBreaks{\do\-\do\/\do\+}\def\UrlNoBreaks{\do\!}\Url
|
||||||
|
%%}
|
||||||
|
|
||||||
|
\newcommand{\name}[1]{\texttt{#1}}
|
||||||
|
%\newcommand{\object}[1]{\breakfuntt{#1}}
|
||||||
|
\newcommand{\file}[1]{\textttt{#1}}
|
||||||
|
\newcommand{\codemph}[1]{\emph{#1}}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
|
||||||
\makeatother
|
\makeatother
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
\usepackage[latin1]{inputenc}
|
\usepackage[latin1]{inputenc}
|
||||||
\usepackage{alltt}
|
\usepackage{alltt}
|
||||||
\usepackage{xspace}
|
\usepackage{xspace}
|
||||||
|
\usepackage{tabularx,theorem,ulem,float,afterpage} % need url
|
||||||
|
\normalem % usually, don't use ulem
|
||||||
|
|
||||||
\texonly
|
\texonly
|
||||||
% tex2page defines \url and hyperref loads the package url
|
% tex2page defines \url and hyperref loads the package url
|
||||||
|
@ -61,6 +63,7 @@
|
||||||
\include{uri}
|
\include{uri}
|
||||||
\include{url}
|
\include{url}
|
||||||
\include{cgi-script}
|
\include{cgi-script}
|
||||||
|
\include{surflets}
|
||||||
\include{ftpd}
|
\include{ftpd}
|
||||||
\include{ftp}
|
\include{ftp}
|
||||||
\include{netrc}
|
\include{netrc}
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
\documentclass{article}
|
%%documentclass{article}
|
||||||
|
%%
|
||||||
\usepackage[latin1]{inputenc}
|
%%usepackage[latin1]{inputenc}
|
||||||
\usepackage{fontenc}
|
%%usepackage{fontenc}
|
||||||
\usepackage{alltt}
|
%%usepackage{alltt}
|
||||||
\usepackage{url,xspace}
|
%%usepackage{url,xspace}
|
||||||
\usepackage{tabularx}
|
%%usepackage{tabularx}
|
||||||
\usepackage{theorem,ulem,float,afterpage}
|
%%usepackage{theorem,ulem,float,afterpage}
|
||||||
\normalem %usually, don't use ulem
|
%%normalem %usually, don't use ulem
|
||||||
|
%%
|
||||||
|
%%
|
||||||
\input{decls}
|
%%input{decls}
|
||||||
|
%%
|
||||||
\title{Howto write \surflets}
|
%%title{Howto write \surflets}
|
||||||
\author{Andreas Bernauer}
|
%%author{Andreas Bernauer}
|
||||||
|
%%
|
||||||
\begin{document}
|
%%begin{document}
|
||||||
\maketitle
|
%%maketitle
|
||||||
|
%%
|
||||||
\tableofcontents
|
%%tableofcontents
|
||||||
\sloppy
|
%%sloppy
|
||||||
|
|
||||||
\section{Introduction}
|
\section{Introduction}
|
||||||
This report gives a short introduction in how to write a \surflet. It
|
This howto gives a short introduction in how to write a \surflet. It
|
||||||
is concentrated on the practical side rather on describing the
|
is concentrated on the practical side rather on describing the
|
||||||
\surflet API in detail to give you instant succes in running your own
|
\surflet API in detail to give you instant succes in running your own
|
||||||
surflets. The \surflet API will be described in the SUnet
|
surflets. The \surflet API will be described in the SUnet
|
||||||
|
@ -52,7 +52,7 @@ website and use them to read out the user input.
|
||||||
|
|
||||||
The following sections probably assume that you have basic knowledge
|
The following sections probably assume that you have basic knowledge
|
||||||
of the SUnet webserver and scsh. The environment variable
|
of the SUnet webserver and scsh. The environment variable
|
||||||
\code{\$sunet} refers to the top level directory of your sunet
|
\typew{\$sunet} refers to the top level directory of your sunet
|
||||||
installation. On my system this is \name{/home/andreas/sw/sunet}.
|
installation. On my system this is \name{/home/andreas/sw/sunet}.
|
||||||
|
|
||||||
\section{How to run the SUnet webserver that handles \surflets}
|
\section{How to run the SUnet webserver that handles \surflets}
|
||||||
|
@ -63,7 +63,7 @@ the ability to serve \surflets. This section tells you how to do it.
|
||||||
|
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item You need Oleg's SSAX package (for scsh), to be able to use
|
\item You need Oleg's SSAX package (for scsh), to be able to use
|
||||||
\surflets:
|
surflets:
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Download Oleg's SSAX package from
|
\item Download Oleg's SSAX package from
|
||||||
|
@ -71,14 +71,14 @@ the ability to serve \surflets. This section tells you how to do it.
|
||||||
|
|
||||||
\item Uncompress and untar it to any directory. This will create a
|
\item Uncompress and untar it to any directory. This will create a
|
||||||
directory called \name{SSAX}, to which I will refer to as
|
directory called \name{SSAX}, to which I will refer to as
|
||||||
\code{\$SSAX}.
|
\typew{\$SSAX}.
|
||||||
|
|
||||||
\item Unfortunately, this distribution (plt200-4.9) has a typo in
|
\item Unfortunately, this distribution (plt200-4.9) has a typo in
|
||||||
the package definition for scsh. Apply the patch that comes with
|
the package definition for scsh. Apply the patch that comes with
|
||||||
the \surflets distribution to get rid of this typo:
|
the \surflets distribution to get rid of this typo:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \code{cd \$SSAX}
|
\item \typew{cd \$SSAX}
|
||||||
\item \code{patch -p1 < \$sunet/httpd/surflets/SSAX-goodhtml-patch}
|
\item \typew{patch -p1 < \$sunet/httpd/surflets/SSAX-goodhtml-patch}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
@ -87,8 +87,8 @@ the ability to serve \surflets. This section tells you how to do it.
|
||||||
does this for you:
|
does this for you:
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \code{cd \$sunet/httpd/surflets}
|
\item \typew{cd \$sunet/httpd/surflets}
|
||||||
\item \code{SSAX=\$SSAX ./start-surflet-server}
|
\item \typew{SSAX=\$SSAX ./start-surflet-server}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ Error: 98
|
||||||
In this case, pass another port number to the script, \eg 8000:
|
In this case, pass another port number to the script, \eg 8000:
|
||||||
\codex{ssax=\$SSAX ./start-surflet-server -p 8000}
|
\codex{ssax=\$SSAX ./start-surflet-server -p 8000}
|
||||||
|
|
||||||
The \code{--help} option will show you more parameters that you can
|
The \typew{--help} option will show you more parameters that you can
|
||||||
adjust, but you won't need them for this howto.
|
adjust, but you won't need them for this howto.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
|
@ -237,17 +237,17 @@ SXML list are the contents that are enclosed by this HTML tag. The
|
||||||
contents can be other SXML list, too. Here are some examples of SXML
|
contents can be other SXML list, too. Here are some examples of SXML
|
||||||
lists and how they translate to HTML:
|
lists and how they translate to HTML:
|
||||||
|
|
||||||
\newcommand{\tag}[1]{$\mathtt{<}$#1$\mathtt{>}$}
|
\newcommand{\htmltag}[1]{$\mathtt{<}$#1$\mathtt{>}$}
|
||||||
\begin{tabbing}
|
\begin{tabbing}
|
||||||
HTML: \medskip\=\kill
|
HTML: \medskip\=\kill
|
||||||
SXML: \> \texttt{'(p "A paragraph.")} \\
|
SXML: \> \texttt{'(p "A paragraph.")} \\
|
||||||
HTML: \> \texttt{\tag{p}A paragraph.\tag{/p}}\\
|
HTML: \> \texttt{\htmltag{p}A paragraph.\htmltag{/p}}\\
|
||||||
\\
|
\\
|
||||||
SXML: \> \texttt{'(p "A paragraph." (br) "With break line.")} \\
|
SXML: \> \texttt{'(p "A paragraph." (br) "With break line.")} \\
|
||||||
HTML: \> \texttt{\tag{p}A paragraph.\tag{br}With break line.\tag{/p}}\\
|
HTML: \> \texttt{\htmltag{p}A paragraph.\htmltag{br}With break line.\htmltag{/p}}\\
|
||||||
\\
|
\\
|
||||||
SXML: \> \texttt{'(p "Nested" (p "paragraphs"))}\\
|
SXML: \> \texttt{'(p "Nested" (p "paragraphs"))}\\
|
||||||
HTML: \> \texttt{\tag{p}Nested\tag{p}paragraphs\tag{/p}\tag{/p}}\\
|
HTML: \> \texttt{\htmltag{p}Nested\htmltag{p}paragraphs\htmltag{/p}\htmltag{/p}}\\
|
||||||
\end{tabbing}
|
\end{tabbing}
|
||||||
|
|
||||||
Attributes are stated by a special list whose first element is the
|
Attributes are stated by a special list whose first element is the
|
||||||
|
@ -256,12 +256,12 @@ at-symbol. The attribute list must be the second element in the list:
|
||||||
\begin{tabbing}
|
\begin{tabbing}
|
||||||
HTML: \medskip\=\kill
|
HTML: \medskip\=\kill
|
||||||
SXML: \> \texttt{'(a (@ (href "attr.html")) "Attributed HTML tags.")} \\
|
SXML: \> \texttt{'(a (@ (href "attr.html")) "Attributed HTML tags.")} \\
|
||||||
HTML: \> \texttt{\tag{a href="attr.html"}Attributed HTML tags.\tag{/a}}\\
|
HTML: \> \texttt{\htmltag{a href="attr.html"}Attributed HTML tags.\htmltag{/a}}\\
|
||||||
\\
|
\\
|
||||||
SXML: \> \texttt{'(a (@ (href "attr2.html") (target "\_blank")) "2
|
SXML: \> \texttt{'(a (@ (href "attr2.html") (target "\_blank")) "2
|
||||||
attributes.")} \\
|
attributes.")} \\
|
||||||
HTML: \> \texttt{\tag{a href="attr2.html" target="\_blank"}2
|
HTML: \> \texttt{\htmltag{a href="attr2.html" target="\_blank"}2
|
||||||
attributes.\tag{/a}}
|
attributes.\htmltag{/a}}
|
||||||
\end{tabbing}
|
\end{tabbing}
|
||||||
|
|
||||||
As you see from the \surflet example, \name{send-html/finish} expects
|
As you see from the \surflet example, \name{send-html/finish} expects
|
||||||
|
@ -275,9 +275,9 @@ following HTML code:
|
||||||
|
|
||||||
Please note, that there is no check for valid HTML or even XHTML
|
Please note, that there is no check for valid HTML or even XHTML
|
||||||
here. The only thing the translation process takes care of are
|
here. The only thing the translation process takes care of are
|
||||||
special characters in strings like the ampersand (\code{\&}). The
|
special characters in strings like the ampersand (\typew{\&}). The
|
||||||
translation process replaces them by their HTML representation (\eg,
|
translation process replaces them by their HTML representation (\eg,
|
||||||
\code{\&}) so you don't have to worry about that when you use
|
\typew{\&}) so you don't have to worry about that when you use
|
||||||
strings. Everything else like using valid HTML tags or valid
|
strings. Everything else like using valid HTML tags or valid
|
||||||
attributes is your responsibility.
|
attributes is your responsibility.
|
||||||
|
|
||||||
|
@ -306,15 +306,15 @@ can be done like this:
|
||||||
This \surflet can be found in \name{howto/hello-date.scm}. The
|
This \surflet can be found in \name{howto/hello-date.scm}. The
|
||||||
beginning of this \surflet is the same as in the previous example.
|
beginning of this \surflet is the same as in the previous example.
|
||||||
The difference lies in the argument to \name{send-html/finish}. Note
|
The difference lies in the argument to \name{send-html/finish}. Note
|
||||||
that the argument starts with a backquote (\code{`}) rather than with
|
that the argument starts with a backquote (\typew{`}) rather than with
|
||||||
a regular quote (\code{'}) as in the previous example.
|
a regular quote (\typew{'}) as in the previous example.
|
||||||
|
|
||||||
Instead of passing a ``static'' list, \ie a list whose contents are
|
Instead of passing a ``static'' list, \ie a list whose contents are
|
||||||
given before execution, this \surflet uses the quasiquote and unquote
|
given before execution, this \surflet uses the quasiquote and unquote
|
||||||
feature of Scheme to create a ``dynamic'' list, \ie list whose
|
feature of Scheme to create a ``dynamic'' list, \ie list whose
|
||||||
contents are given only during execution. A ``dynamic'' list is
|
contents are given only during execution. A ``dynamic'' list is
|
||||||
introduced by a backquote (\code{`}) and its dynamic contents are
|
introduced by a backquote (\typew{`}) and its dynamic contents are
|
||||||
noted by commata (\code{,}). Thus, if the \surflet is executed while
|
noted by commata (\typew{,}). Thus, if the \surflet is executed while
|
||||||
I am writing this howto, the argument to \name{send-html/finish} above
|
I am writing this howto, the argument to \name{send-html/finish} above
|
||||||
is translated to
|
is translated to
|
||||||
|
|
||||||
|
@ -394,7 +394,7 @@ session automatically as described in the previous paragraph.
|
||||||
%, \ie it starts the session automatically when an
|
%, \ie it starts the session automatically when an
|
||||||
%instance of your \surflet starts and takes care of the saving and
|
%instance of your \surflet starts and takes care of the saving and
|
||||||
%restoring of all variable values during suspensions of your \surflet
|
%restoring of all variable values during suspensions of your \surflet
|
||||||
%instance, except for \code{set!}ed values.
|
%instance, except for \typew{set!}ed values.
|
||||||
|
|
||||||
The only thing you have to worry about is when your session
|
The only thing you have to worry about is when your session
|
||||||
\emph{ends}. As long as your session hasn't been finished by
|
\emph{ends}. As long as your session hasn't been finished by
|
||||||
|
@ -430,9 +430,9 @@ snippets are equivalent:
|
||||||
\name{url} expects the target address as the next element and includes
|
\name{url} expects the target address as the next element and includes
|
||||||
every text afterwards as part of the link.
|
every text afterwards as part of the link.
|
||||||
|
|
||||||
There are also some other abbreviations. \code{(nbsp)} inserts
|
There are also some other abbreviations. \typew{(nbsp)} inserts
|
||||||
`\code{\ }' into the HTML, \code{(*COMMENT* \dots)} inserts a
|
`\typew{\ }' into the HTML, \typew{(*COMMENT* \dots)} inserts a
|
||||||
comment, and with \code{(plain-html \dots)} you can insert arbitrary
|
comment, and with \typew{(plain-html \dots)} you can insert arbitrary
|
||||||
HTML code (\ie strings) directly , without any string conversions.
|
HTML code (\ie strings) directly , without any string conversions.
|
||||||
The last abbreviation, \name{surflet-form}, is discussed in the next
|
The last abbreviation, \name{surflet-form}, is discussed in the next
|
||||||
section.
|
section.
|
||||||
|
@ -538,7 +538,9 @@ add the symbol \name{'POST} after the URL:
|
||||||
\end{alltt}
|
\end{alltt}
|
||||||
|
|
||||||
The web page \name{send-html/suspend} sends to the browser looks like
|
The web page \name{send-html/suspend} sends to the browser looks like
|
||||||
in figure \ref{fig:user1-1}. After the user has entered his data into
|
in figure [missing]
|
||||||
|
%\ref{fig:user1-1}.
|
||||||
|
After the user has entered his data into
|
||||||
the web form, \name{send-html/suspend} returns with the request object
|
the web form, \name{send-html/suspend} returns with the request object
|
||||||
of the browser for the next page. This request object contains the
|
of the browser for the next page. This request object contains the
|
||||||
data the user has entered.
|
data the user has entered.
|
||||||
|
@ -550,7 +552,7 @@ data the user has entered.
|
||||||
With the function \name{get-bindings} we pull out the user data of the
|
With the function \name{get-bindings} we pull out the user data of the
|
||||||
request object. Here we save the user data into the variable
|
request object. Here we save the user data into the variable
|
||||||
\name{bindings}. \name{get-bindings} works for both request methods
|
\name{bindings}. \name{get-bindings} works for both request methods
|
||||||
\code{GET} and \code{POST}.
|
\typew{GET} and \typew{POST}.
|
||||||
|
|
||||||
\begin{alltt}
|
\begin{alltt}
|
||||||
(user-input (input-field-value text-input bindings)))
|
(user-input (input-field-value text-input bindings)))
|
|
@ -0,0 +1,11 @@
|
||||||
|
\chapter{SUrflet server}
|
||||||
|
|
||||||
|
\newcommand{\typew}[1]{\texttt{#1}}
|
||||||
|
|
||||||
|
The \surflet server enables you to write server side scripted web
|
||||||
|
programs in Scheme. Currently, there is only the howto available.
|
||||||
|
The complete API is supposed to come soon. There are lot of example
|
||||||
|
files in \typew{httpd/surflet/webserver/root/surflets} from which you
|
||||||
|
can copy freely.
|
||||||
|
|
||||||
|
\input{surflethowto}
|
|
@ -1,73 +0,0 @@
|
||||||
|
|
||||||
\makeatletter
|
|
||||||
|
|
||||||
\def\surflet{SUrflet\xspace}
|
|
||||||
\def\surflets{SUrflets\xspace}
|
|
||||||
\def\scsh{scsh\xspace}
|
|
||||||
\def\sunet{SUnet\xspace}
|
|
||||||
|
|
||||||
%From sunet/decls.tex
|
|
||||||
\def\ie{\mbox{\emph{i.e.}\xspace}} % \mbox keeps the last period from
|
|
||||||
\def\Ie{\mbox{\emph{I.e.}\xspace}} % looking like an end-of-sentence.
|
|
||||||
\def\eg{\mbox{\emph{e.g.}\xspace}}
|
|
||||||
\def\Eg{\mbox{\emph{E.g.}\xspace}}
|
|
||||||
|
|
||||||
%From surflet/decls.tex
|
|
||||||
{\theoremstyle{break}
|
|
||||||
\theoremheaderfont{\normalfont\bfseries\em}
|
|
||||||
\newtheorem{proglist}{Listing}[section]}
|
|
||||||
\setlength{\theorempreskipamount}{1.5ex plus0.2ex minus0.2ex}
|
|
||||||
\setlength{\theorempostskipamount}{2ex plus0.5ex minus0.2ex}
|
|
||||||
|
|
||||||
% These environments differ from the other definition by the
|
|
||||||
% positioning of \normalem
|
|
||||||
\newenvironment{listing}
|
|
||||||
{\ULforem\begin{proglist}\begin{alltt}\small\normalem}
|
|
||||||
{\end{alltt}\end{proglist}}
|
|
||||||
|
|
||||||
\newenvironment{reflisting}[1]
|
|
||||||
{\ULforem\begin{proglist}[\refinlisting{#1}]\begin{alltt}\small\normalem}
|
|
||||||
{\end{alltt}\end{proglist}}
|
|
||||||
|
|
||||||
\newcommand{\contatlisting}[1]{%
|
|
||||||
{\normalfont\textit{$<$wird fortgesetzt in Listing~\ref{#1}\/$>$}}}
|
|
||||||
\newcommand{\contfromlisting}[1]{%
|
|
||||||
{\normalfont\textit{$<$fortgesetzt von Listing~\ref{#1}\/$>$}}}
|
|
||||||
\newcommand{\refinlisting}[1]{%
|
|
||||||
{\normalfont\textit{referenziert in Listing~\ref{#1}}}}
|
|
||||||
\newcommand{\seelisting}[1]{%
|
|
||||||
{\normalfont{\textit{$<$siehe Listing~\ref{#1}\/$>$}}}}
|
|
||||||
|
|
||||||
\newfloat{program}{t}{lop}
|
|
||||||
\floatname{program}{Programm}
|
|
||||||
\newenvironment{floatprog}[2]
|
|
||||||
{\begin{program}[ht] \caption{#1} \label{#2} \begin{alltt}}
|
|
||||||
{\end{alltt} \end{program}%
|
|
||||||
% Force output of even long floating figs
|
|
||||||
\afterpage{\clearpage}}
|
|
||||||
|
|
||||||
% stolen from sunet/doc/latex/decls.tex (Olin)
|
|
||||||
\newenvironment{leftinset}
|
|
||||||
{\bgroup\parskip=1ex plus 1ex\begin{list}{}%
|
|
||||||
{\topsep=0pt}%
|
|
||||||
\item[]}%
|
|
||||||
{\end{list}\leavevmode\egroup\global\@ignoretrue}
|
|
||||||
%\newcommand{\code}[1]{{\normalfont\texttt{\ttchars #1}}}
|
|
||||||
\newcommand{\code}[1]{\frenchspacing\texttt{#1}}
|
|
||||||
\newcommand{\codex}[1]{\begin{leftinset}\code{#1}\end{leftinset}\ignorespaces}
|
|
||||||
|
|
||||||
% Use url-package to get function names line-breaked at - / +
|
|
||||||
% by infos in /usr/share/texmf/tex/latex/misc/url.sty
|
|
||||||
\newcommand\breakfuntt{\begingroup \urlstyle{tt}%
|
|
||||||
\@ifundefined{selectfont}{\def\UrlFont{\tt}}{\def\UrlFont{\ttfamily}}%
|
|
||||||
\def\UrlBreaks{\do\-\do\/\do\+}\def\UrlNoBreaks{\do\!}\Url
|
|
||||||
}
|
|
||||||
|
|
||||||
\newcommand{\name}[1]{\breakfuntt{#1}}
|
|
||||||
\newcommand{\object}[1]{\breakfuntt{#1}}
|
|
||||||
\newcommand{\file}[1]{\breakfuntt{#1}}
|
|
||||||
\def\sharpf{\textnormal{\texttt{\#f}}}
|
|
||||||
\def\sharpt{\textnormal{\texttt{\#t}}}
|
|
||||||
\newcommand{\codemph}[1]{\emph{#1}}
|
|
||||||
|
|
||||||
\makeatother
|
|
Loading…
Reference in New Issue