summaryrefslogtreecommitdiff
path: root/Master/tlpkg/dviout/SPECIAL/dviout.sty
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/dviout.sty
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/dviout.sty')
-rw-r--r--Master/tlpkg/dviout/SPECIAL/dviout.sty412
1 files changed, 412 insertions, 0 deletions
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