summaryrefslogtreecommitdiff
path: root/Master/tlpkg/dviout/SPECIAL
diff options
context:
space:
mode:
authorSiep Kroonenberg <siepo@cybercomm.nl>2008-09-26 09:17:26 +0000
committerSiep Kroonenberg <siepo@cybercomm.nl>2008-09-26 09:17:26 +0000
commit69cdb80977fc59e47c24a680fc0c61a3eac0c097 (patch)
treeca111e9049a1785bf8507161dce88a2233268760 /Master/tlpkg/dviout/SPECIAL
parentd3a140feea19858912cc2de406e176ae8ce6c392 (diff)
dviout moved to tlpkg/dviout; dviout.vbs changed accordingly.
git-svn-id: svn://tug.org/texlive/trunk@10733 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/dviout/SPECIAL')
-rw-r--r--Master/tlpkg/dviout/SPECIAL/demo.tex79
-rw-r--r--Master/tlpkg/dviout/SPECIAL/dviout.sty412
-rw-r--r--Master/tlpkg/dviout/SPECIAL/ophook.sty158
-rw-r--r--Master/tlpkg/dviout/SPECIAL/presen.sty238
-rw-r--r--Master/tlpkg/dviout/SPECIAL/presen.txt77
-rw-r--r--Master/tlpkg/dviout/SPECIAL/src.mac3
-rw-r--r--Master/tlpkg/dviout/SPECIAL/srcspecial.mac15
-rw-r--r--Master/tlpkg/dviout/SPECIAL/srctex.cfg110
8 files changed, 1092 insertions, 0 deletions
diff --git a/Master/tlpkg/dviout/SPECIAL/demo.tex b/Master/tlpkg/dviout/SPECIAL/demo.tex
new file mode 100644
index 00000000000..2a9e8187dbb
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/demo.tex
@@ -0,0 +1,79 @@
+\documentclass[a4paper,12pt]{article}
+\usepackage[auto,full]{presen}
+%\usepackage[full]{presen}
+
+\pagestyle{empty}
+
+%%%%%% TEXT START %%%%%%
+\begin{document}
+\SetTimer{2000}
+%\StartPresentation
+
+\sffamily\Large
+
+\hbox{}\vfill
+\begin{center}
+\Huge
+Conference On \LaTeXe
+\end{center}
+\vfill
+
+\newpage
+\begin{center}
+2000/02/21(Mon)
+\end{center}
+
+\begin{itemize}
+ \item {\bfseries 10:00--10:50 AAA}\\
+ From \LaTeX2.09 to \LaTeXe.
+ \item\Pause {\bfseries 11:00--11:50 BBB}\\
+ Using graphics with \LaTeXe. EPS, BMP and JPEG.
+ \item\Pause {\bfseries 14:00--14:50 CCC}\\
+ Using Plain \TeX\ Commands---Why I use them.
+ \item\Pause {\bfseries 15:00--15:50 DDD}\\
+ Why XML---What is it?
+ \item\Pause {\bfseries 16:10--17:00 EEE}\\
+ \LaTeXe\ on Internet.
+\end{itemize}
+
+\newpage
+\begin{center}
+2000/02/22(Tue)
+\end{center}
+\font\logo=logo10 at 17.28pt
+\begin{itemize}
+ \item {\bfseries 9:30--10:20 FFF}\\
+ From {\logo METAFONT} To {\logo METAPOST}.
+ \item\Pause {\bfseries 10:40--12:10 GGG(Invited Lecturer)}\\
+ Virtual Fonts Technology, Part I.
+ \item\Pause {\bfseries 13:00--13:50 HHH}\\
+ Using {\logo METAFONT}.
+ \item\Pause {\bfseries 14:00--14:50 III}\\
+ Using TrueType Fonts. Times New Roman, Arial and Courier New.
+ \item\Pause {\bfseries 15:00--15:50 HHH}\\
+ How to Prepare Presentation Manuscript on DVIOUT.
+ \item\Pause {\bfseries 16:00--17:30}\\
+ Short Communications.
+\end{itemize}
+
+\newpage
+\begin{center}
+2000/02/23(Wed)
+\end{center}
+
+\begin{itemize}
+ \item {\bfseries 9:30--11:00 GGG}\\
+ Virtual Fonts Technology, Part II.
+ \item\Pause {\bfseries 11:10--12:00 JJJ}\\
+ How to Write New Macro Package.
+ \item\Pause {\bfseries 13:00--13:50 KKK}\\
+ Structure of \LaTeX\ Class Files.
+ \item\Pause {\bfseries 14:00--14:50 LLL}\\
+ New Features of \LaTeXe*.
+ \item\Pause {\bfseries 15:00--16:30 MMM}\\
+ How to Prepare Beautiful Manuscript on \LaTeX.
+ \item\Pause {\bfseries 16:40--17:30 NNN}\\
+ Future \LaTeX.
+\end{itemize}
+
+\end{document}
diff --git a/Master/tlpkg/dviout/SPECIAL/dviout.sty b/Master/tlpkg/dviout/SPECIAL/dviout.sty
new file mode 100644
index 00000000000..cb6aea18fec
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/dviout.sty
@@ -0,0 +1,412 @@
+%
+% This package automatically buries specials for dviout.
+% Copyright(C) by Yoshiki OTOBE.
+% Needs dviout version 3.11(after beta 7) or later.
+% After dviout version 3.11.4, you can use all the features.
+%
+% The following commands have effects only if [each] option is specified.
+% \putdvioutspecials
+% puts \specials specified in this packages will put at the top.
+% This is the default.
+% \noputdvioutspecials
+% will no longer put dviout specials.
+%
+% Definition:(auto dviout special)
+% We call the specials which will be embedded by this macro package
+% "auto dviout special".
+% For example, paper size option is an auto dviout special.
+%
+%
+% You can freely modify this package to add new specials.
+% Please be careful about not to lose generality.
+% Of course you can freely re-distribute this file.
+%
+% 2000/03/03
+% add \SetOption and \SetLocalOption commands to set dviout up.
+% e.g. \SetOption{ftt}{.\ttfonts.map}
+% \SetOption{TEXPK}{q:\\^s.^dpk}
+% *** supported from version 1.4.
+%
+% 2000/09/05:
+% * keep up with dviout supporting dvips' papersize special.
+% ** \usepackage[dvips]{dviout} :: use \special{papersize=...}
+% ** \usepackage{dviout} :: use \special{dviout -y=A4P} and so on.
+% ** dviout also supports \special{papersize=A4L} etc., it is, however
+% NOT supported from this macro package.
+% * supports dviout's initializing special.
+% After dviout 3.11.4, it supports a initializing special.
+% When it finds "\special{dviout ...}" at the top of dvi, it is ensured
+% that the special is run even if you start dviout from any page.
+% ** \usepackage[each]{dviout} :: put dviout special
+% (currently only papersize special is supported) at each top of
+% the page. This is safe for dviout 3.11
+% ** \usepackage[top]{dviout} :: default of current distribution.
+% put dviout special only at the top of dvi file.
+% ** \usepackage[nopaper]{dviout} :: paper size option will not be
+% inserted.
+% * supports some \special put automatically on each page.
+% ** \SPECIAL{xxx}
+% \special{xxx} will be executed at the each page.
+% * supports message window
+% ** \ShowInfo{title}{sentense}
+% the ``sentense'' will be shown in the message window which
+% will appear at the bottom of dviout's window.
+% you may use \\ to line break (only in the 2nd argument).
+% e.g., \ShowInfo{memo}{Remark (1) is true.\\Now 5 minutes??}
+% ** \Question{title}{question}{yes}{no}
+% You will see a small dialog box on the desktop.
+% The ``title'' is shown on the title bar,
+% the ``question'' is shown on the main body,
+% and [YES] [NO] button will appear.
+% You may use ``\\'' for line-breaking in the 2nd argument.
+% When a document reader select [Yes],
+% \special{dviout ``yes''} will be executed.
+% Otherwise, \special{dviout ``no''} will be executed.
+% e.g., \Question{direction}{Landscape?}{-y=A4L fn}{-y=A4P fn}
+% ** ``title'' may be empty.
+% In case \ShowInfo, the default is [Information from DVI file].
+% When \question-ing, it is [Select [Y] or [N]]
+% * add utility macros
+% ** \def\SetTEXROOT{\SetOption{TEXROOT}}
+% ** \def\SetTEXPK{\SetOption{TEXPK}}
+% ** \def\SetMapFile{\SetOption{ftt}}
+% ** e.g.,
+% \SetTEXROOT{^F\^s.tfm;^x\\^s.^dpk}
+% * supports local settings.
+% ** \SetLocalOption{parameter}{settings}
+% is now supported.
+% This shall be used in a group and you can use only once in a
+% group (nesting shall not be allowed, since dviout keep only one
+% parameter. When you exit from the group, the parameter is
+% automatically restored.
+%
+% 2000/09/09
+% * fix a bug in \SetOption
+% ** \SetOption only put \special{dviout ...} at the top of the dvi file,
+% which will no longer read if one opens it by 2nd or after page.
+% Now changed to \special{dviout `initialize ...}
+% * supports adding a path to an optional setting
+% ** \AppendOption is provided.
+% Assume that current TEXPK=\\^s.^dpk.
+% \AppendOption{TEXPK}{^F\^s.pk;} -> TEXPK=^F\^s.pk;\\^s.^dpk
+% \AppendOption{TEXPK}{;^F\^s.pk} -> TEXPK=\\^s.^dpk;^F\^s.pk
+% Notice that the position of the semi-colon is important.
+% If there is no semi-colon at the top or bottom of the argument,
+% this package never reports a warning or an error, which will only
+% be ignored by dviout.
+% It is only allowed to TEXPK, TEXFONTS, TEXKNJ and gdat.
+% \AppendTEXPK is identical to \AppendOption{TEXPK}.
+%
+% 2001/05/23
+% * append options a4j, a5j, etc.
+% * default paper size option will be embeded in dvips style
+% (this has dviout to select "User Defined")
+% nodvips option makes dviout's style.
+% * remove "beta" logo.
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{dviout}[2001/05/23 v1.4]
+\newif\if@put@dviout@eachpage \@put@dviout@eachpagefalse
+\newif\if@dvips@specials \@dvips@specialsfalse
+\newif\if@put@paper \@put@papertrue
+\DeclareOption{each}{\@put@dviout@eachpagetrue}
+\DeclareOption{top}{\@put@dviout@eachpagefalse}
+\DeclareOption{dvips}{\@dvips@specialstrue}
+\DeclareOption{nodvips}{\@dvips@specialsfalse}
+\DeclareOption{nopaper}{\@put@paperfalse}
+
+\newif\if@emode \@emodefalse
+\ifx\c@@paper\@undefined
+ \newcounter{@paper}
+ \expandafter\expandafter\expandafter\newif\expandafter\csname if@landscape\endcsname \@landscapefalse
+ \@emodetrue
+\fi
+\newif\if@putspecial\@putspecialtrue
+\DeclareOption{a4paper}{\setcounter{@paper}{1}}
+\DeclareOption{a5paper}{\setcounter{@paper}{2}}
+\DeclareOption{b4paper}{\setcounter{@paper}{3}}
+\DeclareOption{b5paper}{\setcounter{@paper}{4}}
+\DeclareOption{a4j}{\setcounter{@paper}{1}}
+\DeclareOption{a5j}{\setcounter{@paper}{2}}
+\DeclareOption{b4j}{\setcounter{@paper}{3}}
+\DeclareOption{b5j}{\setcounter{@paper}{4}}
+\DeclareOption{a4p}{\setcounter{@paper}{1}}
+\DeclareOption{a5p}{\setcounter{@paper}{2}}
+\DeclareOption{b4p}{\setcounter{@paper}{3}}
+\DeclareOption{b5p}{\setcounter{@paper}{4}}
+\DeclareOption{letterpaper}{\setcounter{@paper}{5}}
+\DeclareOption{legalpaper}{\setcounter{@paper}{6}}
+\DeclareOption{executivepaper}{\setcounter{@paper}{7}}
+\DeclareOption{landscape}{\@landscapetrue}
+\DeclareOption{draft}{\@putspecialfalse}
+\DeclareOption{final}{\@putspecialtrue}
+%
+\if@emode
+ \ExecuteOptions{top,dvips,letterpaper}
+\else
+ \ExecuteOptions{top,dvips,a4paper}
+\fi
+\ProcessOptions\relax
+
+\if@put@dviout@eachpage
+ \RequirePackage{ophook}
+ \let\@put@special\AtOutput
+\else
+ \let\@put@special\AtBeginDvi
+\fi
+%
+%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Paper Size special. Put always.
+%% Put them even if draft option is specified.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\if@dvips@specials %% use \special{papersize=...,...}
+ \ifcase\c@@paper
+ \or% 1:A4
+ \if@landscape
+ \@put@special{\special{papersize=297mm,210mm}}
+ \else
+ \@put@special{\special{papersize=210mm,297mm}}
+ \fi
+ \or% 2:A5
+ \if@landscape
+ \@put@special{\special{papersize=210mm,149mm}}
+ \else
+ \@put@special{\special{papersize=149mm,210mm}}
+ \fi
+ \or% 3:B4
+ \if@landscape
+ \if@emode
+ \@put@special{\special{papersize=353mm,250mm}}
+ \else
+ \@put@special{\special{papersize=364mm,257mm}}
+ \fi
+ \else
+ \if@emode
+ \@put@special{\special{papersize=250mm,353mm}}
+ \else
+ \@put@special{\special{papersize=257mm,364mm}}
+ \fi
+ \fi
+ \or% 4:B5
+ \if@landscape
+ \if@emode
+ \@put@special{\special{papersize=250mm,176mm}}
+ \else
+ \@put@special{\special{papersize=257mm,182mm}}
+ \fi
+ \else
+ \if@emode
+ \@put@special{\special{papersize=176mm,250mm}}
+ \else
+ \@put@special{\special{papersize=182mm,257mm}}
+ \fi
+ \fi
+ \or% 5:Letter
+ \if@landscape
+ \@put@special{\special{papersize=11in,8.5in}}
+ \else
+ \@put@special{\special{papersize=8.5in,11in}}
+ \fi
+ \or% 6:Legal
+ \if@landscape
+ \@put@special{\special{papersize=14in,8.5in}}
+ \else
+ \@put@special{\special{papersize=8.5in,14in}}
+ \fi
+ \or% 7:Executive
+ \if@landscape
+ \@put@special{\special{papersize=10.5in,7.25in}}
+ \else
+ \@put@special{\special{papersize=7.25in,10.5in}}
+ \fi
+ \else% other size
+ \fi
+\else %% use \special{dviout -y=...}
+ \ifcase\c@@paper
+ \or% 1:A4
+ \if@landscape
+ \@put@special{\special{dviout -y=A4L}}
+ \else
+ \@put@special{\special{dviout -y=A4P}}
+ \fi
+ \or% 2:A5
+ \if@landscape
+ \@put@special{\special{dviout -y=A5L}}
+ \else
+ \@put@special{\special{dviout -y=A5P}}
+ \fi
+ \or% 3:B4
+ \if@landscape
+ \if@emode
+ \@put@special{\special{dviout -y=E4L}}
+ \else
+ \@put@special{\special{dviout -y=B4L}}
+ \fi
+ \else
+ \if@emode
+ \@put@special{\special{dviout -y=E4P}}
+ \else
+ \@put@special{\special{dviout -y=B4P}}
+ \fi
+ \fi
+ \or% 4:B5
+ \if@landscape
+ \if@emode
+ \@put@special{\special{dviout -y=E5L}}
+ \else
+ \@put@special{\special{dviout -y=B5L}}
+ \fi
+ \else
+ \if@emode
+ \@put@special{\special{dviout -y=E5P}}
+ \else
+ \@put@special{\special{dviout -y=B5P}}
+ \fi
+ \fi
+ \or% 5:Letter
+ \if@landscape
+ \@put@special{\special{dviout -y=LetterL}}
+ \else
+ \@put@special{\special{dviout -y=LetterP}}
+ \fi
+ \or% 6:Legal
+ \if@landscape
+ \@put@special{\special{dviout -y=LegalL}}
+ \else
+ \@put@special{\special{dviout -y=LegalP}}
+ \fi
+ \or% 7:Executive
+ \if@landscape
+ \@put@special{\special{dviout -y=ExecutiveL}}
+ \else
+ \@put@special{\special{dviout -y=ExecutiveP}}
+ \fi
+ \else% other size
+ \fi
+\fi
+
+\if@put@dviout@eachpage
+ \let\putdvioutspecials\h@@koutput
+ \let\noputdvioutspecials\unh@@koutput
+ \putdvioutspecials
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Auto settings for dviout
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcounter{@dviout@option}
+\begingroup
+ \catcode`\^=12
+ \catcode`|=0
+ \catcode`\\=12
+ |gdef|@set@option#1{%
+ |expandafter|xdef|csname @dviout@option|the|c@@dviout@option|endcsname{%
+ |special{|csname @dviout@option|the|c@@dviout@option|endcsname#1}%
+ }%
+ |begingroup
+ |aftergroup|endgroup
+ |if@local@option
+ |csname @dviout@option|the|c@@dviout@option|endcsname
+ |else
+ |expandafter|AtBeginDvi %% 2000/09/05
+ |csname @dviout@option|the|c@@dviout@option|endcsname
+% |h@@koutput %% remove 2000/09/05
+ |fi
+ |endgroup
+ |global|advance|c@@dviout@option1%
+ }%
+|endgroup
+
+\def\SetOption#1{% put an Option setting on each page after the command.
+ \expandafter\xdef\csname @dviout@option\the\c@@dviout@option\endcsname{%
+ dviout `initialize -#1=%
+ }%
+ \@local@optionfalse
+ \begingroup
+ \catcode`|=0
+ \catcode`\\=12
+ \@set@option% Why \set@option? Why |@set@option fails?
+ %% maybe... \@set@option is read by TeX when \def is read.
+ %% At that time, TeX doesn't evaluate the commands.
+ %% He only classifies, i.e., \catcode... is not interpreted,
+ %% but he know \@set@option is a control sequence.
+ %% Is this true? 2000/09/05
+}
+\@onlypreamble\SetOption
+
+\def\AppendOption#1{% put an Option setting on each page after the command.
+ \expandafter\xdef\csname @dviout@option\the\c@@dviout@option\endcsname{%
+ dviout `initialize +#1=%
+ }%
+ \@local@optionfalse
+ \begingroup
+ \catcode`|=0
+ \catcode`\\=12
+ \@set@option
+}
+\@onlypreamble\SetOption
+
+\newif\if@local@option \@local@optionfalse
+\def\SetLocalOption#1{% put an Option (only) there.
+ \if@local@option
+ \PackageError{dviout}{You can use \string\SetLocalOption{}
+ only once in a group!}{Give up using it.}%
+ \fi
+ \@local@optiontrue
+ \special{dviout `keep #1}%
+ \expandafter\xdef\csname @dviout@option\the\c@@dviout@option\endcsname{%
+ dviout -#1=%
+ }%
+ \aftergroup\@restore@param
+ \aftergroup\@local@optionfalse
+ \begingroup
+ \catcode`|=0
+ \catcode`\\=12
+ \@set@option
+}
+
+\def\@restore@param{\special{dviout `restore}}
+
+\def\SetTEXROOT{\SetOption{TEXROOT}}
+\def\SetTEXPK{\SetOption{TEXPK}}
+\def\AppendTEXPK{\AppendOption{TEXPK}}
+\def\SetMapFile{\SetOption{ftt}}
+\@onlypreamble\SetTEXROOT
+\@onlypreamble\SetTEXPK
+\@onlypreamble\AppendTEXPK
+\@onlypreamble\SetMapFile
+
+
+\def\SPECIAL#1{%
+ \expandafter\xdef\csname @dviout@option\the\c@@dviout@option\endcsname{%
+ \special{dviout `initialize page `sp #1}%
+ }%
+ \expandafter\AtBeginDvi %% 2000/09/05
+ \csname @dviout@option\the\c@@dviout@option\endcsname
+ \global\advance\c@@dviout@option1%
+}
+\@onlypreamble\SPECIAL
+
+\def\ShowInfo#1#2{%
+ \begingroup
+ \def\\{`'}%
+ \edef\@null@word{}%
+ \edef\@check@word{#1}%
+ \ifx\@check@word\@null@word\def\@check@word{Information from DVI file}\fi
+ \special{dviout `message `'\@check@word`'#2'`}%
+ \endgroup
+}
+
+\def\Question#1#2#3#4{%
+ \begingroup
+ \def\\{`'}%
+ \edef\@null@word{}%
+ \edef\@check@word{#1}%
+ \ifx\@check@word\@null@word\def\@check@word{Select [Y] or [N]}\fi
+ \special{dviout `ask `'\@check@word`'#2'` `yes #3 `no #4}%
+ \endgroup
+}
+
+\endinput
diff --git a/Master/tlpkg/dviout/SPECIAL/ophook.sty b/Master/tlpkg/dviout/SPECIAL/ophook.sty
new file mode 100644
index 00000000000..83338f207c5
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/ophook.sty
@@ -0,0 +1,158 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ophook}[2000/03/03 v1.1]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% INTERFACE MACROS %%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \@outputpageh@@kA
+% called before letting \protect \noexpand.
+% remark that \protect has tree states, \noexpand\protect\noexpand,
+% \relax and \string except \@outputpage.
+% after \let-ting, let ^^M and " "(space) space(\@resetactivechars),
+% and restore paragraph parameters(\@parboxrestore),
+% and starts \shipout
+% \@outputpageh@@kB
+% called just before putting box in dvi file,
+% but after \vskip-ing \topmargin and \moveright-ing the left margin.
+% \@outputpageh@@kC
+% called just before putting page components
+% (header, \headsep, \@outputbox, \footskip, footer).
+% it is the top of the page box.
+% \@outputpageh@@kD
+% called just before finishing putting page components in the box.
+% (bottom of the page box)
+% \@outputpageh@@kE
+% called just after creating page box but still in the dvi-file.
+% (just before exiting \shipout routine.)
+% \@outputpageh@@kF
+% called just after putting out dvi-file.
+% also just before stepping "page" counter and letting \firstmark \botmark.
+% \@outputpageh@@kG
+% called just before finishing \@outputpage routine.
+%
+\ifx\@outputpageh@@kA\@undefined
+ \let\@outputpageh@@kA\empty
+\fi
+\ifx\@outputpageh@@kB\@undefined
+ \let\@outputpageh@@kB\empty
+\fi
+\ifx\@outputpageh@@kC\@undefined
+ \let\@outputpageh@@kC\empty
+\fi
+\ifx\@outputpageh@@kD\@undefined
+ \let\@outputpageh@@kD\empty
+\fi
+\ifx\@outputpageh@@kE\@undefined
+ \let\@outputpageh@@kE\empty
+\fi
+\ifx\@outputpageh@@kF\@undefined
+ \let\@outputpageh@@kF\empty
+\fi
+\ifx\@outputpageh@@kG\@undefined
+ \let\@outputpageh@@kG\empty
+\fi
+\def\AtOutput{\g@addto@macro\@outputpageh@@kC}
+\@onlypreamble\AtOutput
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Use \AtOutput to add a special at the top of the each page.
+% You can use it to put any command.
+% However, like the following, use \special to add a dviout special.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% THE TRICK CODE. %%%
+%%% DON'T MODIFY %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newtoks\tokstemp
+\newtoks\toksone
+\newtoks\tokstwo
+\newtoks\toksthree
+\newtoks\toksfour
+\newtoks\toksfive
+\newbox\tempb@x
+\newdimen\temp@ht
+\newdimen\temp@wd
+\newif\if@outputpage@hooked \@outputpage@hookedfalse
+\newif\if@reh@@king \@reh@@kingfalse % necessary?
+\let\saved@@outputpage\@outputpage
+\def\unh@@koutput{%
+ \let\@outputpage\saved@@outputpage
+}
+
+\def\h@@koutput{%
+ \if@outputpage@hooked\if@reh@@king\else
+ \reh@@koutput\fi
+ \else
+ \begingroup
+ \tokstemp=\expandafter{\@outputpage\@noticeend}
+ \long\def\parse@outputpage##1\vbox##2##3\@noticeend{%
+ \def\part@@one{##1}%
+ \def\part@@two{##2}%
+ \def\part@@three{##3}%
+ }%
+ \expandafter\parse@outputpage\the\tokstemp
+ \let\part@one=\part@@one
+ \let\part@five=\part@@three
+ \tokstemp=\expandafter{\part@@two\@noticeend}%
+ \expandafter\parse@outputpage\the\tokstemp
+ \let\part@two=\part@@one
+ \let\part@three=\part@@two
+ \let\part@four=\part@@three
+ \toksone=\expandafter{\part@one}%
+ \tokstwo=\expandafter{\part@two}%
+ \toksthree=\expandafter{\part@three}%
+ \toksfour=\expandafter{\part@four}%
+ \toksfive=\expandafter{\part@five}%
+ \let\@outputpageh@@kA\relax
+ \let\@outputpageh@@kB\relax
+ \let\@outputpageh@@kC\relax
+ \let\@outputpageh@@kD\relax
+ \let\@outputpageh@@kE\relax
+ \let\@outputpageh@@kF\relax
+ \let\@outputpageh@@kG\relax
+ \xdef\@outputpage{%
+ \@outputpageh@@kA
+ \the\toksone
+ \noexpand\vbox{%
+ \the\tokstwo
+ \@outputpageh@@kB
+ \noexpand\vbox{%
+ \@outputpageh@@kC
+ \the\toksthree
+ \@outputpageh@@kD
+ }%
+ \@outputpageh@@kE
+ \the\toksfour
+ }%
+ \@outputpageh@@kF
+ \the\toksfive
+ \@outputpageh@@kG
+ }%
+ \endgroup
+ \@outputpage@hookedtrue
+ \fi
+}
+
+\def\reh@@koutput{%
+ \unh@@koutput
+ \begingroup
+ \let\@outputpageh@@kA\relax
+ \let\@outputpageh@@kB\relax
+ \let\@outputpageh@@kC\relax
+ \let\@outputpageh@@kD\relax
+ \let\@outputpageh@@kE\relax
+ \let\@outputpageh@@kF\relax
+ \let\@outputpageh@@kG\relax
+ \@reh@@kingtrue
+ \h@@koutput
+ \endgroup
+ \@reh@@kingfalse
+}
+
+% Please tell me (otobe@ms.u-tokyo.ac.jp) a macro package or a macro
+% command that doesn't work with this package if you find.
+\ifx\fb@outputpage\@undefined\else
+ \@latex@warning@no@line{You cannot use this package with fancy page}%
+\fi
diff --git a/Master/tlpkg/dviout/SPECIAL/presen.sty b/Master/tlpkg/dviout/SPECIAL/presen.sty
new file mode 100644
index 00000000000..7a26e569857
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/presen.sty
@@ -0,0 +1,238 @@
+% dviout version 3.11 or later has "presentation" mode.
+% If you want to present something by a computer without
+% OHP sheet, lots of presenter used Microsoft PowerPoint.
+% It is certainly useful, but week to use mathematical formulas.
+% Now you can use dviout instead of PowerPoint.
+% This macro package provides interface macros to create
+% a dvi file which would be used in the presentation.
+% Copyright(C) 2000 by Yoshiki OTOBE.
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{presen}[2000/02/25 v1.0]
+\RequirePackage{ophook}
+
+\newif\if@cover \@coverfalse
+\newif\if@each \@eachfalse
+\newcounter{@bkmode}\setcounter{@bkmode}{0}
+\newcounter{@scmode}\setcounter{@scmode}{0}
+\newcounter{@coverpos}\setcounter{@coverpos}{0}
+\newif\if@autoprocess \@autoprocessfalse
+\newcounter{@pausenum}\setcounter{@pausenum}{0}
+\newcounter{@pausesec}\setcounter{@pausesec}{0}
+\newcounter{@viewmode}\setcounter{@viewmode}{0}
+\newif\if@keepmargin \@keepmarginfalse
+\DeclareOption{cover}{\@covertrue}
+\DeclareOption{uncover}{\@coverfalse}
+\DeclareOption{whiteback}{\setcounter{@bkmode}{1}}
+\DeclareOption{blackback}{\setcounter{@bkmode}{2}}
+\DeclareOption{white}{\setcounter{@scmode}{1}}
+\DeclareOption{black}{\setcounter{@scmode}{2}}
+\DeclareOption{bottom}{\setcounter{@coverpos}{1}}
+\DeclareOption{left}{\setcounter{@coverpos}{2}}
+\DeclareOption{right}{\setcounter{@coverpos}{3}}
+\DeclareOption{bottomleft}{\setcounter{@coverpos}{4}}
+\DeclareOption{bottomright}{\setcounter{@coverpos}{5}}
+\DeclareOption{each}{\@eachtrue} %% DONT USE THIS OPTION. FOR FUTURE.
+\DeclareOption{auto}{\@autoprocesstrue}
+\DeclareOption{noauto}{\@autoprocessfalse}
+\DeclareOption{fit}{\setcounter{@viewmode}{1}}
+\DeclareOption{full}{\setcounter{@viewmode}{2}}
+\DeclareOption{keepmargin}{\@keepmargintrue}
+\DeclareOption{adjustmargin}{\@keepmarginfalse}
+\ExecuteOptions{uncover,black,bottom,adjustmargin}
+\ProcessOptions\relax
+
+\if@keepmargin\else
+ \message{Package presen : Paper size will be ignored.^^J%
+ use `keepmargin' option if you want to keep the layout.^^J}%
+ \topmargin-.5in
+ \headheight0pt
+ \headsep0pt
+ \advance\textwidth2\oddsidemargin
+ \advance\textwidth1in
+ \oddsidemargin-.5in
+ \evensidemargin\oddsidemargin
+ \textheight\linewidth
+ \paperheight\textheight
+ \advance\textheight-.5in
+\fi
+
+
+% If you fing "each" option is implimented, please forget it.
+% "each" option requires more complicated implimentation.
+\if@autoprocess
+ \special{dviout !A}
+\fi
+
+\if@each
+ \let\put@presentation\AtOutput
+\else
+ \let\put@presentation\AtBeginDocument
+\fi
+
+\if@cover\UseCoverSheet\fi
+
+\ifcase\c@@bkmode
+ \special{dviout N0}%
+ \or
+ \special{dviout N3}%
+ \or
+ \special{dviout N4}%
+\fi
+
+\ifcase\c@@scmode
+ \special{dviout N0}%
+ \or
+ \special{dviout N1}%
+ \or
+ \special{dviout N2}%
+\fi
+
+\ifcase\c@@coverpos
+ \or
+ \special{dviout N5}%
+ \or
+ \special{dviout N7}%
+ \or
+ \special{dviout N6}%
+ \or
+ \special{dviout N9}%
+ \or
+ \special{dviout N8}%
+\fi
+
+\ifnum\c@@coverpos>0
+ \if@cover\else
+ \special{dviout NP}%% ??
+ \@covertrue
+ \fi
+\fi
+
+\if@autoprocess
+ \ifcase\c@@viewmode
+ \special{dviout !p;!b}% go to presentation mode
+ \or
+ \special{dviout !p;!bdf}%
+ \or
+ \special{dviout !p;!bdl}%
+ \fi
+\fi
+
+% cover sheet will be used.
+% If you enter "presentation mode" without \Pause,
+% hitting [space] bar will...
+% 1. show the page with covering.
+% 2. show the page with all contents are shown.
+% 3. go to next page...
+\def\UseCoverSheet{%
+ \if@cover\else\special{dviout NO}\fi
+ \@covertrue
+}
+
+\def\UnuseCoverSheet{%
+ \if@cover\special{dviout NF}\fi
+ \@coverfalse
+}
+
+% cover sheet will be used.
+% but the page will be shown as default if there's no \Pause.
+\def\PrepareCoverSheet{%
+ \if@cover\else\special{dviout NP}\fi
+ \@covertrue
+}
+
+% we set cover sheet not to be used temporary.
+\def\SuspendCoverSheet{%
+ \special{dviout !S}%
+}
+
+% If cover sheet is not currently used (e.g., after jumping another file
+% or another page), come back to memoried page (e.g., the page the cover
+% sheet was suspended) and change the mode to use cover sheet.
+\def\ReturnToCoverSheet{%
+ \special{dviout !C}%
+}
+
+\def\SetTimer#1{\setcounter{@pausesec}{#1}}
+\def\Pause{%
+ \ifnum\count0=1%
+ \@latex@warning{The first page may contain a pause special}%
+ \fi
+ \if@cover\UseCoverSheet\fi
+ \special{pause}%
+ \addtocounter{@pausenum}{1}%
+}
+\def\AutoProcess{%
+ \if@autoprocess\else\special{dviout !p}\fi
+ \@autoprocesstrue
+}
+\def\NoAutoProcess{\@autoprocessfalse}
+\g@addto@macro\@outputpageh@@kE{\@embedpause}
+\AtEndDocument{%
+ \g@addto@macro\@outputpageh@@kE{\@embedreturntop}%
+}
+
+\def\@embedtimer{%
+ \ifnum\c@@pausesec>0%
+ \special{dviout `timer \the\c@@pausesec\space je}%
+ \fi
+}
+
+\def\GoTop{%
+ \special{dviout `timer 0}%
+ \special{dviout jt}%
+}
+
+\def\GoNext{%
+ \special{dviout `timer 0}%
+ \special{dviout je}%
+}
+
+\def\Wait#1{%
+ \special{dviout `timer #1}%
+}
+
+\def\StartPresentation{%
+ \ifcase\c@@viewmode
+ \special{dviout !p}% go to presentation mode
+ \or
+ \special{dviout !p;df}%
+ \or
+ \special{dviout !p;dl}%
+ \fi
+}
+
+\def\FinishPresentation{%
+ \special{dviout !n}%
+}
+
+\let\@embedpause\relax
+\h@@koutput
+
+\def\define@embed@macro{
+ \gdef\@embedreturntop{%
+ \if@autoprocess
+ \special{dviout `timer 0}%
+ \special{dviout jt}%
+ \fi
+ }%
+ \gdef\@embedpause{%
+ \ifnum\c@@pausenum=0%
+ \if@autoprocess
+ \special{pause}%
+ \special{dviout `timer 0 je}%
+ \fi
+ \fi
+ \loop\ifnum\c@@pausenum>0%
+ \@embedtimer
+ \global\advance\c@@pausenum by -1%
+ \repeat
+ \if@autoprocess
+ \special{dviout `timer \the\c@@pausesec\space je}%
+ \fi
+ }%
+}
+
+\define@embed@macro
+\endinput
+
diff --git a/Master/tlpkg/dviout/SPECIAL/presen.txt b/Master/tlpkg/dviout/SPECIAL/presen.txt
new file mode 100644
index 00000000000..1d9c65519cf
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/presen.txt
@@ -0,0 +1,77 @@
+1. usage
+ \usepackage[options]{presen}
+ (ophook.sty is required)
+
+2. options
+ cover: use cover sheet
+ uncover: not use coversheet (default)
+ whiteback: same as menu
+ black back: same as menu
+ white: same as menu
+ black: same as menu (default)
+ bottom: same as menu (default)
+ left: same as menu
+ right: same as menu
+ bottomleft: same as menu
+ bottomright: same as menu
+ auto: auto processing mode
+ fit: use "fit" mode when \StartPresentation
+ full: use "full" mode when \StartPresentation
+ keepmargin: keep layout set by class file
+ adjustmargin: modify layout for presentation (default)
+
+ autoprocess mode will show all pages (with "paus"-ing)
+ and re-show from the top after reaching the bottom page.
+
+3. Commands
+ maybe you have only to master \SetTimer, \Pause and \Wait.
+
+ \SetTimer
+ set the timer with unit is milli-seconds.
+ e.g., \SetTimer{2000} means internal timer is set to 2sec.
+ Only if you use \Pause with strictly positive timer interval,
+ \special{dviout `timer ...} will be embedded in every page.
+ The default value is 0.
+ \Pause
+ Embed \special{pause}.
+ More, \special{dviout `timer ...}, \special{dviout je}
+ and \special{dviout jt} will also be embedded if you
+ specify positive timer interval by \SetTimer, or used
+ `auto' option.
+ Most appropriate specials will be automatically embedded
+ by this macro package.
+ \Wait
+ wait milli-seconds specified as the argument.
+ e.g., \Wait{10000} will wait 10sec.
+ \GoNext
+ go to next page immediately.
+ \GoTop
+ go to the top page immediately.
+ \StartPresentation
+ move to presentation mode.
+ \FinishPresentation
+ return to standard mode.
+
+ \UseCoverSheet
+ = \special{dviout NO}
+ \UnuseCoverSheet
+ = \special{dviout NF}
+ \PrepareCoverSheet
+ = \special{dviout NP}
+ \SuspendCoverSheet
+ = \special{dviout !S}
+ \ReturnCoverSheet
+ = \special{dviout !C}
+
+4. TRY
+Try to show demo.dvi. After that,
+1. Comment out
+ \usepackage[auto,full]{presen} (l.2)
+ \SetTimer{2000} (l.8)
+2. Comment in
+ \usepaclage[full]{presen} (l.3)
+ \StartPresentation (l.9)
+3. Compile it
+
+by Yoshiki OTOBE, The University of Tokyo,
+otobe@ms.u-tokyo.ac.jp
diff --git a/Master/tlpkg/dviout/SPECIAL/src.mac b/Master/tlpkg/dviout/SPECIAL/src.mac
new file mode 100644
index 00000000000..854a4b718c6
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/src.mac
@@ -0,0 +1,3 @@
+ddeinitiate "dviout", "dviout";
+ddeexecute "[PageOpen(# "+str(lineno)+" *)]";
+ddeexecute "[FileOpen("+leftstr(filename,strlen(filename)-3)+"dvi)]";
diff --git a/Master/tlpkg/dviout/SPECIAL/srcspecial.mac b/Master/tlpkg/dviout/SPECIAL/srcspecial.mac
new file mode 100644
index 00000000000..a4ab37cecca
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/srcspecial.mac
@@ -0,0 +1,15 @@
+ddeinitiate "dviout", "dviout";
+if(!result) {
+ run "dviout ";
+ ddeinitiate "dviout", "dviout";
+}else
+ $basefile = dderequest("dvifile");
+if(strlen($basefile) < 1)
+ $basefile = leftstr(filename,strlen(filename)-3)+"dvi";
+if(selecting){$SrcWord = "/" + gettext(seltopx,seltopy,selendx,selendy);}
+else $SrcWord="";
+ddeexecute "[PageOpen(# "+str(lineno)+$SrcWord+" '"+filename+"')]";
+ddeexecute "[WinNormal]";
+ddeexecute "[FileOpen("+$basefile+")]";
+ddeterminate;
+endmacro;
diff --git a/Master/tlpkg/dviout/SPECIAL/srctex.cfg b/Master/tlpkg/dviout/SPECIAL/srctex.cfg
new file mode 100644
index 00000000000..2bebd3e0308
--- /dev/null
+++ b/Master/tlpkg/dviout/SPECIAL/srctex.cfg
@@ -0,0 +1,110 @@
+% default configulation file of srctex
+%
+%<location> <type> <key>
+%
+% <location>
+% H: <key> is searched at the head of a line
+% E: same as H: but the following character should be non-alphabet
+% T: <key> is searched at the tail of a line
+%
+% <type>
+% ignore: ignore the line
+% begin: begin inserting source specials
+% end: end inserting source specials
+% skip: skip inserting source specials
+% _skip: terminate to skip inserting source specials
+% (should be a pair with the preceeding skip:)
+% set: insert a source special in the top of
+% the current (resp. next) line in case of H: (resp. T:)
+
+H skip %skip{src}
+H _skip %resume{src}
+H set %put{src}
+
+H ignore %
+E begin \document
+ET end \enddocument
+
+E skip \verbatim
+ET _skip \endverbatim
+E skip \comment
+ET _skip \endcomment
+
+H begin \begin{document}
+H end \end{document}
+H skip \begin{verbatim}
+HT _skip \end{verbatim}
+H skip \begin{verbatim*}
+HT _skip \end{verbatim*}
+H skip \begin{comment}
+HT _skip \end{comment}
+
+HT set $$
+H set \[
+T set \]
+
+H set \begin{equation}
+T set \end{equation}
+H set \begin{equation*}
+T set \end{equation*}
+H set \begin{align}
+T set \end{align}
+H set \begin{align*}
+T set \end{align*
+H set \begin{multline}
+T set \end{multline}
+H set \begin{multline*}
+T set \end{multline*}
+H set \begin{gather}
+T set \end{gather}
+H set \begin{gather*}
+T set \end{gather*}
+H set \begin{aligned}
+T set \end{aligned}
+H set \begin{alignat}
+T set \end{alignat}
+H set \begin{alignat*}
+T set \end{alignat*}
+H set \begin{xalignat}
+T set \end{xalignat}
+H set \begin{xxalignat}
+T set \end{xxalignat}
+H set \begin{verse}
+T set \end{verse}
+H set \begin{cases}
+T set \end{cases}
+H set \begin{pf}
+T set \end{pf}
+
+H set \align
+T set \endalign
+%H set \alignat
+T set \endalignat
+H set \xalignat
+T set \endxalignat
+H set \xxalignat
+T set \endxxalignat
+H set \gather
+T set \endgather
+H set \multline
+T set \endmultline
+%H set \aligned
+T set \endaligned
+H set \topaligned
+T set \endtopaligned
+H set \botaligned
+T set \endbotaligned
+H set \cases
+T set \endcases
+
+E set \demo
+E set \item
+E set \ref
+E set \bibitem
+
+T set \break
+T set \\
+T set \par
+T set \newpage
+T set \clearpage
+T set \cleardoublepage