diff options
author | Siep Kroonenberg <siepo@cybercomm.nl> | 2008-09-26 09:17:26 +0000 |
---|---|---|
committer | Siep Kroonenberg <siepo@cybercomm.nl> | 2008-09-26 09:17:26 +0000 |
commit | 69cdb80977fc59e47c24a680fc0c61a3eac0c097 (patch) | |
tree | ca111e9049a1785bf8507161dce88a2233268760 /Master/tlpkg/dviout/SPECIAL/dviout.sty | |
parent | d3a140feea19858912cc2de406e176ae8ce6c392 (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.sty | 412 |
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 |