summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-12-07 22:46:13 +0000
committerKarl Berry <karl@freefriends.org>2006-12-07 22:46:13 +0000
commit06c5c638859d4cb20fe3201df1fa9ab6f216d4f0 (patch)
tree269cc6d6c475dc30b51ddf45465197d6620b7e1c /Build
parent954a067e3613a39197a4b981f5652c8fc3c25502 (diff)
accumulated fixes from akira
git-svn-id: svn://tug.org/texlive/trunk@2613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/dvipsk/ChangeLog22
-rw-r--r--Build/source/texk/dvipsk/afm2tfm.c2
-rw-r--r--Build/source/texk/dvipsk/dospecial.c32
-rw-r--r--Build/source/texk/dvipsk/dvips.c15
-rw-r--r--Build/source/texk/dvipsk/dvips.h1
-rw-r--r--Build/source/texk/dvipsk/dvips.info4675
-rw-r--r--Build/source/texk/dvipsk/dvips.texi10
-rw-r--r--Build/source/texk/dvipsk/header.c2
-rw-r--r--Build/source/texk/dvipsk/hps.lpro11
-rw-r--r--Build/source/texk/dvipsk/loadfont.c2
-rw-r--r--Build/source/texk/dvipsk/makefont.c2
-rw-r--r--Build/source/texk/dvipsk/output.c70
-rw-r--r--Build/source/texk/dvipsk/resident.c18
-rw-r--r--Build/source/texk/dvipsk/search.c4
14 files changed, 139 insertions, 4727 deletions
diff --git a/Build/source/texk/dvipsk/ChangeLog b/Build/source/texk/dvipsk/ChangeLog
index 0bf4ab1705e..e6f525720d6 100644
--- a/Build/source/texk/dvipsk/ChangeLog
+++ b/Build/source/texk/dvipsk/ChangeLog
@@ -1,3 +1,25 @@
+2006-12-07 Karl Berry <karl@tug.org>
+
+ * Changes made and accumulated by Akira:
+
+(1) security problem
+ -R0 : shell escape and absolute path are allowed
+ -R1 : shell escape is forbidden and absolute path is allowed
+ (default)
+ -R2 : shell escape and absolute path are forbidden
+
+(2) line breaking problem in ps: special (Scott Pakin).
+
+(3) Heiko's change of hps.lpro.
+
+(4) paper size problem:
+ * Is the dimension close enough for a match? We use a quarter inch
+ * as a match; this is 65536*72.27/4 or 1,184,072 scaled points.
+--->
+ * Is the dimension close enough for a match? We use 5bp
+ * as a match; this is 65536*72.27*5/72 or 328909 scaled points.
+and dvips now finds the best match rather than the first match.
+
2006-12-06 Karl Berry <karl@tug.org>
* output.c (copyfile_general): add removingBytes=0, to avoid
diff --git a/Build/source/texk/dvipsk/afm2tfm.c b/Build/source/texk/dvipsk/afm2tfm.c
index c8601f58379..898a95d94d3 100644
--- a/Build/source/texk/dvipsk/afm2tfm.c
+++ b/Build/source/texk/dvipsk/afm2tfm.c
@@ -1489,7 +1489,7 @@ writevpl P1H(void)
void version P1C(FILE *, f)
{
extern KPSEDLL char *kpathsea_version_string;
- fputs ("afm2tfm(k) (dvips(k) 5.95b) 8.1\n", f);
+ fputs ("afm2tfm(k) (dvips(k) 5.96) 8.1\n", f);
fprintf (f, "%s\n", kpathsea_version_string);
fputs ("Copyright (C) 2005 Radical Eye Software.\n\
There is NO warranty. You may redistribute this software\n\
diff --git a/Build/source/texk/dvipsk/dospecial.c b/Build/source/texk/dvipsk/dospecial.c
index 34e0dacdcb1..d59b8235dba 100644
--- a/Build/source/texk/dvipsk/dospecial.c
+++ b/Build/source/texk/dvipsk/dospecial.c
@@ -85,6 +85,16 @@ void specerror P1C(char *, s)
}
}
+static void outputstring P1C(register char *, p)
+{
+ (void)putc('\n', bitfile) ;
+ while(*p) {
+ (void)putc(*p, bitfile) ;
+ p++ ;
+ }
+ (void)putc('\n', bitfile) ;
+}
+
static void trytobreakout P1C(register char *, p)
{
register int i ;
@@ -93,6 +103,16 @@ static void trytobreakout P1C(register char *, p)
i = 0 ;
(void)putc('\n', bitfile) ;
+
+ if(*p == '%') {
+ while(*p) {
+ (void)putc(*p, bitfile) ;
+ p++ ;
+ }
+ (void)putc('\n', bitfile) ;
+ return ;
+ }
+
while (*p) {
if (i > 65 && *p == ' ' && instring == 0) {
(void)putc('\n', bitfile) ;
@@ -584,10 +604,10 @@ case 'p':
if (p[3]==':') {
if (strncmp(p+4, "[begin]", 7) == 0) {
hvpos() ;
- trytobreakout(&p[11]);
+ outputstring(&p[11]) ;
} else if (strncmp(p+4, "[end]", 5) == 0)
- trytobreakout(&p[9]);
- else trytobreakout(&p[4]);
+ outputstring(&p[9]);
+ else outputstring(&p[4]);
} else if (strncmp(p+3, " plotfile ", 10) == 0) {
char *sfp ;
hvpos() ;
@@ -611,7 +631,7 @@ case 'p':
/* End TJD changes */
} else {
hvpos() ;
- trytobreakout(&p[3]);
+ outputstring(&p[3]);
psflush() ;
hvpos() ;
}
@@ -747,8 +767,8 @@ case '"':
hvpos() ;
cmdout("@beginspecial") ;
cmdout("@setspecial") ;
- trytobreakout(p+1) ;
- cmdout("\n@endspecial") ;
+ outputstring(p+1) ;
+ cmdout("@endspecial") ;
return ;
break ;
default:
diff --git a/Build/source/texk/dvipsk/dvips.c b/Build/source/texk/dvipsk/dvips.c
index a112e24f58c..d4714d75ff9 100644
--- a/Build/source/texk/dvipsk/dvips.c
+++ b/Build/source/texk/dvipsk/dvips.c
@@ -64,7 +64,7 @@ Boolean nosmallchars ; /* disable small char optimization for X4045? */
Boolean cropmarks ; /* add cropmarks? */
Boolean abspage = 0 ; /* are page numbers absolute? */
Boolean tryepsf = 0 ; /* should we try to make it espf? */
-Boolean secure = 0 ; /* make safe for suid */
+int secure = 1 ; /* make safe for suid */
int secure_option = 0; /* set by -R */
int collatedcopies = 1 ; /* how many collated copies? */
int sectioncopies = 1 ; /* how many times to repeat each section? */
@@ -607,7 +607,7 @@ main P2C(int, argc, char **, argv)
exit (0);
} else if (strcmp (argv[1], "--version") == 0) {
extern KPSEDLL char *kpathsea_version_string;
- puts ("dvips(k) 5.95b");
+ puts ("dvips(k) 5.96");
puts (kpathsea_version_string);
puts ("Copyright (C) 2005 Radical Eye Software.\n\
There is NO warranty. You may redistribute this software\n\
@@ -745,8 +745,15 @@ case 'k':
cropmarks = (*p != '0') ;
break ;
case 'R':
- secure = (*p != '0') ;
- secure_option = 1 ;
+ if (*p == '0') {
+ secure = 0 ;
+ } else if (*p == '2') {
+ secure = 2 ;
+ } else {
+ secure = 1 ;
+ }
+ if (secure)
+ secure_option = 1 ; /* Never used */
break ;
case 'S':
if (*p == 0 && argv[i+1])
diff --git a/Build/source/texk/dvipsk/dvips.h b/Build/source/texk/dvipsk/dvips.h
index e131c084f87..8c1442465a1 100644
--- a/Build/source/texk/dvipsk/dvips.h
+++ b/Build/source/texk/dvipsk/dvips.h
@@ -11,6 +11,7 @@
/* This file is the header for dvips's global data structures. */
+#define CREATIONDATE
#define BANNER \
"This is dvips(k) 5.96 Copyright 2005 Radical Eye Software"
#define BANNER2 "(www.radicaleye.com)"
diff --git a/Build/source/texk/dvipsk/dvips.info b/Build/source/texk/dvipsk/dvips.info
deleted file mode 100644
index 6f7348095fb..00000000000
--- a/Build/source/texk/dvipsk/dvips.info
+++ /dev/null
@@ -1,4675 +0,0 @@
-This is dvips.info, produced by makeinfo version 4.8 from dvips.texi.
-
- This manual documents Dvips version 5.95b (August 2005), a program
-to translate a DVI file into PostScript.
-
-INFO-DIR-SECTION TeX
-START-INFO-DIR-ENTRY
-* DVI-to-Postscript: (dvips). Translating TeX DVI files to PostScript.
-* afm2tfm: (dvips)Invoking afm2tfm. Making Type 1 fonts available to TeX.
-* dvips: (dvips)Invoking Dvips. DVI-to-PostScript translator.
-END-INFO-DIR-ENTRY
-
-
-File: dvips.info, Node: Top, Next: Why Dvips, Up: (dir)
-
-Dvips
-*****
-
-This manual documents Dvips version 5.95b (August 2005), a program to
-translate a DVI file into PostScript.
-
-* Menu:
-
-* Why Dvips:: Why use Dvips?
-* Installation:: How to compile and install Dvips.
-* Invoking Dvips:: Command-line options, configuration files, etc.
-* Paper size and landscape:: Changing the paper dimensions.
-* Interaction with PostScript:: TeX meets Dvips meets PostScript.
-* PostScript fonts:: Installing and using PostScript fonts.
-* Color:: Using color with Dvips.
-* Index:: General index.
-
-
-File: dvips.info, Node: Why Dvips, Next: Installation, Prev: Top, Up: Top
-
-1 Why use Dvips?
-****************
-
-The Dvips program has a number of features that set it apart from other
-PostScript drivers for TeX. This rather long section describes the
-advantages of using Dvips, and may be skipped if you are just
-interested in learning how to use the program. *Note Installation::,
-for details of compilation and installation.
-
- The Dvips driver generates excellent, standard PostScript, that can
-be included in other documents as figures or printed through a variety
-of spoolers. The generated PostScript requires very little printer
-memory, so very complex documents with a lot of fonts can easily be
-printed even on PostScript printers without much memory, such as the
-original Apple LaserWriter. The PostScript output is also compact,
-requiring less disk space to store and making it feasible as a transfer
-format.
-
- Even those documents that are too complex to print in their entirety
-on a particular printer can be printed, since Dvips will automatically
-split such documents into pieces, reclaiming the printer memory between
-each piece.
-
- The Dvips program supports graphics in a natural way, allowing
-PostScript graphics to be included and automatically scaled and
-positioned in a variety of ways.
-
- Printers with any resolution are supported, even if they have
-different resolutions in the horizontal and vertical directions. High
-resolution output is supported for typesetters, including an option
-that compresses the bitmap fonts so that typesetter virtual memory is
-not exhausted. This option also significantly reduces the size of the
-PostScript file and decoding in the printer is very fast.
-
- Missing fonts can be automatically generated if Metafont exists on
-the system, or fonts can be converted from GF to PK format on demand.
-If a font cannot be generated, a scaled version of the same font at a
-different size can be used instead, although Dvips will complain loudly
-about the poor aesthetics of the resulting output.
-
- Users will appreciate features such as collated copies and support
-for `tpic', `psfig', `emtex', and `METAPOST'; system administrators
-will love the support for multiple printers, each with their own
-configuration file, and the ability to pipe the output directly to a
-program such as `lpr'. Support for MS-DOS, OS/2, and VMS in addition
-to Unix is provided in the standard distribution, and porting to other
-systems is easy.
-
- One of the most important features is the support of virtual fonts,
-which add an entirely new level of flexibility to TeX. Virtual fonts
-are used to give Dvips its excellent PostScript font support, handling
-all the font remapping in a natural, portable, elegant, and extensible
-way. Dvips even comes with its own Afm2tfm program that creates the
-necessary virtual fonts and TeX font metric files automatically from
-the Adobe font metric files.
-
- Source is provided and freely distributable, so adding a
-site-specific feature is possible. Adding such features is made easier
-by the highly modular structure of the program.
-
- There is really no reason to use another driver, and the more people
-use Dvips, the less time will be spent fighting with PostScript and the
-more time will be available to create beautiful documents. So if you
-don't use Dvips on your system, get it today.
-
- Tom Rokicki wrote and maintains the original Dvips program.
-
-
-File: dvips.info, Node: Installation, Next: Invoking Dvips, Prev: Why Dvips, Up: Top
-
-2 Installation
-**************
-
-(A copy of this chapter is in the distribution file `dvipsk/INSTALL'.)
-
-Installing Dvips is mostly the same as installing any Kpathsea-using
-program. Therefore, for the basic steps involved, *note Installation:
-(kpathsea)Installation. (A copy is in the file `kpathsea/INSTALL'.)
-
- For solutions to common installation problems and information on how
-to report a bug, see the file `kpathsea/BUGS' (*note Bugs:
-(kpathsea)Bugs.). For solutions to Dvips-specific problems, *note
-Debug options::. Also see the Dvips home page at
-`http://www.radicaleye.com/dvips'.
-
- Dvips does require some additional installation, detailed in the
-sections below. Also, to configure color devices, *note Color device
-configuration::.
-
-* Menu:
-
-* config.ps installation:: Printer and site Dvips configuration.
-* PostScript font installation:: Many PostScript fonts are freely available.
-* Ghostscript installation:: A free PostScript interpreter.
-* Diagnosing problems:: Some common runtime difficulties.
-
-
-File: dvips.info, Node: config.ps installation, Next: PostScript font installation, Up: Installation
-
-2.1 `config.ps' installation
-============================
-
-Dvips has its own configuration files: a file `config.ps' for sitewide
-defaults, and a file `config.PRINTER' for each printer (output device).
-Since these are site-specific, `make install' does not create them;
-you must create them yourself.
-
- (These Dvips configuration files are independent of the Kpathsea
-onfiguration file `texmf.cnf' (*note Config files: (kpathsea)Config
-files.).
-
- Dvips configuration files contents and searching are described fully
-in *Note Config files::. The simplest way to create a new
-configuration file is to copy and modify the file
-`dvipsk/contrib/config.proto', seasoning with options to your taste
-from *Note Config files::. Here is `config.proto' for your reading
-pleasure:
- % Prototype Dvips configuration file.
-
- % How to print, maybe with lp instead lpr, etc.
- o |lpr
-
- % Default resolution of this device, in dots per inch.
- D 600
-
- % Metafont mode. (This is completely different from the -M command-line
- % option, which controls whether MakeTeXPK is invoked.) Get
- % `ftp://ftp.tug.org/tex/modes.mf' for a list of mode names. This mode
- % and the D number above must agree, or MakeTeXPK will get confused.
- M ljfour
-
- % Memory available. Download the three-line PostScript file:
- % %! Hey, we're PostScript
- % /Times-Roman findfont 30 scalefont setfont 144 432 moveto
- % vmstatus exch sub 40 string cvs show pop showpage
- % to determine this number. (It will be the only thing printed.)
- m 3500000
-
- % Correct printer offset. You can use testpage.tex from the LaTeX
- % distribution to find these numbers. Print testpage.dvi more than once.
- O 0pt,0pt
-
- % Partially download Type 1 fonts by default. Only reason not to do
- % this is if you encounter bugs. (Please report them to
- % <tex-k@mail.tug.org> if you do.)
- j
-
- % Also look for fonts at these resolutions.
- R 300 600
-
- % With a high resolution and a RISC cpu, better to compress the bitmaps.
- Z
-
- % Uncomment these if you have and want to use PostScript versions of the
- % fonts.
- %p +cmfonts.map
- %p +lafonts.map
- %p +cyrfonts.map
- %p +eufonts.map
-
- % You will also want definitions for alternative paper sizes -- A4,
- % legal, and such. Examples in `contrib/papersize.level2' and
- % `contrib/papersize.simple'.
-
-
-File: dvips.info, Node: PostScript font installation, Next: Ghostscript installation, Prev: config.ps installation, Up: Installation
-
-2.2 PostScript font installation
-================================
-
-To use PostScript fonts with TeX and Dvips, you need both metric files
-(`.tfm' and `.vf') and the outlines (`.pfa' or `.pfb'). *Note Font
-concepts::.
-
- To support the basic PostScript font set, the recommended (and
-simplest) approach is to install the files at
-`http://www.ctan.org/tex-archive/fonts/psfonts/lw35nfsx.zip'. This
-archive contains metrics, outlines, and bitmaps (for previewing) for
-the 35 de facto standard fonts donated by URW and the additional
-high-quality freely available PostScript fonts donated by Adobe,
-Bitstream, and URW, including geometrically-created variants such as
-oblique and small caps.
-
- `CTAN:/fonts/psfonts' contains support for many additional fonts for
-which you must buy outlines (Adobe, Bigelow & Holmes, Monotype,
-Softkey, Y&Y). (For CTAN info, *note unixtex.ftp:
-(kpathsea)unixtex.ftp.; a copy is in the top-level file `INSTALL'.)
-
- If you have additional PostScript fonts, you can make them available
-to Dvips by (1) giving them with appropriate filenames; and (2) running
-Afm2tfm (*note Making a font available::) to make TFM and VF metrics for
-TeX and Dvips to use. Also add them to `psfonts.map' if necessary
-(*note psfonts.map::); it contains everything contained in
-`lw35nfsx.zip' and most fonts that come with Unix systems.
-
- Following are locations for vendor-supplied fonts. Please mail
-<tex-k@tug.org> if you find fonts elsewhere on your system.
-
-DEC Ultrix
- /usr/lib/DPS/outline/decwin
-
-DEC Digital Unix
- /usr/lib/X11/fonts/Type1Adobe
-
-HP HP-UX 9, 10
- /usr/lib/X11/fonts/type1.st/typefaces
-
-IBM AIX
- /usr/lpp/DPS/fonts/outlines
- /usr/lpp/X11/lib/X11/fonts/Type1
- /usr/lpp/X11/lib/X11/fonts/Type1/DPS
-
-NeXT
- /NextLibrary/Fonts/outline
-
-SGI IRIX
- /usr/lib/DPS/outline/base /usr/lib/X11/fonts/Type1
-
-Sun SunOS 4.x
- (NeWSprint only)
- newsprint_2.5/SUNWsteNP/reloc/$BASEDIR/
- NeWSprint/small_openwin/lib/fonts
- /usr/openwin/lib/X11/fonts/Type1/outline
-
-Sun Solaris 2
- /usr/openwin/lib/X11/fonts/Type1/outline
-
-VMS
- SYS$COMMON:[SYSFONT.XDPS.OUTLINE]
-
-The NeXT system supplies more fonts than any others, but there's a lot
-of overlap.
-
- Finally, if you have an Hewlett-Packard printer, you should be able
-to get Type 1 font files for the standard 35 fonts from HP, if the
-freely available URW Type 1's do not satisfy for whatever reason. The
-phone number for HP Printer Drivers is (in the United States)
-303-339-7009. The driver set to ask for is Adobe Type Manager 2.51,
-and the disk set number is `MP210en3'. Mentioning anything other than
-Microsoft Windows when you ask for the driver set will likely lead to
-great confusion on the other end.
-
-
-File: dvips.info, Node: Ghostscript installation, Next: Diagnosing problems, Prev: PostScript font installation, Up: Installation
-
-2.3 Ghostscript installation
-============================
-
-Ghostscript is a PostScript interpreter freely available to end-users,
-written by Peter Deutsch. It can read the PostScript produced by Dvips
-and render it on your monitor, or for another device (e.g., an Epson
-printer) that does not support PostScript, or in PDF format. The latest
-version is available via `http://www.cs.wisc.edu/~ghost/index.html' and
-`ftp://ftp.cs.wisc.edu/pub/ghost/aladdin/'.
-
- A somewhat older version of Ghostscript is available under the GNU
-General Public License, free to everyone. You can get that from
-`ftp://prep.ai.mit.edu/pub/gnu/'.
-
- The program Ghostview, written by Tim Theisen, provides typical
-previewing capabilities (next page/previous page, magnification, etc.).
-It requires Ghostscript to run, and files in structured Postscript,
-specifically with `%%Page' comments (no `N' in `config.ps'). You can
-get Ghostview from the same places as Ghostscript.
-
-
-File: dvips.info, Node: Diagnosing problems, Prev: Ghostscript installation, Up: Installation
-
-2.4 Diagnosing problems
-=======================
-
-You've gone through all the trouble of installing Dvips, carefully read
-all the instructions in this manual, and still can't get something to
-work. The following sections provide some helpful hints if you find
-yourself in such a situation.
-
- For details on effective bug reporting, common installation problems,
-and `mktexpk' problems, *note Bugs: (kpathsea)Bugs.
-
-* Menu:
-
-* Debug options:: Getting diagnostics.
-* No output:: No output at all.
-* Small or inverted:: Output too small or inverted.
-* Printer errors:: The printer sends back errors.
-* Long documents fail:: Long documents fail to print.
-* Including graphics fails:: Figures don't work.
-
-
-File: dvips.info, Node: Debug options, Next: No output, Up: Diagnosing problems
-
-2.4.1 Debug options
--------------------
-
-The `-d' flag to Dvips helps in tracking down certain errors. The
-parameter to this flag is an integer that tells what errors are
-currently being tracked. To track a certain class of debug messages,
-simply provide the appropriate number given below; if you wish to track
-multiple classes, sum the numbers of the classes you wish to track. To
-track all classes, you can use `-1'. Another useful value is `3650',
-which tracks everything having to do with file searching and opening.
-
- Some of these debugging options are actually provided by Kpathsea
-(*note Debugging: (kpathsea)Debugging.).
-
- The classes are:
-1
- specials
-
-2
- paths
-
-4
- fonts
-
-8
- pages
-
-16
- headers
-
-32
- font compression
-
-64
- files
-
-128
- config files
-
-256
- Partial Type 1 font encoding vectors
-
-512
- Partial Type 1 subr calls
-
-1024
- Kpathsea `stat' calls
-
-2048
- Kpathsea hash table lookups
-
-4096
- Kpathsea path element expansion
-
-8192
- Kpathsea path searches
-
-
-File: dvips.info, Node: No output, Next: Small or inverted, Prev: Debug options, Up: Diagnosing problems
-
-2.4.2 No output at all
-----------------------
-
-If you are not getting any output at all, even from the simplest
-one-character file (for instance, `\ \bye'), then something is very
-wrong. Practically any file sent to a PostScript laser printer should
-generate some output, at the very least a page detailing what error
-occurred, if any. Talk to your system administrator about downloading a
-PostScript error handler. (Adobe distributes a good one called
-`ehandler.ps'.)
-
- It is possible, especially if you are using non-Adobe PostScript,
-that your PostScript interpreter is broken. Even then it should
-generate an error message. Dvips tries to work around as many bugs as
-possible in common non-Adobe PostScript interpreters, but doubtless it
-misses a few. PowerPage Revision 1, Interpreter Version 20001.001, on
-a Mitsubishi Shinko CHC-S446i color thermal dye sublimation printer is
-known to be unable to print with any but builtin fonts.
-
- If Dvips gives any strange error messages, or compilation on your
-machine generated a lot of warnings, perhaps the Dvips program itself is
-broken. Try using the debug options to determine where the error
-occurred (*note Debug options::).
-
- It is possible your spooler is broken and is misinterpreting the
-structured comments. Try the `-N' flag to turn off structured comments
-and see what happens.
-
-
-File: dvips.info, Node: Small or inverted, Next: Printer errors, Prev: No output, Up: Diagnosing problems
-
-2.4.3 Output too small or inverted
-----------------------------------
-
-If some documents come out inverted or too small, probably your spooler
-is not supplying an end of job indicator at the end of each file. (This
-commonly happens on small machines that don't have spoolers.) You can
-force Dvips to do this with the `-F' flag (or `F' config file option),
-but this generates files with a terminating binary character
-(control-D). You can also try using the `-s' flag (or `s' config file
-option) to enclose the entire job in a save/restore pair. *Note
-Command-line options::, and *Note Config files::.
-
-
-File: dvips.info, Node: Printer errors, Next: Long documents fail, Prev: Small or inverted, Up: Diagnosing problems
-
-2.4.4 Error messages from printer
----------------------------------
-
-If your printer returns error messages, the error message gives very
-good information on what might be going wrong. One of the most common
-error messages is `bop undefined'. This is caused by old versions of
-Transcript and other spoolers that do not properly parse the setup
-section of the PostScript. To fix this, turn off structured comments
-with the `-N' option, but it'd be best to get your spooling software
-updated.
-
- Another error message is `VM exhausted'. Some printers indicate
-this error by locking up, others quietly reset. This is caused by Dvips
-thinking that the printer has more memory than it actually does, and
-then printing a complicated document. To fix this, try lowering the
-`m' parameter in the configuration file; use the debug option to make
-sure you adjust the correct file.
-
- Other errors may indicate you are trying to include graphics that
-don't nest properly in other PostScript documents, among other things.
-Try the PostScript file on a QMS PS-810 or other Adobe PostScript
-printer if you have one, or Ghostscript (*note Ghostscript
-installation::); it might be a problem with the printer itself.
-
-
-File: dvips.info, Node: Long documents fail, Next: Including graphics fails, Prev: Printer errors, Up: Diagnosing problems
-
-2.4.5 Long documents fail to print
-----------------------------------
-
-This is usually caused by incorrectly specifying the amount of memory
-the printer has in the configuration file; see the previous section.
-
-
-File: dvips.info, Node: Including graphics fails, Prev: Long documents fail, Up: Diagnosing problems
-
-2.4.6 Including graphics fails
-------------------------------
-
-The most common problem with including graphics is an incorrect bounding
-box (*note Bounding box::). Complain to whoever wrote the software that
-generated the file if the bounding box is indeed incorrect.
-
- Another possible problem is that the figure you are trying to include
-does not nest properly; there are certain rules PostScript applications
-must follow when generating files to be included. The Dvips program
-includes work-arounds for such errors in Adobe Illustrator and other
-programs, but there are certainly applications that haven't been tested.
-
- One possible thing to try is the `-K' flag which strips the comments
-from an included figure. This might be necessary if the PostScript
-spooling software does not read the structured comments correctly. Use
-of this flag will break graphics from some applications, though, since
-some applications read the PostScript file from the input stream,
-looking for a particular comment.
-
- Any application which generates graphics output containing raw binary
-(not ASCII hex) will probably fail with Dvips.
-
-
-File: dvips.info, Node: Invoking Dvips, Next: Paper size and landscape, Prev: Installation, Up: Top
-
-3 Invoking Dvips
-****************
-
-Dvips reads a DVI file as output by (for example) TeX, and converts it
-to PostScript, taking care of builtin or downloaded PostScript fonts,
-font reencoding, color, etc. These features are described in other
-chapters in this document.
-
- There many ways to control Dvips' behavior: configuration files,
-environment variables, and command-line options.
-
-* Menu:
-
-* Basic usage::
-* Command-line options::
-* Environment variables::
-* Config files::
-
-
-File: dvips.info, Node: Basic usage, Next: Command-line options, Up: Invoking Dvips
-
-3.1 Basic usage of Dvips
-========================
-
-To use Dvips at its simplest, simply type
- dvips foo
- where `foo.dvi' is the output of TeX that you want to print. If
-Dvips has been installed correctly, the document will probably roll out
-of your default printer.
-
- If you use fonts that have not been used on your system before, they
-may be automatically generated; this process can take a few minutes, so
-progress reports appear by default. The next time that document is
-printed, these fonts will have been saved in the proper directories, so
-printing will go much faster. (If Dvips tries to endlessly generate the
-same fonts over and over again, it hasn't been installed properly.
-*Note Unable to generate fonts: (kpathsea)Unable to generate fonts.)
-
- Many options are available (see the next section). For a brief
-summary of available options, just type
- dvips --help
-
-
-File: dvips.info, Node: Command-line options, Next: Environment variables, Prev: Basic usage, Up: Invoking Dvips
-
-3.2 Command-line options
-========================
-
-Dvips has a plethora of command line options. Reading through this
-section will give a good idea of the capabilities of the driver.
-
-* Menu:
-
-* Option summary:: Quick listing, from Dvips --help.
-* Option details:: More information about each option.
-
-
-File: dvips.info, Node: Option summary, Next: Option details, Up: Command-line options
-
-3.2.1 Option summary
---------------------
-
-Here is a handy summary of the options; it is printed out when you run
-Dvips with no arguments or with the standard `--help' option.
-
-Usage: dvips [OPTION]... FILENAME[.dvi]
-a* Conserve memory, not time A Print only odd (TeX) pages
-b # Page copies, for posters e.g. B Print only even (TeX) pages
-c # Uncollated copies C # Collated copies
-d # Debugging D # Resolution
-e # Maxdrift value E* Try to create EPSF
-f* Run as filter F* Send control-D at end
- G* Shift low chars to higher pos.
-h f Add header file
-i* Separate file per section
-j* Download fonts partially
-k* Print crop marks K* Pull comments from inclusions
-l # Last page
-m* Manual feed M* Don't make fonts
-mode s Metafont device name
-n # Maximum number of pages N* No structured comments
-noomega Disable Omega extensions
-o f Output file O c Set/change paper offset
-p # First page P s Load config.$s
-pp l Print only pages listed
-q* Run quietly
-r* Reverse order of pages R* Run securely
-s* Enclose output in save/restore S # Max section size in pages
-t s Paper format T c Specify desired page size
-u s PS mapfile U* Disable string param trick
-v Print version number and quit V* Send downloadable PS fonts as PK
-x # Override dvi magnification X # Horizontal resolution
-y # Multiply by dvi magnification Y # Vertical resolution
-z* Hyper PS Z* Compress bitmap fonts
- # = number f = file s = string * = suffix, `0' to turn off
- c = comma-separated dimension pair (e.g., 3.2in,-32.1cm)
- l = comma-separated list of page ranges (e.g., 1-4,7-9)
-
-Email bug reports to tex-k@mail.tug.org.
-
-
-File: dvips.info, Node: Option details, Prev: Option summary, Up: Command-line options
-
-3.2.2 Option details
---------------------
-
-Many of the parameterless options listed here can be turned off by
-suffixing the option with a zero (`0'); for instance, to turn off page
-reversal, use `-r0'. Such options are marked with a trailing `*'.
-
-`-'
- Read additional options from standard input after processing the
- command line.
-
-`--help'
- Print a usage message and exit.
-
-`--version'
- Print the version number and exit.
-
-`-a*'
- Conserve memory by making three passes over the DVI file instead
- of two and only loading those characters actually used. Generally
- only useful on machines with a very limited amount of memory, like
- some PCs.
-
-`-A'
- Print only the odd pages. This option uses TeX page numbers, not
- physical page numbers.
-
-`-b NUM'
- Generate NUM copies of each page, but duplicating the page body
- rather than using the `/#copies' PostScript variable. This can be
- useful in conjunction with a header file setting `bop-hook' to do
- color separations or other neat tricks.
-
-`-B'
- Print only the even pages. This option uses TeX page numbers, not
- physical page numbers.
-
-`-c NUM'
- Generate NUM consecutive copies of every page, i.e., the output is
- uncollated. This merely sets the builtin PostScript variable
- `/#copies'.
-
-`-C NUM'
- Generate NUM copies, but collated (by replicating the data in the
- PostScript file). Slower than the `-c' option, but easier on the
- hands, and faster than resubmitting the same PostScript file
- multiple times.
-
-`-d NUM'
- Set the debug flags, showing what Dvips (thinks it) is doing.
- This will work unless Dvips has been compiled without the `DEBUG'
- option (not recommended). *Note Debug options::, for the possible
- values of NUM. Use `-d -1' as the first option for maximum output.
-
-`-D NUM'
- Set both the horizontal and vertical resolution to NUM, given in
- dpi (dots per inch). This affects the choice of bitmap fonts that
- are loaded and also the positioning of letters in resident
- PostScript fonts. Must be between 10 and 10000. This affects both
- the horizontal and vertical resolution. If a high resolution
- (something greater than 400 dpi, say) is selected, the `-Z' flag
- should probably also be used. If you are using fonts made with
- Metafont, such as Computer Modern, `mktexpk' needs to know about
- the value for NUM that you use or Metafont will fail. See the file
- `ftp://ftp.tug.org/tex/modes.mf' for a list of resolutions and mode
- names for most devices.
-
-`-e NUM'
- Maximum drift in pixels of each character from its `true'
- resolution-independent position on the page. The default value of
- this parameter is resolution dependent (it is the number of
- entries in the list [100, 200, 300, 400, 500, 600, 800, 1000,
- 1200, 1600, 2000, 2400, 2800, 3200, ...] that are less than or
- equal to the resolution in dots per inch). Allowing individual
- characters to `drift' from their correctly rounded positions by a
- few pixels, while regaining the true position at the beginning of
- each new word, improves the spacing of letters in words.
-
-`-E*'
- Generate an EPSF file with a tight bounding box. This only looks
- at marks made by characters and rules, not by any included
- graphics. In addition, it gets the glyph metrics from the TFM
- file, so characters that print outside their enclosing TFM box may
- confuse it. In addition, the bounding box might be a bit too
- loose if the character glyph has significant left or right side
- bearings. Nonetheless, this option works well enough for creating
- small EPSF files for equations or tables or the like. (Of course,
- Dvips output, especially when using bitmap fonts, is
- resolution-dependent and thus does not make very good EPSF files,
- especially if the images are to be scaled; use these EPSF files
- with care.) For multiple page input files, also specify `-i' to
- get each page as a separate EPSF file; otherwise, all the pages
- are overlaid in the single output file.
-
-`-f*'
- Run as a filter. Read the DVI file from standard input and write
- the PostScript to standard output. The standard input must be
- seekable, so it cannot be a pipe. If your input must be a pipe,
- write a shell script that copies the pipe output to a temporary
- file and then points Dvips at this file. This option also
- disables the automatic reading of the `PRINTER' environment
- variable; use `-P$PRINTER' after the `-f' to read it anyway. It
- also turns off the automatic sending of control-D if it was turned
- on with the `-F' option or in the configuration file; use `-F'
- after the `-f' to send it anyway.
-
-`-F*'
- Write control-D (ASCII code 4) as the very last character of the
- PostScript file. This is useful when Dvips is driving the printer
- directly instead of working through a spooler, as is common on
- personal systems. On systems shared by more than one person, this
- is not recommended.
-
-`-G*'
- Shift non-printing characters (ASCII 0-32, 127) to higher-numbered
- positions. This may be useful sometimes.
-
-`-h NAME'
- Prepend NAME as an additional header file, or, if NAME is `-',
- suppress all header files. Any definitions in the header file get
- added to the PostScript `userdict'.
-
-`-i*'
- Make each section be a separate file; a "section" is a part of the
- document processed independently, most often created to avoid
- memory overflow. The filenames are created replacing the suffix
- of the supplied output file name by a three-digit sequence number.
- This option is most often used in conjunction with the `-S'
- option which sets the maximum section length in pages; if `-i' is
- specified and `-S' is not, each page is output as a separate file.
- For instance, some phototypesetters cannot print more than ten or
- so consecutive pages before running out of steam; these options
- can be used to automatically split a book into ten-page sections,
- each to its own file.
-
-`-j*'
- Download only needed characters from Type 1 fonts. This is the
- default in the current release. Some debugging flags trace this
- operation (*note Debug options::). You can also control partial
- downloading on a per-font basis (*note psfonts.map::).
-
-`-k*'
- Print crop marks. This option increases the paper size (which
- should be specified, either with a paper size special or with the
- `-T' option) by a half inch in each dimension. It translates each
- page by a quarter inch and draws cross-style crop marks. It is
- mostly useful with typesetters that can set the page size
- automatically. This works by downloading `crop.pro'.
-
-`-K*'
- Remove comments in included PostScript graphics, font files, and
- headers; only necessary to get around bugs in spoolers or
- PostScript post-processing programs. Specifically, the `%%Page'
- comments, when left in, often cause difficulties. Use of this
- flag can cause other graphics to fail, however, since the
- PostScript header macros from some software packages read portion
- the input stream line by line, searching for a particular comment.
-
-`-l [=]NUM'
- The last page printed will be the first one numbered NUM. Default
- is the last page in the document. If NUM is prefixed by an equals
- sign, then it (and the argument to the `-p' option, if specified)
- is treated as a physical (absolute) page number, rather than a
- value to compare with the TeX `\count0' values stored in the DVI
- file. Thus, using `-l =9' will end with the ninth page of the
- document, no matter what the pages are actually numbered.
-
-`-m*'
- Specify manual feed, if supported by the output device.
-
-`-mode MODE'
- Use MODE as the Metafont device name for path searching and font
- generation. This overrides any value from configuration files.
- With the default paths, explicitly specifying the mode also makes
- the program assume the fonts are in a subdirectory named MODE.
- *Note TeX directory structure: (kpathsea)TeX directory structure.
- If Metafont does not understand the MODE name, see *Note Unable to
- generate fonts: (kpathsea)Unable to generate fonts.
-
-`-M*'
- Turns off automatic font generation (`mktexpk'). If `mktexpk',
- the invocation is appended to a file `missfont.log' (by default)
- in the current directory. You can then execute the log file to
- create the missing files after fixing the problem. If the current
- directory is not writable and the environment variable or
- configuration file value `TEXMFOUTPUT' is set, its value is used.
- Otherwise, nothing is written. The name `missfont.log' is
- overridden by the `MISSFONT_LOG' environment variable or
- configuration file value.
-
-`-n NUM'
- Print at most NUM pages. Default is 100000.
-
-`-N*'
- Turns off generation of structured comments such as `%%Page'; this
- may be necessary on some systems that try to interpret PostScript
- comments in weird ways, or on some PostScript printers. Old
- versions of TranScript in particular cannot handle modern
- Encapsulated PostScript. Beware: This also disables page
- movement, etc., in PostScript viewers such as Ghostview.
-
-`-noomega'
- This will disable the use of Omega extensions when interpreting
- DVI files. By default, the additional opcodes `129' and `134' are
- recognized by Dvips as Omega extensions and interpreted as
- requests to set 2-byte characters. The only drawback is that the
- virtual font array will (at least temporarily) require 65536
- positions instead of the default 256 positions, i.e., the memory
- requirements of Dvips will be slightly larger. If you find this
- unacceptable or encounter another problem with the Omega
- extensions, you can switch this extension off by using `-noomega'
- (but please do send a bug report if you find such problems, *note
- Bugs: (kpathsea)Bugs.).
-
-`-o NAME'
- Send output to the file NAME. If `-o' is specified without NAME,
- the default is `FILE.ps' where the input DVI file was `FILE.dvi'.
- If `-o' isn't given at all, the configuration file default is used.
-
- If NAME is `-', output goes to standard output. If the first
- character of NAME is `!' or `|', then the remainder will be used
- as an argument to `popen'; thus, specifying `|lpr' as the output
- file will automatically queue the file for printing as usual.
- (The MS-DOS version will print to the local printer device `PRN'
- when NAME is `|lpr' and a program by that name cannot be found.)
-
- `-o' disables the automatic reading of the `PRINTER' environment
- variable, and turns off the automatic sending of control-D. See
- the `-f' option for how to override this.
-
-`-O X-OFFSET,Y-OFFSET'
- Move the origin by X-OFFSET,Y-OFFSET, a comma-separated pair of
- dimensions such as `.1in,-.3cm' (*note papersize special::). The
- origin of the page is shifted from the default position (of one
- inch down, one inch to the right from the upper left corner of the
- paper) by this amount. This is usually best specified in the
- printer-specific configuration file.
-
- This is useful for a printer that consistently offsets output
- pages by a certain amount. You can use the file `testpage.tex' to
- determine the correct value for your printer. Be sure to do
- several runs with the same `O' value--some printers vary widely
- from run to run.
-
- If your printer offsets every other page consistently, instead of
- every page, your best recourse is to use `bop-hook' (*note
- PostScript hooks::).
-
-`-p [=]NUM'
- The first page printed will be the first one numbered NUM. Default
- is the first page in the document. If NUM is prefixed by an
- equals sign, then it (and the argument to the `-l' option, if
- specified) is treated as a physical (absolute) page number, rather
- than a value to compare with the TeX `\count0' values stored in the
- DVI file. Thus, using `-p =3' will start with the third page of
- the document, no matter what the pages are actually numbered.
-
-`-pp FIRST-LAST'
- Print pages FIRST through LAST; equivalent to `-p FIRST -l LAST',
- except that multiple `-pp' options accumulate, unlike `-p' and
- `-l'. The `-' separator can also be `:'.
-
-`-P PRINTER'
- Read the configuration file `config.PRINTER' (`PRINTER.cfg' on
- MS-DOS), which can set the output name (most likely `o |lpr
- -PPRINTER'), resolution, Metafont mode, and perhaps font paths and
- other printer-specific defaults. It works best to put sitewide
- defaults in the one master `config.ps' file and only things that
- vary printer to printer in the `config.PRINTER' files; `config.ps'
- is read before `config.PRINTER'.
-
- A configuration file for creating Adobe PDF files is provided in
- `config.pdf' and can be loaded with `-Ppdf', it will try to
- include Type1 outline fonts into the PostScript file (*note
- Hypertext caveats::).
-
- If no `-P' or `-o' is given, the environment variable `PRINTER' is
- checked. If that variable exists, and a corresponding
- `config.PRINTER' (`PRINTER.cfg' on MS-DOS) file exists, it is read.
- *Note Configuration file searching::.
-
-`-q*'
- Run quietly. Don't chatter about pages converted, etc. to standard
- output; report no warnings (only errors) to standard error.
-
-`-r*'
- Output pages in reverse order. By default, page 1 is output first.
-
-`-R'
- Run securely. This disables shell command execution in `\special'
- (via ``', *note Dynamic creation of graphics::) and config files
- (via the `E' option, *note Configuration file commands::), and
- opening of any absolute filenames.
-
-`-s*'
- Enclose the output in a global save/restore pair. This causes the
- file to not be truly conformant, and is thus not recommended, but
- is useful if you are driving a deficient printer directly and thus
- don't care too much about the portability of the output to other
- environments.
-
-`-S NUM'
- Set the maximum number of pages in each `section'. This option is
- most commonly used with the `-i' option; see its description above
- for more information.
-
-`-t PAPERTYPE'
- Set the paper type to PAPERTYPE, usually defined in one of the
- configuration files, along with the appropriate PostScript code to
- select it (*note Config file paper sizes::). You can also specify
- a PAPERTYPE of `landscape', which rotates a document by 90
- degrees. To rotate a document whose paper type is not the
- default, you can use the `-t' option twice, once for the paper
- type, and once for `landscape'. You should not use any `-t'
- option when TeX writes a `papersize' special, as is done by some
- LaTeX packages, e.g., `hyperref.sty'.
-
-`-T HSIZE,VSIZE'
- Set the paper size to (HSIZE,VSIZE), a comma-separated pair of
- dimensions such as `.1in,-.3cm' (*note papersize special::). It
- overrides any paper size special in the DVI file.
-
-`-u PSMAPFILE'
- Set PSMAPFILE to be the file that dvips uses for looking up
- PostScript font aliases. If PSMAPFILE begins with a `+'
- character, then the rest of the name is used as the name of the
- map file, and the map file is appended to the list of map files
- (instead of replacing the list). In either case, if the name has
- no extension, then `.map' is added at the end.
-
-`-U*'
- Disable a PostScript virtual memory-saving optimization that
- stores the character metric information in the same string that is
- used to store the bitmap information. This is only necessary when
- driving the Xerox 4045 PostScript interpreter, which has a bug
- that puts garbage on the bottom of each character. Not
- recommended unless you must drive this printer.
-
-`-v'
- Print the dvips version number and exit.
-
-`-V*'
- Download non-resident PostScript fonts as bitmaps. This requires
- use of `mtpk' or `gsftopk' or `pstopk' or some combination thereof
- to generate the required bitmap fonts; these programs are supplied
- with Dvips. The bitmap must be put into `psfonts.map' as the
- downloadable file for that font. This is useful only for those
- fonts for which you do not have real outlines, being downloaded to
- printers that have no resident fonts, i.e., very rarely.
-
-`-x NUM'
- Set the magnification ratio to NUM/1000. Overrides the
- magnification specified in the DVI file. Must be between 10 and
- 100000. It is recommended that you use standard magstep values
- (1095, 1200, 1440, 1728, 2074, 2488, 2986, and so on) to help
- reduce the total number of PK files generated. NUM may be a real
- number, not an integer, for increased precision.
-
-`-X NUM'
- Set the horizontal resolution in dots per inch to NUM.
-
-`-y NUM'
- Set the magnification ratio to NUM/1000 times the magnification
- specified in the DVI file. See `-x' above.
-
-`-Y NUM'
- Set the vertical resolution in dots per inch to NUM.
-
-`-z*'
- Pass `html' hyperdvi specials through to the output for eventual
- distillation into PDF. This is not enabled by default to avoid
- including the header files unnecessarily, and use of temporary
- files in creating the output. *Note Hypertext::.
-
-`-Z*'
- Compress bitmap fonts in the output file, thereby reducing the
- size of what gets downloaded. Especially useful at high
- resolutions or when very large fonts are used. May slow down
- printing, especially on early 68000-based PostScript printers.
- Generally recommend today, and can be enabled in the configuration
- file (*note Configuration file commands::).
-
-
-
-File: dvips.info, Node: Environment variables, Next: Config files, Prev: Command-line options, Up: Invoking Dvips
-
-3.3 Environment variables
-=========================
-
-Dvips looks for many environment variables, to define search paths and
-other things. The path variables are read as needed, after all
-configuration files are read, so they override values in the
-configuration files. (Except for `TEXCONFIG', which defines where the
-configuration files themselves are found.)
-
- *Note Path specifications: (kpathsea)Path specifications, for
-details of interpretation of path and other environment variables
-common to all Kpathsea-using programs. Only the environment variables
-specific to Dvips are mentioned here.
-
-`DVIPSFONTS'
- Default path to search for all fonts. Overrides all the font path
- config file options and other environment variables (*note
- Supported file formats: (kpathsea)Supported file formats.).
-
-`DVIPSHEADERS'
- Default path to search for PostScript header files. Overrides the
- `H' config file option (*note Configuration file commands::).
-
-`DVIPSMAKEPK'
- Overrides `mktexpk' as the name of the program to invoke to create
- missing PK fonts. You can change the arguments passed to the
- `mktexpk' program with the `MAKETEXPK' environment variable; *note
- MakeTeX script arguments: (kpathsea)MakeTeX script arguments.
-
-`DVIPSRC'
- Specifies the name of the startup file (*note Configuration file
- searching::) which is read after `config.ps' but before any
- printer-specific configuration files.
-
-`DVIPSSIZES'
- Last-resort sizes for scaling of unfound fonts. Overrides the `R'
- definition in config files (*note Configuration file commands::).
-
-`PRINTER'
- Determine the default printer configuration file. (Dvips itself
- does not use `PRINTER' to determine the output destination in any
- way.)
-
-`TEXCONFIG'
- Path to search for Dvips' `config.PRINTER' configuration files,
- including the base `config.ps'. Using this single environment
- variable, you can override everything else. (The printer-specific
- configuration files are called `PRINTER.cfg' on MS-DOS, but
- `config.ps' is called by that name on all platforms.)
-
-`TEXPICTS'
- Path to search for included graphics files. Overrides the `S'
- config file option (*note Configuration file commands::). If not
- set, `TEXINPUTS' is looked for. *Note Supported file formats:
- (kpathsea)Supported file formats.
-
-
-
-File: dvips.info, Node: Config files, Prev: Environment variables, Up: Invoking Dvips
-
-3.4 Dvips configuration files
-=============================
-
-This section describes in detail the Dvips-specific `config.*' device
-configuration files (called `*.cfg' on MS-DOS), which override the
-`texmf.cnf' configuration files generic to Kpathsea which Dvips also
-reads (*note Config files: (kpathsea)Config files.).
-
- For information about installing these files, including a prototype
-file you can copy, *note config.ps installation::.
-
-* Menu:
-
-* Configuration file searching:: Where config.* files are searched for.
-* Configuration file commands:: What can go in a config.* file.
-
-
-File: dvips.info, Node: Configuration file searching, Next: Configuration file commands, Up: Config files
-
-3.4.1 Configuration file searching
-----------------------------------
-
-The Dvips program loads many different configuration files, so that
-parameters can be set globally across the system, on a per-device basis,
-or individually by each user.
-
- 1. Dvips first reads (if it exists) `config.ps'; it is searched for
- along the path for Dvips configuration files, as described in
- *Note Supported file formats: (kpathsea)Supported file formats.
-
- 2. A user-specific startup file is loaded, so individual users can
- override any options set in the global file. The environment
- variable `DVIPSRC', if defined, is used as the specification of
- the startup file. If this variable is undefined, Dvips uses a
- platform-specific default name. On Unix Dvips looks for the
- default startup file under the name `$HOME/.dvipsrc', which is in
- the user's home directory. On MS-DOS and MS-Windows, where users
- generally don't have their private directories, the startup file
- is called `dvips.ini' and it is searched for along the path for
- Dvips configuration files (as described in *Note Supported file
- formats: (kpathsea)Supported file formats.); users are expected to
- set this path as they see fit for their taste.
-
- 3. The command line is read and parsed: if the `-PDEVICE' option is
- encountered, at that point `config.DEVICE' is loaded. Thus, the
- printer configuration file can override anything in the site-wide
- or user configuration file, and it can also override options in
- the command line up to the point that the `-P' option was
- encountered. (On MS-DOS, the printer configuration files are
- called `DEVICE.cfg', since DOS doesn't allow more than 3 characters
- after the dot in filenames.)
-
- 4. If no `-P' option was specified, and also the `-o' and `-f'
- command line options were not used, Dvips checks the environment
- variable `PRINTER'. If it exists, then `config.$PRINTER'
- (`$PRINTER.cfg' on MS-DOS) is loaded (if it exists).
-
-
- Because the `.dvipsrc' file is read before the printer-specific
-configuration files, individual users cannot override settings in the
-latter. On the other hand, the `TEXCONFIG' path usually includes the
-current directory, and can in any case be set to anything, so the users
-can always define their own printer-specific configuration files to be
-found before the system's.
-
- A few command-line options are treated specially, in that they are
-not overridden by configuration files:
-
-`-D'
- As well as setting the resolution, this unsets the mode, if the
- mode was previously set from a configuration file. If
- `config.$PRINTER' is read, however, any `D' or `M' lines from
- there will take effect.
-
-`-mode'
- This overrides any mode setting (`M' line) in configuration files.
- `-mode' does not affect the resolution.
-
-`-o'
- This overrides any output setting (`o' line) in configuration
- files.
-
-
- The purpose of these special cases is to (1) minimize the chance of
-having a mismatched mode and resolution (which `mktexpk' cannot
-resolve), and (2) let command-line options override config files where
-possible.
-
-
-File: dvips.info, Node: Configuration file commands, Prev: Configuration file searching, Up: Config files
-
-3.4.2 Configuration file commands
----------------------------------
-
-Most of the configuration file commands are similar to corresponding
-command line options, but there are a few exceptions. When they are the
-same, we omit the description here.
-
- As with command line options, many may be turned off by suffixing the
-letter with a zero (`0').
-
- Within a configuration file, empty lines, and lines starting with a
-space, asterisk, equal sign, percent sign, or pound sign are ignored.
-There is no provision for continuation lines.
-
-`@ NAME HSIZE VSIZE'
- Define paper sizes. *Note Config file paper sizes::.
-
-`a*'
- Memory conservation. Same as `-a', *note Option details::.
-
-`b #COPIES'
- Multiple copies. Same as `-b', *note Option details::.
-
-`D DPI'
- Output resolution. Same as `-D', *note Option details::.
-
-`e NUM'
- Max drift. Same as `-e', *note Option details::.
-
-`E COMMAND'
- Executes the command listed with `system'(3); can be used to get
- the current date into a header file for inclusion, for instance.
- Possibly dangerous; this may be disabled, in which case a warning
- will be printed if the option is used (and warnings are not
- suppressed).
-
-`f*'
-`F'
- Run as a filter. Same as `-f', *note Option details::.
-
-`h HEADER'
- Prepend HEADER to output. Same as `h-', *note Option details::.
-
-`H PATH'
- Use PATH to search for PostScript header files. The environment
- variable `DVIPSHEADERS' overrides this.
-
-`i N'
- Make multiple output files. Same as `-i -S N', *note Option
- details::.
-
-`j*'
- Partially download Type 1 fonts. Same as `-j', *note Option
- details::.
-
-`K*'
- Remove comments from included PostScript files. Same as `-K',
- *note Option details::.
-
-`m NUM'
- Declare NUM as the memory available for fonts and strings in the
- printer. Default is 180000. This value must be accurate if memory
- conservation and document splitting is to work correctly. To
- determine this value, send the following file to the printer:
-
- %! Hey, we're PostScript
- /Times-Roman findfont 30 scalefont setfont 144 432 moveto
- vmstatus exch sub 40 string cvs show pop showpage
-
- The number printed by this file is the total memory free; it is
- usually best to tell Dvips that the printer has slightly less
- memory, because many programs download permanent macros that can
- reduce the memory in the printer. Some systems or printers can
- dynamically increase the memory available to a PostScript
- interpreter, in which case this file might return a ridiculously
- low number; for example, the NeXT computer and Ghostscript. In
- these cases, a value of one million works fine.
-
-`M MODE'
- Metafont mode. Same as `-mode', *note Option details::.
-
-`N*'
- Disable structured comments. Beware: This also turns off
- displaying page numbers or changing to specific pagenumbers in
- PostScript viewers. Same as `-N', *note Option details::.
-
-`o NAME'
- Send output to NAME. Same as `-o', *note Option details::. In
- the file `config.foo', a setting like this is probably appropriate:
- o |lpr -Pfoo
- The MS-DOS version will emulate spooling to `lpr' by printing to
- the local printer device `PRN' if it doesn't find an executable
- program by that name in the current directory or along the `PATH'.
-
-`O XOFF,YOFF'
- Origin offset. Same as `-O', *note Option details::.
-
-`p [+]NAME'
- Examine NAME for PostScript font aliases. Default is
- `psfonts.map'. This option allows you to specify different
- resident fonts that different printers may have. If NAME starts
- with a `+' character, then the rest of the name (after any leading
- spaces) is used as an additional map file; thus, it is possible to
- have local map files pointed to by local configuration files that
- append to the global map file. This can be used for font families.
-
-`P PATH'
- Use PATH to search for bitmap PK font files is PATH. The
- `PKFONTS', `TEXPKS', `GLYPHFONTS', and `TEXFONTS' environment
- variables override this. *Note Supported file formats:
- (kpathsea)Supported file formats.
-
-`q*'
-`Q'
- Run quietly. Same as `-q', *note Option details::.
-
-`r*'
- Page reversal. Same as `-r', *note Option details::.
-
-`R NUM1 NUM2 ...'
- Define the list of default resolutions for PK fonts. If a font
- size actually used in a document is not available and cannot be
- created, Dvips will scale the font found at the closest of these
- resolutions to the requested size, using PostScript scaling. The
- resulting output may be ugly, and thus a warning is issued. To
- turn this last-resort scaling off, use a line with just the `R'
- and no numbers.
-
- The given numbers must be sorted in increasing order; any number
- smaller than the preceding one is ignored. This is because it is
- better to scale a font up than down; scaling down can obliterate
- small features in the character shape.
-
- The environment and config file values `DVIPSSIZES' or `TEXSIZES'
- override this configuration file setting.
-
- If no `R' settings or environment variables are specified, a list
- compiled in during installation is used. This default list is
- defined by the Makefile variable `default_texsizes', defined in
- the file `make/paths.make'.
-
-`s*'
- Output global save/restore. Same as `-s', *note Option details::.
-
-`S PATH'
- Use PATH to search for special illustrations (Encapsulated
- PostScript files or psfiles). The `TEXPICTS' and then `TEXINPUTS'
- environment variables override this.
-
-`T PATH'
- Use PATH to search for TFM files. The `TFMFONTS' and then
- `TEXFONTS' environment variables overrides this. This path is used
- for resident fonts and fonts that can't otherwise be found.
-
-`U*'
- Work around bug in Xerox 4045 printer. Same as `-U', *note Option
- details::.
-
-`V PATH'
- Use PATH to search for virtual font files. This may be
- device-dependent if you use virtual fonts to simulate actual fonts
- on different devices.
-
-`W [STRING]'
- If STRING is supplied, write it to standard error after reading
- all the configuration files; with no STRING, cancel any previous
- `W' message. This is useful in the default configuration file to
- remind users to specify a printer, for instance, or to notify users
- about special characteristics of a particular printer.
-
-`X NUM'
- Horizontal resolution. Same as `-X' (*note Option details::).
-
-`Y NUM'
- Vertical resolution. Same as `-Y' (*note Option details::).
-
-`Z*'
- Compress bitmap fonts. Same as `-Z' (*note Option details::).
-
-`z*'
- Disables execution of system commands, like `-R' (*note Option
- details::). If `-R1' is given to disable system commands,
- however, this will not re-enable them.
-
-
-
-File: dvips.info, Node: Paper size and landscape, Next: Interaction with PostScript, Prev: Invoking Dvips, Up: Top
-
-4 Paper size and landscape orientation
-**************************************
-
-Most TeX documents at a particular site are designed to use the
-standard paper size (letter size in the United States, A4 in Europe).
-The Dvips program can be customized either sitewide or for a particular
-printer.
-
- But many documents are designed for other paper sizes. For instance,
-you may want to design a document that has the long edge of the paper
-horizontal. This can be useful when typesetting booklets, brochures,
-complex tables, or many other documents. This type of paper orientation
-is called "landscape" orientation (the default orientation is
-"portrait"). Alternatively, a document might be designed for ledger or
-A3 paper.
-
- Since the intended paper size is a document design decision, not a
-printing decision, such information should be given in the TeX file and
-not on the Dvips command line. For this reason, Dvips supports a
-`papersize' special. It is hoped that this special will become
-standard over time for TeX previewers and other printer drivers.
-
- Some LaTeX packages, e.g., `hyperref.sty', write a `papersize'
-special into the DVI file. In this case, you need not and should not
-attempt to override it manually.
-
-* Menu:
-
-* papersize special:: Specifying the paper size in TeX.
-* Config file paper sizes:: Specifying printer- and site-specific sizes.
-* Paper trays:: Changing paper trays automatically.
-
-
-File: dvips.info, Node: papersize special, Next: Config file paper sizes, Up: Paper size and landscape
-
-4.1 `papersize' special
-=======================
-
-The format of the `papersize' special is
-
- \special{papersize=WIDTH,HEIGHT}
-
-WIDTH is the horizontal size of the page, and HEIGHT is the vertical
-size. The dimensions supported are the same as for TeX; namely, in
-(inches), cm (centimeters), mm (millimeters), pt (points), sp (scaled
-points), bp (big points, the same as the default PostScript unit), pc
-(picas), dd (didot points), and cc (ciceros).
-
- For a US letter size landscape document, the `papersize' would be:
- \special{papersize=11in,8.5in}
-
-An alternate specification of `landscape':
- \special{landscape}
-
-This is supported for backward compatibility, but it is hoped that
-reventually the `papersize' comment will dominate.
-
- Of course, such a `\special' only informs Dvips of the desired paper
-size; you must also adjust `\hsize' and `\vsize' in your TeX document
-typeset to those dimensions.
-
- The `papersize' special must occur somewhere on the first page of
-the document.
-
-
-File: dvips.info, Node: Config file paper sizes, Next: Paper trays, Prev: papersize special, Up: Paper size and landscape
-
-4.2 Configuration file paper size command
-=========================================
-
-The `@' command in a configuration file sets the paper size defaults
-and options. The first `@' command defines the default paper size. It
-has three possible parameters:
-
- @ [NAME [HSIZE VSIZE]]
-
- If `@' is specified on a line by itself, with no parameters, it
-instructs Dvips to discard all previous paper size information (possibly
-from another configuration file).
-
- If three parameters are given, with the first parameter being a name
-and the second and third being a dimension (as in `8.5in' or `3.2cc',
-just like in the `papersize' special), then the option is interpreted
-as starting a new paper size description, where NAME is the name and
-HSIZE and VSIZE define the horizontal and vertical size of the sheet of
-paper, respectively. For example:
-
- @ letterSize 8.5in 11in
-
- If both HSIZE and VSIZE are zero (you must still specify units!)
-then any page size will match. If the `@' character is immediately
-followed by a `+' sign, then the remainder of the line (after skipping
-any leading blanks) is treated as PostScript code to send to the
-printer, presumably to select that particular paper size:
-
- @ letter 8.5in 11in
- @+ %%BeginPaperSize: Letter
- @+ letter
- @+ %%EndPaperSize
-
- After all that, if the first character of the line is an exclamation
-point, then the line is put in the initial comments section of the final
-output file; else, it is put in the setup section of the output file.
-For example:
-
- @ legal 8.5in 14in
- @+ ! %%DocumentPaperSizes: Legal
- @+ %%BeginPaperSize: Legal
- @+ legal
- @+ %%EndPaperSize
-
- When Dvips has a paper format name given on the command line, it
-looks for a match by the NAME; when it has a `papersize' special, it
-looks for a match by dimensions. The first match found (in the order
-the paper size information is found in the configuration file) is used.
-If nothing matches, a warning is printed and the first paper size is
-used. The dimensions must match within a quarter of an inch. Landscape
-mode for all paper sizes is automatically supported.
-
- If your printer has a command to set a special paper size, then give
-dimensions of `0in 0in'; the PostScript code that sets the paper size
-can refer to the dimensions the user requested as `hsize' and `vsize';
-these will be macros defined in the PostScript that return the
-requested size in default PostScript units. Virtually all of the
-PostScript commands you use here are device-dependent and degrade the
-portability of the file; that is why the default first paper size entry
-should not send any PostScript commands down (although a structured
-comment or two would be okay). Also, some printers want
-`BeginPaperSize' comments and paper size setting commands; others (such
-as the NeXT) want `PaperSize' comments and they will handle setting the
-paper size. There is no solution I could find that works for both
-(except maybe specifying both).
-
- The Perl 5 script `contrib/mkdvipspapers' in the distribution
-directory may help in determining appropriate paper size definitions.
-
- If your printers are configured to use A4 paper by default, the
-configuration file (probably the global `config.ps' in this case)
-should include this as the first `@' command:
-
- @ A4size 210mm 297mm
- @+ %%PaperSize: A4
-
-so that `A4size' is used as the default, and not `A4' itself; thus, no
-PostScript `a4' command is added to the output file, unless the user
-explicitly says to use paper size `a4'. That is, by default, no paper
-size PostScript command should be put in the output, but Dvips will
-still know that the paper size is A4 because `A4size' is the first (and
-therefore default) size in the configuration file.
-
- Executing the `letter' or `a4' or other PostScript operators cause
-the document to be nonconforming and can cause it not to print on
-certain printers, so the default paper size should not execute such an
-operator if at all possible.
-
-
-File: dvips.info, Node: Paper trays, Prev: Config file paper sizes, Up: Paper size and landscape
-
-4.3 Paper trays
-===============
-
-Some printers, such as the Hewlett-Packard HP4si, have multiple paper
-trays. You can set up Dvips to take advantage of this using the
-`bop-hook' PostScript variable (*note PostScript hooks::).
-
- For example, suppose you have an alternate tray stocked with
-letterhead paper; the usual tray has the usual paper. You have a
-document where you want the first page printed on letterhead, and the
-remaining pages on the usual paper. You can create a header file, say
-`firstletterhead.PS', with the following (PostScript) code (`bop-hook'
-is passed the current physical page number, which starts at zero):
-
- /bop-hook { dup 0 eq { ALTERNATETRAY } { NORMALTRAY } ifelse } def
-
-where ALTERNATETRAY and NORMALTRAY are the appropriate commands to
-select the paper trays. On the 4SI, ALTERNATETRAY is `statusdict begin
-1 setpapertray end' and NORMALTRAY is `statusdict begin 0 setpapertray
-end'.
-
- Then, include the file with either
- * the `-h' command-line option (*note Option details::); or
-
- * the `h' config file option (*note Configuration file commands::);
- or
-
- * `\special{header=FILE}' in your TeX document (*note Including
- headers from TeX: Including headers from TeX.).
-
-
-
-File: dvips.info, Node: Interaction with PostScript, Next: PostScript fonts, Prev: Paper size and landscape, Up: Top
-
-5 Interaction with PostScript
-*****************************
-
-Dvips supports inclusion of PostScript figure files (e.g., Encapsulated
-PostScript), downloading other header files (e.g., fonts), including
-literal PostScript code, and hypertext.
-
-* Menu:
-
-* PostScript figures:: Including an Encapsulated PostScript figure.
-* Header files:: Downloading extra definitions.
-* Literal PS:: Writing literal PostScript code.
-* Hypertext:: Producing HyperPostScript to make PDF.
-
-
-File: dvips.info, Node: PostScript figures, Next: Header files, Up: Interaction with PostScript
-
-5.1 PostScript figures
-======================
-
-Scaling and including PostScript graphics is a breeze--if the PostScript
-file is correctly formed. Even if it is not, however, the file can
-usually be accommodated with just a little more work.
-
-* Menu:
-
-* Bounding box:: The %%BoundingBox EPS comment.
-* \includegraphics:: The LaTeX \includegraphics macro.
-* EPSF macros:: Including the file in TeX.
-* psfile special:: The basic special.
-* Dynamic creation of graphics:: Handling compressed or generated figures.
-* Fonts in figures:: The %*Font comment.
-
-
-File: dvips.info, Node: Bounding box, Next: \includegraphics, Up: PostScript figures
-
-5.1.1 The bounding box comment
-------------------------------
-
-The most important feature of a good PostScript file from the standpoint
-of including it in another document is an accurate bounding box comment.
-Every well-formed PostScript file has a comment describing where on the
-page the graphic is located, and how big that graphic is.
-
- This information is given as the lower left and upper right corners
-of the box just enclosing the graphic, and is thus referred to as the
-"bounding box". These coordinates are given in the default PostScript
-units (there are precisely 72 PostScript units to the inch, like TeX
-big points) with respect to the lower left corner of the sheet of paper.
-
- To see if a PostScript file has a bounding box comment, just look at
-the first few lines of the file. PostScript files are standard ASCII,
-so you can use any text editor to do this. If within the first few
-dozen lines there is a line like
-
- %%BoundingBox: 25 50 400 300
-
-(with any reasonable numbers), chances are very good that the file is
-Encapsulated PostScript and will work easily with Dvips. If the file
-contains instead a line like
-
- %%BoundingBox: (atend)
-
-the file is still probably Encapsulated PostScript, but the bounding box
-is given at the end of the file. Dvips needs it at the beginning. You
-can move it with that same text editor, or a simple script. (The
-bounding box is given in this way when the program that generated the
-PostScript couldn't know the size in advance, or was too lazy to compute
-it.)
-
- If the document lacks a `%%BoundingBox:' altogether, you can
-determine one in a couple of ways. One is to use the `bbfig' program
-distributed with Dvips in the `contrib' directory. This can usually
-find the correct bounding box automatically; it works best with
-Ghostscript.
-
- If the comment looks like this:
- %%BoundingBox: 0 0 612 792
-
-the graphic claims to take up an entire sheet of paper. This is
-usually a symptom of a bug in the program that generated it.
-
- The other is to do it yourself: print the file. Now, take a ruler,
-and make the following measurements (in PostScript units, so measure in
-inches and multiply by 72): From the left edge of the paper to the
-leftmost mark on the paper is LLX, the first number. From the bottom
-edge of the paper to the bottommost mark on the paper is LLY, the
-second number. From the left edge of the paper to the rightmost mark
-on the paper is URX, the third number. The fourth and final number,
-URY, is the distance from the bottom of the page to the uppermost mark
-on the paper.
-
- Once you have the numbers, add a comment of the following form as the
-second line of the document. (The first line should already be a line
-starting with the two characters `%!'; if it is not, the file probably
-isn't PostScript.)
-
- %%BoundingBox: LLX LLY URX URY
-
-Or, if you don't want to modify the file, you can simply write these
-numbers down in a convenient place and give them in your TeX document
-when you import the graphic, as described in the next section.
-
- If the document does not have such a bounding box, or if the bounding
-box is given at the end of the document, or the bounding box is wrong,
-please complain to the authors of the software package that generated
-the file.
-
-
-File: dvips.info, Node: \includegraphics, Next: EPSF macros, Prev: Bounding box, Up: PostScript figures
-
-5.1.2 The \includegraphics macro for LaTeX
-------------------------------------------
-
-Once the figure file has a bounding box comment (see the previous
-section) you are ready to import the graphic into a LaTeX document. For
-LaTeX 2e, you can use the epsf, graphics or graphicx packages, but the
-last is recommended--it has the most flexible syntax, and is briefly
-described here. Further information can be found in `grfguide' or
-`epslatex', which should be included in your LaTeX distribution in DVI,
-PDF, or other formats. (If you are still using LaTeX 2.09, use
-epsf.sty).
-
- Just put the following command into your preamble:
-
- \usepackage[dvips]{graphicx}
-
- Depending on your system, a suitable driver setup may already be
-present, so that LaTeX automatically produces DVI files suitable for
-Dvips. In this case you can leave out the `[dvips]' parameter.
-
- Now, at the point you want to include a file `foo.eps', enter a line
-such as:
-
- \includegraphics{foo.eps}
-
- However, it is usually best to omit the file extension and only use
-
- \includegraphics{foo}
-
-because then you can process the same LaTeX file with different TeX
-engines or DVI converters if you also provide suitable graphics files
-for them, e.g., `foo.pdf' or `foo.png'.
-
- The \includegraphics command has many options, specified in
-`key=value' syntax, to allow you to resize, rotate or trim the included
-graphic--see `grfguide' or `epslatex'. If your file does not have a
-bounding box comment, you can supply the numbers as determined in the
-previous section, in the same order they would have been in a normal
-bounding box comment:
-
- \includegraphics[bb=100 100 500 500]{foo.ps}
-
-Now, save your changes and run LaTeX and Dvips; the output should have
-your graphic positioned at precisely the point you indicated, occupying
-the proper amount of space.
-
- PostScript graphics have their origin in the lower left corner.
-Therefore, in TeX, a graphic will occupy a box that extends far above
-the line where it is put in, but has depth zero below it. Combining
-`\includegraphics' with `\parbox' commands or minipages can sometimes
-be confusing when this is not taken into account.
-
-
-File: dvips.info, Node: EPSF macros, Next: psfile special, Prev: \includegraphics, Up: PostScript figures
-
-5.1.3 Using the EPSF macros
----------------------------
-
-If you are using LaTeX 2e, use the `graphics' or `graphicx' package.
-*Note \includegraphics::.
-
- If you are using plain TeX or LaTeX 2.09, you need `epsf.tex' (for
-plain TeX) and `epsf.sty' (for LaTeX). For plain TeX, add a line like
-this near the top of your input file:
-
- \input epsf
-
-If you are using LaTeX 2.09, add the `epsf' style option, as in:
-
- \documentstyle[12pt,epsf]{article}
-
-In any case, the above only needs to be done once, no matter how many
-figures you plan to include.
-
- Now, at the point you want to include a file, enter a line such as:
-
- \epsffile{foo.eps}
-
- If you are using LaTeX, you may need to add `\leavevmode'
-immediately before the `\epsffile' command to get certain environments
-to work correctly. If your file does not have a bounding box comment,
-you can supply the numbers as determined in the previous section, in
-the same order they would have been in a normal bounding box comment:
-
- \epsffile[100 100 500 500]{foo.ps}
-
-Now, save your changes and run TeX and Dvips; the output should have
-your graphic positioned at precisely the point you indicated, occupying
-the proper amount of space.
-
- The `\epsffile' macro typesets the figure as a TeX `\vbox' at the
-point of the page that the command is executed. By default, the
-graphic will have its `natural' width (namely, the width of its bounding
-box). The TeX box will have depth zero and its natural height. By
-default, the graphic will be scaled by any DVI magnification in effect,
-just as is everything else in your document. See the next section for
-more information on scaling.
-
- If you want TeX to report the size of the figure as a message on your
-terminal when it processes each figure, give the command:
-
- \epsfverbosetrue
-
-* Menu:
-
-* EPSF scaling::
-* EPSF clipping::
-
-
-File: dvips.info, Node: EPSF scaling, Next: EPSF clipping, Up: EPSF macros
-
-5.1.3.1 EPSF scaling
-....................
-
-Usually, you will want to scale an EPSF figure to some size appropriate
-for your document, since its natural size is determined by the creator
-of the EPS file.
-
- The best way to do this is to assign the desired size to the TeX
-`\epsfxsize' or `\epsfysize' variables, whichever is more convenient
-for you. That is, put
-
- \epsfxsize=DIMEN
-
-right before the call to `\epsffile'. Then the width of the TeX box
-will be DIMEN and its height will be scaled proportionately.
-Similarly, you can set the vertical size with
-
- \epsfysize=DIMEN
-
-in which case the height will be set and the width scaled
-proportionally.
-
- If you set both, both will be honored, but the aspect ratio of the
-included graphic may necessarily be distorted, i.e., its contents
-stretched in one direction or the other.
-
- You can resize graphics in a more general way by redefining the
-`\epsfsize' macro. `\epsffile' calls this with two parameters: the
-natural horizontal and vertical sizes of the PostScript graphic.
-`\epsfsize' must expand to the desired horizontal size, that is, the
-width of the `\vbox'. Schematically:
-
- \def\epsfsize#1#2{BODY}
-
- Some useful definitions of BODY:
-
-`\epsfxsize'
- This definition (the default) enables the default features listed
- above, by setting `\epsfxsize' to the same value it had before the
- macro was called.
-
-`#1'
- Force the natural size by returning the first parameter (the
- original width).
-
-`0pt'
- A special case, equivalent to `#1'.
-
-`0.5#1'
- Scale to half the natural size.
-
-`\hsize'
- Scale to the current `\hsize'. (In LaTeX, use `\textwidth'
- instead of `\hsize'.)
-
-`\ifnum#1>\hsize\hsize\else#1\fi'
- If the natural width is greater than the current `\hsize', scale to
- `\hsize', otherwise use the natural width.
-
-
- For compatibility with other PostScript drivers, it is possible to
-turn off the default scaling of included figures by the DVI
-magnification with the following TeX command:
-
- \special{! /magscale false def}
-
-Use of this command is not recommended because it will make the
-`\epsffile' graphics the "wrong" size if global magnification is being
-used, and it will cause any PostScript graphics to appear improperly
-scaled and out of position if a DVI to DVI program is used to scale or
-otherwise modify the document.
-
- DVI magnification is not applied to any output from code you write in
-`bop-hook' or its ilk (*note PostScript hooks::),
-
-
-File: dvips.info, Node: EPSF clipping, Prev: EPSF scaling, Up: EPSF macros
-
-5.1.3.2 EPSF clipping
-.....................
-
-By default, clipping is disabled for included EPSF images. This is
-because clipping to the bounding box dimensions often cuts off a small
-portion of the figure, due to slightly inaccurate bounding box
-arguments. The problem might be subtle; lines around the boundary of
-the image might be half their intended width, or the tops or bottoms of
-some text annotations might be sliced off. If you want to turn
-clipping on, just use the command
-
- \epsfclipon
-
-and to turn clipping back off, use
-
- \epsfclipoff
-
-
-File: dvips.info, Node: psfile special, Next: Dynamic creation of graphics, Prev: EPSF macros, Up: PostScript figures
-
-5.1.4 `psfile' special
-----------------------
-
-The basic special for file inclusion is as follows:
-
- \special{psfile=FILENAME.ps [KEY=VALUE] ... }
-
-This downloads the PostScript file `FILENAME.ps' such that the current
-point will be the origin of the PostScript coordinate system. The
-optional KEY=VALUE assignments allow you to specify transformations on
-the PostScript.
-
- The possible KEYs are:
-
-`hoffset'
- The horizontal offset (default 0)
-
-`voffset'
- The vertical offset (default 0)
-
-`hsize'
- The horizontal clipping size (default 612)
-
-`vsize'
- The vertical clipping size (default 792)
-
-`hscale'
- The horizontal scaling factor (default 100)
-
-`vscale'
- The vertical scaling factor (default 100)
-
-`angle'
- The rotation (default 0)
-
-`clip'
- Enable clipping to the bounding box
-
- The dimension parameters are all given in PostScript units. The
-`hscale' and `vscale' are given in non-dimensioned percentage units,
-and the rotation value is specified in degrees. Thus
-
- \special{psfile=foo.ps hoffset=72 hscale=90 vscale=90}
-
-will shift the graphics produced by file `foo.ps' right by one inch and
-will draw it at 0.9 times normal size. Offsets are given relative to
-the point of the special command, and are unaffected by scaling or
-rotation. Rotation is counterclockwise about the origin. The order of
-operations is to rotate the figure, scale it, then offset it.
-
- For compatibility with older PostScript drivers, it is possible to
-change the units that `hscale' and `vscale' are given in. This can be
-done by redefining `@scaleunit' in `SDict' by a TeX command such as
-
- \special{! /@scaleunit 1 def}
-
-The `@scaleunit' variable, which is by default 100, is what `hscale'
-and `vscale' are divided by to yield an absolute scale factor.
-
-
-File: dvips.info, Node: Dynamic creation of graphics, Next: Fonts in figures, Prev: psfile special, Up: PostScript figures
-
-5.1.5 Dynamic creation of PostScript graphics files
----------------------------------------------------
-
-PostScript is an excellent page description language--but it does tend
-to be rather verbose. Compressing PostScript graphics files can reduce
-them by factor of five or more. For this reason, if the name of an
-included PostScript file ends with `.Z' or `.gz', Dvips automatically
-runs `gzip -d'. For example:
-
- \epsffile[72 72 540 720]{foo.ps.gz}
-
-Since the results of such a command are not accessible to TeX, if you
-use this facility with the `epsf' macros, you need to supply the
-bounding box parameter yourself, as shown.
-
- More generally, if the filename parameter to one of the graphics
-inclusion techniques starts with a left quote (``'), the parameter is
-instead interpreted as a command to execute that will send the actual
-file to standard output. For example:
-
- \special{psfile="`gnuplot foo"}
-
-to include the file `foo'. Of course, the command to be executed can
-be anything, including using a file conversion utility such as `tek2ps'
-or whatever is appropriate. This feature can be disabled with the `-R'
-command-line option or `R' configuration option.
-
-
-File: dvips.info, Node: Fonts in figures, Prev: Dynamic creation of graphics, Up: PostScript figures
-
-5.1.6 Fonts in figures
-----------------------
-
-You can use any font available to TeX and Dvips within a graphics file
-by putting a `%*Font:' line in the leading commentary of the file.
-Schematically, this looks like:
-
- %*Font: TFMNAME SCALEDBP DESIGNBP HEX-START:HEX-BITSTRING
-
- Here is the meaning of each of these elements:
-
-TFMNAME
- The TeX TFM filename, e.g., `cmr10'. You can give the same
- TFMNAME on more than one `%*Font' line; this is useful when the
- number of characters from the font used needs a longer
- HEX-BITSTRING (see item below) than conveniently fits on one line.
-
-SCALEDBP
- The size at which you are using the font, in PostScript points (TeX
- big points). 72bp = 72.27pt = 1in.
-
-DESIGNBP
- The designsize of the font, again in PostScript points. This
- should match the value in the TFM file TFMNAME. Thus, for `cmr10',
- it should be `9.96265'.
-
-HEX-START
- The character code of the first character used from the font,
- specified as two ASCII hexadecimal characters, e.g., `4b' or `4B'
- for `K'.
-
-HEX-BITSTRING
- An arbitrary number of ASCII hexadecimal digits specifying which
- characters following (and including) HEX-START are used. This is
- treated as a bitmap. For example, if your figure used the single
- letter `K', you would use `4b:8' for HEX-START and HEX-BITSTRING.
- If it used `KLMNP', you would use `4b:f4'.
-
-
- MetaPost's output figures contain lines like this for bitmap fonts
-used in a MetaPost label (*note MetaPost: (web2c)MetaPost.).
-
-
-File: dvips.info, Node: Header files, Next: Literal PS, Prev: PostScript figures, Up: Interaction with PostScript
-
-5.2 PostScript header files
-===========================
-
-"Header files" are bits of PostScript included in the output file;
-generally they provide support for special features, rather than
-producing any printed output themselves. You can explicitly request
-downloading header files if necessary for some figure, or to achieve
-some special effect.
-
- Dvips includes some headers on its own initiative, to implement
-features such as PostScript font reencoding, bitmap font downloading,
-handling of `\special''s, and so on. These standard headers are the
-`.pro' files (for "prologue") in the installation directory
-`$(psheaderdir)'; they are created from the `.lpro' ("long prologue")
-files in the distribution by stripping comments, squeezing blank lines,
-etc., for maximum efficiency. If you want to peruse one of the
-standard header files, read the `.lpro' version.
-
- The PostScript dictionary stack will be at the `userdict' level when
-header files are included.
-
-* Menu:
-
-* Including headers from TeX::
-* Including headers from the command line::
-* Headers and memory usage::
-
-
-File: dvips.info, Node: Including headers from TeX, Next: Including headers from the command line, Up: Header files
-
-5.2.1 Including headers from TeX
---------------------------------
-
-In order to get a particular graphic file to work, a certain font or
-header file might need to be sent first. The Dvips program provides
-support for this with the `header' `\special'. For instance, to ensure
-that `foo.ps' gets downloaded:
-
- \special{header=foo.ps}
-
- As another example, if you have some PostScript code that uses a
-PostScript font not built into your printer, you must download it to the
-printer. If the font isn't used elsewhere in the document, Dvips can't
-know you've used it, so you must include it in the same way, as in:
-
- \special{header=putr.pfa}
-
-to include the font definition file for Adobe Utopia Roman.
-
- The `header' also special allows for specifying some additional code
-that should be inserted into the PostScript document before and after
-the file itself, as follows:
-
- \special{header={foo.ps} pre={pre code} post={post code}}
-
- This will insert `pre code' just before `foo.ps' and `post code'
-just after. It is required to use the (balanced) braces in _all_ of
-the arguments, including the `header', when using this extended syntax.
-
- This allows, for instance, dynamic headers, where some of the content
-depends on settings from the user in (La)TeX. Another application is
-the inclusion of graphics inside the PostScript header, so that they
-can be reused throughout the document, as with logs. That avoids
-including the same graphic several times. This is implemented in the
-`graphics/graphicx-psmin' package.
-
- This extended syntax has one additional feature. When Dvips finds the
-extended syntax, it will also look in the installed `tex/' tree(s) for
-the header file (`foo.ps' in our example), and not only in the current
-directory and dvips tree as the original syntax does. This is because
-common graphics may well come with packages which are installed in the
-`tex/' tree.
-
-
-File: dvips.info, Node: Including headers from the command line, Next: Headers and memory usage, Prev: Including headers from TeX, Up: Header files
-
-5.2.2 Including headers from the command line
----------------------------------------------
-
-You can include headers when you run Dvips, as well as from your
-document (see the previous section). To do this, run Dvips with the
-option `-P HEADER'; this will read the file `config.HEADER', which in
-turn can specify a header file to be downloaded with the `h' option.
-*Note Configuration file commands::. These files are called
-`HEADER.cfg' on MS-DOS.
-
- You can arrange for the same file to serve as a `-P' config file and
-the downloadable header file, by starting the lines of PostScript code
-with a space, leaving only the `h' line and any comments starting in
-the first column. As an example, see `contrib/volker/config.*'
-(`contrib/volker/*.cfg' on MS-DOS). (These files also perform useful
-functions: controlling duplex/simplex mode on duplex printers, and
-setting various screen frequencies; `contrib/volker/README' explains
-further.)
-
-
-File: dvips.info, Node: Headers and memory usage, Prev: Including headers from the command line, Up: Header files
-
-5.2.3 Headers and memory usage
-------------------------------
-
-Dvips tries to avoid overflowing the printer's memory by splitting the
-output files into "sections" (see the `-i' option in *Note Option
-details::). Therefore, for all header files, Dvips debits the printer
-VM budget by some value. If the header file has, in its leading
-commentary a line of the form
-
- %%VMusage: MIN MAX
-
-then MAX is used. If there is no `%%VMusage' line, then the size (in
-bytes) of the header file is used as an approximation.
-
- Illustrations (figure files) are also checked for `%%VMusage' line.
-
-
-File: dvips.info, Node: Literal PS, Next: Hypertext, Prev: Header files, Up: Interaction with PostScript
-
-5.3 Literal PostScript
-======================
-
-You can include literal PostScript code in your document in several
-ways.
-
-* Menu:
-
-* " special:: To include inline PostScript code.
-* ps special:: Inline PostScript without save/restore.
-* PostScript hooks:: Specifying code to run in the PS interpreter.
-* Literal headers:: Literal PostScript for the whole document.
-* Literal examples:: Neat example.
-
-
-File: dvips.info, Node: " special, Next: ps special, Up: Literal PS
-
-5.3.1 `"' special: Literal PostScript
--------------------------------------
-
-For simple graphics, or just for experimentation, literal PostScript
-code can be included. Simply use a `\special' beginning with a double
-quote character `"'; there is no matching closing `"'.
-
- For instance, the following (simple) graphic:
-
- [ picture of a grey triangle ]
-
-was created by typing:
-
- \vbox to 100bp{\vss % a bp is the same as a PostScript unit
- \special{" newpath 0 0 moveto 100 100 lineto 394 0 lineto
- closepath gsave 0.8 setgray fill grestore stroke}}
-
- You are responsible for leaving space for such literal graphics, as
-with the `\vbox' above.
-
-
-File: dvips.info, Node: ps special, Next: PostScript hooks, Prev: " special, Up: Literal PS
-
-5.3.2 `ps' special
-------------------
-
-Generally, Dvips encloses specials in a PostScript save/restore pair,
-guaranteeing that the special will have no effect on the rest of the
-document. The `ps' special, however, allows you to insert literal
-PostScript instructions without this protective shield; you should
-understand what you're doing (and you shouldn't change the PostScript
-graphics state unless you are willing to take the consequences). This
-command can take many forms because it has had a torturous history; any
-of the following will work:
-
- \special{ps:TEXT}
- \special{ps::TEXT}
- \special{ps::[begin]TEXT}
- \special{ps::[end]TEXT}
-
-(with longer forms taking precedence over shorter forms, when they are
-present). `ps::' and `ps::[end]' do no positioning, so they can be
-used to continue PostScript literals started with `ps:' or
-`ps::[begin]'.
-
- In addition, the variant
-
- \special{ps: plotfile FILENAME}
-
-inserts the contents of FILENAME verbatim into the output (except for
-omitting lines that begin with %). An example of the proper use of
-literal specials can be found in the file `rotate.tex', which makes it
-easy to typeset text turned in multiples of 90 degrees.
-
-
-File: dvips.info, Node: Literal headers, Next: Literal examples, Prev: PostScript hooks, Up: Literal PS
-
-5.3.3 Literal headers: `!' `\special'
--------------------------------------
-
-You can download literal PostScript header code in your TeX document,
-for use with (for example) literal graphics code that you include later.
-The text of a `\special' beginning with an `!' is copied into the
-output file. A dictionary `SDict' will be current when this code is
-executed; Dvips arranges for `SDict' to be first on the dictionary
-stack when any PostScript graphic is included, whether literally (the
-`"' special) or through macros (e.g., `epsf.tex').
-
- For example:
-
- \special{! /reset { 0 0 moveto} def}
-
-
-File: dvips.info, Node: PostScript hooks, Next: Literal headers, Prev: ps special, Up: Literal PS
-
-5.3.4 PostScript hooks
-----------------------
-
-Besides including literal PostScript at a particular place in your
-document (as described in the previous section), you can also arrange to
-execute arbitrary PostScript code at particular times while the
-PostScript is printing.
-
- If any of the PostScript names `bop-hook', `eop-hook', `start-hook',
-or `end-hook' are defined in `userdict', they will be executed at the
-beginning of a page, end of a page, start of the document, and end of a
-document, respectively.
-
- When these macros are executed, the default PostScript coordinate
-system and origin is in effect. Such macros can be defined in headers
-added by the `-h' option or the `header=' special, and might be useful
-for writing, for instance, `DRAFT' across the entire page, or, with the
-aid of a shell script, dating the document. These macros are executed
-outside of the save/restore context of the individual pages, so it is
-possible for them to accumulate information, but if a document must be
-divided into sections because of memory constraints, such added
-information will be lost across section breaks.
-
- The single argument to `bop-hook' is the physical page number; the
-first page gets zero, the second one, etc. `bop-hook' must leave this
-number on the stack. None of the other hooks are passed arguments.
-
- As an example of what can be done, the following special will write
-a light grey `DRAFT' across each page in the document:
-
- \special{!userdict begin /bop-hook{gsave 200 30 translate
- 65 rotate /Times-Roman findfont 216 scalefont setfont
- 0 0 moveto 0.7 setgray (DRAFT) show grestore}def end}
-
- Using `bop-hook' or `eop-hook' to preserve information across pages
-breaks compliance with the Adobe document structuring conventions, so
-if you use any such tricks, you may also want to use the `-N' option to
-turn off structured comments (such as `%%Page'). Otherwise, programs
-that read your file will assume its pages are independent.
-
-
-File: dvips.info, Node: Literal examples, Prev: Literal headers, Up: Literal PS
-
-5.3.5 Literal examples
-----------------------
-
-To finish off this section, the following examples of literal PostScript
-are presented without explanation:
-
- \def\rotninety{\special{ps:currentpoint currentpoint translate 90
- rotate neg exch neg exch translate}}\font\huge=cmbx10 at 14.4truept
- \setbox0=\hbox to0pt{\huge A\hss}\vskip16truept\centerline{\copy0
- \special{ps:gsave}\rotninety\copy0\rotninety\copy0\rotninety
- \box0\special{ps:grestore}}\vskip16truept
-
- [ There are 4 `A' characters, each rotated 90 degrees about a
-common center point ]
-
- \vbox to 2truein{\special{ps:gsave 0.3 setgray}\hrule height 2in
- width\hsize\vskip-2in\special{ps:grestore}\font\big=cminch\big
- \vss\special{ps:gsave 1 setgray}\vbox to 0pt{\vskip2pt
- \line{\hss\hskip4pt NEAT\hss}\vss}\special{ps:0 setgray}%
- \hbox{\raise2pt\line{\hss NEAT\hss}\special{ps:grestore}}\vss}
-
- [ There is a big gray box with the word `NEAT' inside in big letters
-]
-
- Some caveats are in order, however. Make sure that each `gsave' is
-matched with a `grestore' on the same page. Do not use `save' and
-`restore'; they can interact with the PostScript generated by Dvips if
-care is not taken. Try to understand what the above macros are doing
-before writing your own. The `\rotninety' macro especially has a
-useful trick that appears again and again.
-
-
-File: dvips.info, Node: Hypertext, Prev: Literal PS, Up: Interaction with PostScript
-
-5.4 HyperTeXt
-=============
-
-Dvips has support for producing hypertext PostScript documents. If you
-specify the `-z' option, the `html:' specials described below will be
-converted into `pdfmark' PostScript operators to specify links.
-Without `-z', `html:' specials are ignored.
-
- The resulting PostScript can then be processed by a distiller
-program to make a PDF file. (It can still be handled by ordinary
-PostScript interpreters as well.) Various versions of both PC and Unix
-distillers are supported; Ghostscript includes limited distiller support
-(*note Ghostscript installation::).
-
- Macros you can use in your TeX document to insert the specials in the
-first place are available from `CTAN:/support/hypertex'. For CTAN
-info, *note unixtex.ftp: (kpathsea)unixtex.ftp.
-
- This hypertext support (and original form of the documentation) was
-written by Mark Doyle and Tanmoy Bhattacharya as the `dvihps' program.
-You can retrieve their software and additional documentation via the
-CTAN reference above. You may also be interested in the Java previewer
-IDVI, available at `http://www.win.tue.nl/~dickie/idvi', and/or in
-`http://www.emrg.com/texpdf.html', which describes the process of
-making PDF files from TeX files in more detail.
-
- Mail archives for the original project are at
-`http://math.albany.edu:8800/hm/ht/'.
-
-* Menu:
-
-* Hypertext caveats:: Font quality, missing character psi.
-* Hypertext specials:: The details on the specials.
-
-
-File: dvips.info, Node: Hypertext caveats, Next: Hypertext specials, Up: Hypertext
-
-5.4.1 Hypertext caveats
------------------------
-
-If you intend to go all the way to PDF, you may want to use the standard
-35 PostScript fonts exclusively, since other fonts are embedded as
-bitmaps by default. The Adobe PDF readers are extremely slow when
-dealing with bitmap fonts and the results look terrible on the screen.
-Printouts will probably look fine, but may not take full advantage of a
-high-resolution printer. Alternatively, you can have your fonts
-embedded as Type 1 scalable outlines. The resulting PostScript files
-may be larger, but can be effectively rasterized at any resolution.
-They can also be converted to PDF files that can be used effectively at
-any screen or printer resolution.
-
- To get the TeX fonts embedded in the PostScript file as Type 1 fonts,
-add `-Ppdf' to the dvips command line switches. The printout for a run
-should look something like this:
-
- dvips report -Ppdf -o report.ps
- This is dvips(k) 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com)
- ' TeX output 2001.06.15:0837' -> report.ps
- <tex.pro><alt-rule.pro><texc.pro><texps.pro><special.pro>.
- <cmbx9.pfb><cmsy6.pfb><cmsy7.pfb><cmr5.pfb><cmex10.pfb><cmr9.pfb>
- <cmmi7.pfb><cmsy10.pfb><cmmib10.pfb><cmmi10.pfb><cmti10.pfb>
- <cmr7.pfb><cmbx10.pfb><cmr10.pfb><cmti9.pfb><cmr12.pfb><cmbx12.pfb>
- [1] [2<mean1.ps>] [3<bounce1-00.ps>] [4]
-
- An entry like "<cmr10.pfb>" indicates success: dvips found the
-Computer Modern Roman 10 point font in a PostScript Font Binary file,
-translated it to an ASCII encoding, and embedded it. You can confirm
-this by examining the PostScript output file, looking for the section
-starting `%%BeginFont: CMR10' followed by an entry `/FontType 1 def'.
-
- The `-Ppdf' option requires that the relevant outline (`.pfa' or
-`.pfb') files be installed (*note Font concepts::). For example, the
-`cmr10' file might be in
-`/usr/share/texmf/fonts/type1/bluesky/cm/cmr10.pfb'. Your TeX
-distribution may make those fonts available in a separate optional
-package (e.g., `tetex-extra' in Debian). Failing that, commercial
-versions of the Computer Modern fonts are available from Blue Sky;
-public domain versions - in particular, the lm fonts, and the cm-super
-fonts, are available from CTAN sites (for CTAN info, *note unixtex.ftp:
-(kpathsea)unixtex.ftp.).
-
- You can convert a PostScript file to PDF using `distill', which
-comes with Adobe Acrobat, or `ps2pdf', which comes with Ghostscript.
-The `ps2pdf' that comes with `Ghostscript' version 6.0 or earlier will
-not embed Type 1 fonts. Current recommendations are GNU Ghostscript
-6.51 or Aladdin Ghostscript 7.0. You can check the fonts in a PDF file
-with Acrobat Reader by selecting the menu entries `File|Document
-Info|Fonts'.
-
- Also, the Adobe distillers prior to 2.1 drop trailing space
-characters (character code 32) from strings. Unfortunately, the
-PostScript fonts use this character code for characters other than
-space (notably the Greek letter psi in the `Symbol' font), and so these
-characters are dropped. This bug is fixed in version 2.1.
-
- If you can't upgrade, One workaround is to change all the trailing
-blanks in strings to a character code that isn't in the font. This works
-because the default behavior is to substitute a blank for a missing
-character, i.e., the distiller is fooled into substituting the right
-character. For instance, with the Blue Sky fonts, you can globally
-replace ` )' with `\200)' (with `sed', for example) and get the desired
-result. With the public domain fonts, you will probably have to use a
-character code in the range 128 to 191 since these fonts duplicate the
-first 32 characters starting at 192 to avoid MS-DOS problems.
-
- For more information on the use of TeX to produce PDF files, see the
-article "Creating quality Adobe PDF files from TeX with DVIPS" by
-Kendall Whitehouse of Adobe. Adobe seems not to offer the article any
-more, but copies are available elsewhere:
- `http://www.math.hawaii.edu/~ralph/MathOnWeb/TeXPDF.html'
- `http://www.utdallas.edu/~cantrell/online/543e.html'
-
- You may also want to check "Notes on converting (La)TeX documents to
-robust PDF using Rokicki's dvips and Acrobat Distiller" by Timothy P.
-Van Zandt:
-`http://www.emrg.com/texpdf.htmlhttp://zandtwerk.insead.fr/tex2pdf.html'.
-
-
-File: dvips.info, Node: Hypertext specials, Prev: Hypertext caveats, Up: Hypertext
-
-5.4.2 Hypertext specials
-------------------------
-
-Current support for the World Wide Web in the TeX system does not
-involve modifying TeX itself. We need only define some specials;
-Arthur Smith (<apsmith@aps.org>), Tanmoy Bhattacharya, and Paul
-Ginsparg originally proposed and implemented the following:
- html:<a href="XURL">
- html:<a name="NAME">
- html:</a>
- html:<img src="XURL">
- html:<base href="XURL">
-
- Like all TeX `\special''s, these produce no visible output, and are
-uninterpreted by TeX itself. They are instructions to DVI processors
-only.
-
- Here, XURL is a standard WWW uniform resource locator (URL),
-possibly extended with a `#TYPE.STRING' construct, where TYPE is
-`page', `section', `equation', `reference' (for bibliographic
-references), `figure', `table', etc. For example,
- \special{html:<a href="http://www.maths.tcd.ie/~tim/ch1.dvi#equation.1.1">}
- is a link to equation (1.1) in an example document by Tim Murphy.
-
- See the URL
-`http://www.w3.org/hypertext/WWW/Addressing/Addressing.html' for a
-precise description of base URL's.
-
- Descriptions of the `\special''s:
-`href'
- Creates links in your TeX document. For example:
- \special{html:<a href="http://www.tug.org/">}\TeX\ Users
- Group\special{html:</a>}
- The user will be able to click on the text `TeX Users Group' while
- running Xdvi and get to the TUG home page. (By the way, this is
- for illustration. In practice, you most likely want to use macros
- to insert the `\special' commands; reference above.)
-
-`name'
- Defines URL targets in your TeX documents, so links can be
- resolved. For example:
- \special{html:<a name="paradise">}Paradise\special{html:</a>}
- is exactly where you are right now.
- This will resolve an `href="#paradise"'. You'll also have to
- change the catcode of `#', etc. It's usually easiest to use
- existing macro packages which take care of all the details, such as
- `hyperref' for LaTeX. The HyperTeX FAQ
- (http://arxiv.org/hypertex/) has more information.
-
-`img'
- Links to an arbitrary external file. Interactively, a viewer is
- spawned to read the file according to the file extension and your
- `mailcap' file (see the Xdvi documentation).
-
-`base'
- Defines a base URL that is prepended to all the `name' targets.
- Typically unnecessary, as the name of the DVI file being read is
- used by default.
-
- The `img' and `base' tags are not yet implemented in Dvips or the
-NeXTSTEP DVI viewer.
-
-
-File: dvips.info, Node: PostScript fonts, Next: Color, Prev: Interaction with PostScript, Up: Top
-
-6 PostScript fonts
-******************
-
-Dvips supports the use of PostScript fonts in TeX documents. To use a
-PostScript font conveniently, you need to prepare a corresponding
-virtual font; the program Afm2tfm, supplied with Dvips, helps with that.
-
- All the necessary support for the standard 35 PostScript fonts
-(`AvantGarde-Book' through `ZapfDingbats'), plus other freely or
-commonly available PostScript fonts is available along with Dvips. To
-use these fonts, you need do nothing beyond what is mentioned in the
-installation procedure (*note Installation::). This chapter is
-therefore relevant only if you are installing new PostScript fonts not
-supplied with Dvips. (Or if you're curious.)
-
-* Menu:
-
-* Font concepts:: Metrics, glyphs, virtual fonts, and encodings.
-* Making a font available:: Installing and using a PostScript font.
-* Invoking afm2tfm:: Creating TFM and AFM files for a virtual font.
-* psfonts.map:: Defining available PostScript fonts.
-
-
-File: dvips.info, Node: Font concepts, Next: Making a font available, Up: PostScript fonts
-
-6.1 Font concepts
-=================
-
-The information needed to typeset using a particular font is contained
-in two files: a "metric file" that contains shape-independent
-information and a "glyph file" that contains the actual shapes of the
-font's characters. A "virtual font" is an optional additional file
-that can specify special ways to construct the characters. TeX itself
-(or LaTeX) look only at the metric file, but DVI drivers such as Dvips
-look at all three of these files.
-
- An "encoding file" defines the correspondence between the code
-numbers of the characters in a font and their descriptive names. Two
-encoding files used together can describe a reencoding that rearranges,
-i.e., renumbers, the characters of a font.
-
-* Menu:
-
-* Metric files:: Shape-independent font information.
-* Glyph files:: Character shapes.
-* Virtual fonts:: Constructing one font from others.
-* Encodings:: Character codes and character names.
-* PostScript typesetting:: How PostScript typesets a character.
-
-
-File: dvips.info, Node: Metric files, Next: Glyph files, Up: Font concepts
-
-6.1.1 Metric files
-------------------
-
-A "metric file" describes properties of the font that are independent
-of what the characters actually look like. Aside from general
-information about the font itself, a metric file has two kinds of
-information: information about individual characters, organized by
-character code, and information about sequences of characters.
-
- The per-character information specifies the width, height, depth, and
-italic correction of each character in the font. Any might be zero.
-
- In addition to information on individual characters, the metric file
-specifies "kerning", i.e., adding or removing space between particular
-character pairs. It further specifies "ligature" information: when a
-sequence of input characters should be typeset as a single (presumably
-different) "ligature" character. For example, it's traditional for the
-input `fi' to be typeset as `fi', not as `fi' (with the dot of the `i'
-colliding with `f'). (In English, the only common ligatures are fi,
-fl, ff, ffi, and ffl.)
-
- Different typesetting systems use different metric file formats:
-
- * Each Postscript font has an "Adobe font metrics" (`.afm') file.
- These files are plain text, so you can inspect them easily. You
- can get AFM files for Adobe's fonts from
- `ftp://ftp.adobe.com/pub/adobe/Fonts/AFMs'.
-
- * TeX uses "TeX font metrics" (`.tfm') files. When you say `\font =
- FONT' in your TeX document, TeX reads a file named `FONT.tfm'.
- (Well, except for the `texfonts.map' feature; *note Fontmap:
- (kpathsea)Fontmap.). TeX can then calculate the space occupied by
- characters from the font when typesetting. In addition, the DVI
- drivers you use to print or view the DVI file produced by TeX may
- need to look at the TFM file.
-
- TFM files are binary (and hence are typically much smaller than AFM
- files). You can use the `tftopl' program (*note tftopl invocation:
- (web2c)tftopl invocation.) that comes with TeX to transform a TFM
- file into a human-readable "property list" (`.pl') file. You can
- also edit a PL file and transform it back to a TeX-readable TFM
- with the companion program `pltotf' (*note pltotf invocation:
- (web2c)pltotf invocation.). Editing metrics by hand is not
- something you're likely to want to do often, but the capability is
- there.
-
- * ATM and other typesetting systems use "printer font metric"
- (`.pfm') files. These are binary files. They are irrelevant in the
- TeX world, and not freely available, so we will not discuss them
- further.
-
-
- The Afm2tfm program distributed with Dvips converts an AFM file to a
-TFM file and performs other useful transformations as well. *Note
-Invoking afm2tfm::.
-
-
-File: dvips.info, Node: Glyph files, Next: Virtual fonts, Prev: Metric files, Up: Font concepts
-
-6.1.2 Glyph files
------------------
-
-Although a metric file (see the previous section) contains information
-about the spatial and other properties of the character at position 75,
-say, it contains nothing about what the character at position 75
-actually looks like. The glyphs--the actual shapes of the letterforms
-in a font--are defined by other files, which we call glyph files. TeX
-itself only reads the TFM file for a font; it does not need to know
-character shapes.
-
- A "glyph file" is a file that defines the shapes of the characters
-in a font. The shapes can be defined either by outlines or by bitmaps.
-
- PostScript fonts are defined as "outline fonts": Each character in
-the font is defined by giving the mathematical curves (lines, arcs, and
-splines) that define its contours. Different sizes of a character are
-generated by linearly scaling a single shape. For example, a 10-point
-`A' is simply half the size of a 20-point `A'. Nowadays, outline fonts
-usually also contain "hints"--additional information to improve the
-appearance of the font at small sizes or low resolutions.
-
- Although various kinds of PostScript outline fonts exist, by far the
-most common, and the only one we will consider, is called "Type 1".
-The glyph files for Postscript Type 1 fonts typically have names ending
-in `.pfa' ("printer font ASCII") or `.pfb' ("printer font binary").
-
- In contrast, glyph files for Computer Modern and the other standard
-TeX fonts are "bitmap fonts", generated from Metafont (`.mf')
-descriptions. The Metafont program distributed with TeX generates
-bitmaps from these descriptions.
-
- The glyph files for TeX bitmap fonts are usually stored in "packed
-font" (PK) files. The names of these files end in `.NNNpk', where NNN
-is the resolution of the font in dots per inch. For example,
-`cmr10.600pk' contains the bitmaps for the `cmr10' font at a resolution
-of 600dpi. (On DOS filesystems, it's more likely `dpi600\cmr10.pk'.)
-
- Metafont actually outputs "generic font" (GF) files, e.g.,
-`cmr10.600gf', but the GF files are usually converted immediately to PK
-format (using the `gftopk' utility that comes with TeX) since PK files
-are smaller and contain the same information. (The GF format is a
-historical artifact.)
-
-
-File: dvips.info, Node: Virtual fonts, Next: Encodings, Prev: Glyph files, Up: Font concepts
-
-6.1.3 Virtual fonts
--------------------
-
-A "virtual font" is constructed by extracting characters from one or
-more existing fonts and rearranging them, or synthesizing new characters
-in various ways. The explanation in this manual is intended to suffice
-for understanding enough about virtual fonts to use them with Dvips. It
-isn't a reference manual on virtual fonts. For more information: The
-primary document on virtual fonts is Donald E. Knuth, `TUGboat' 11(1),
-Apr. 1990, pp. 13-23, "Virtual Fonts: More Fun for Grand Wizards"
-(`CTAN:/info/virtual-fonts.knuth'; for CTAN info, *note unixtex.ftp:
-(kpathsea)unixtex.ftp.). (Don't be intimidated by the subtitle.)
-
- A virtual font (`.vf') file specifies, for each character in the
-virtual font, a recipe for typesetting that character. A VF file, like
-a TFM file, is in a compressed binary format. The `vftovp' and
-`vptovf' programs convert a VF file to a human-readable VPL (virtual
-property list) format and back again. *Note vftovp invocation:
-(web2c)vftovp invocation, and *Note vptovf invocation: (web2c)vptovf
-invocation.
-
- In the case of a PostScript font F being used in a straightforward
-way, the recipe says: character I in the VF font is character J in font
-F. The font F is called a "base font". For example, the VF file could
-remap the characters of the PostScript font to the positions where TeX
-expects to find them. *Note Encodings::.
-
- Since TeX reads only TFM files, not VF's, each VF must have a
-corresponding TFM for use with TeX. This corresponding TFM is created
-when you run `vptovf'.
-
- You can "expand" virtual fonts into their base fonts with DVIcopy
-(*note dvicopy invocation: (web2c)dvicopy invocation.). This is useful
-if you are using a DVI translator that doesn't understand vf's itself.
-
-
-File: dvips.info, Node: Encodings, Next: PostScript typesetting, Prev: Virtual fonts, Up: Font concepts
-
-6.1.4 Encodings
----------------
-
-Every font, whatever its type, has an "encoding", that specifies the
-correspondence between "logical" characters and character codes. For
-example, the ASCII encoding specifies that the character numbered 65
-(decimal) is an uppercase `A'. The encoding does not specify what the
-character at that position looks like; there are lots of ways to draw an
-`A', and a glyph file (*note Glyph files::) tells how. Nor does it
-specify how much space that character occupies; that information is in a
-metric file (*note Metric files::).
-
- TeX implicitly assumes a particular encoding for the fonts you use
-with it. For example, the plain TeX macro `\'', which typesets an
-acute accent over the following letter, assumes the acute accent is at
-position 19 (decimal). This happens to be true of standard TeX fonts
-such as Computer Modern, as you might expect, but it is not true of
-normal PostScript fonts.
-
- It's possible but painful to change all the macros that assume
-particular character positions. A better solution is to create a new
-font with the information for the acute accent at position 19, where
-TeX expects it to be. *Note Making a font available::.
-
- PostScript represents encodings as a sequence of 256 character names
-called an "encoding vector". An "encoding file" (`.enc') gives such a
-vector, together with ligature and kerning information (with which we
-are not concerned at the moment). These encoding files are used by the
-Afm2tfm program. Encoding files are also downloaded to the PostScript
-interpreter in your printer if you use one of them in place of the
-default encoding vector for a particular PostScript font.
-
- Examples of encodings: the `dvips.enc' encoding file that comes with
-Dvips in the `reencode' directory is a good (but not perfect)
-approximation to the TeX encoding for TeX's Computer Modern text fonts.
-This is the encoding of the fonts that originated with Dvips, such as
-`ptmr.tfm'. The distribution includes many other encoding files; for
-example, `8r.enc', which is the base font for the current PostScript
-font distribution, and three corresponding to the TeX mathematics
-fonts: `texmext.enc' for math extensions, `texmital.enc' for math
-italics, and `texmsym.enc' for math symbols.
-
-
-File: dvips.info, Node: PostScript typesetting, Prev: Encodings, Up: Font concepts
-
-6.1.5 How PostScript typesets a character
------------------------------------------
-
-The output of Dvips is a program in the PostScript language that
-instructs your (presumably PostScript-capable) printer how to typeset
-your document by transforming it into toner on paper. Your printer, in
-turn, contains a PostScript interpreter that carries out the
-instructions in this typesetting program.
-
- The program must include the definition of any PostScript fonts that
-you use in your document. Fonts built into your printer (probably the
-standard 35: `Times-Roman', `ZapfDingbats', ...) are defined within the
-interpreter itself. Other fonts must be downloaded as pfa or pfb files
-(*note Glyph files::) from your host (the computer on which you're
-running Dvips).
-
- You may be wondering exactly how a PostScript interpreter figures out
-what character to typeset, with this mass of metrics, glyphs, encodings,
-and other information. (If you're not wondering, skip this section ...)
-
- The basic PostScript operator for imaging characters is `show'.
-Suppose you've asked TeX to typeset an `S'. This will eventually wind
-up in the Dvips output as the equivalent of this PostScript operation:
-
- (S) show
-
-Here is how PostScript typesets the `S':
-
- 1. PostScript interpreters use ASCII; therefore `S' is represented as
- the integer 83. (Any of the 256 possible characters representable
- in a standard 8-bit byte can be typeset.)
-
- 2. A PostScript "dictionary" is a mapping of names to arbitrary
- values. A font, to the interpreter, is a dictionary which
- contains entries for certain names. (If these entries are
- missing, the interpreter refuses to do anything with that font.)
-
- PostScript has a notion of "the current font"--whatever font is
- currently being typeset in.
-
- 3. One of the mandatory entries in a font dictionary is `Encoding',
- which defines the encoding vector (*note Encodings::) for that
- font. This vector of 256 names maps each possible input character
- to a name.
-
- 4. The interpreter retrieves the entry at position 83 of the encoding
- vector. This value is a PostScript name: `/S'.
-
- 5. For Type 1 fonts (we're not going to discuss anything else), the
- interpreter now looks up `/S' as a key in a dictionary named
- `CharStrings', another mandatory entry in a font dictionary.
-
- 6. The value of `S' in `CharStrings' is the equivalent of a series of
- standard PostScript commands like `curveto', `lineto', `fill', and
- so on. These commands are executed to draw the character. There
- can also be "hint information" that helps adapt the character to
- low-resolution rasters. (*Note Glyph files::.) The commands are
- actually represented in a more compact way than standard
- PostScript source; see the Type 1 book for details.
-
-
- This method for typesetting characters is used in both Level 1 and
-Level 2 PostScript. See the PostScript reference manuals for more
-information.
-
-
-File: dvips.info, Node: Making a font available, Next: Invoking afm2tfm, Prev: Font concepts, Up: PostScript fonts
-
-6.2 Making a PostScript font available
-======================================
-
-To make a PostScript font available in a TeX document, you need to
-install the font on your system and then define it within the document.
-Once you have installed the font, of course, it is available for any
-document thereafter and you don't need to reinstall it. You must have
-an AFM file for any font you install. Unless the font is built into your
-printer, you must also have a PFA or PFB file.
-
- In the following examples, we use the font `Times-Roman' to
-illustrate the process. But you should use the prebuilt fonts for Times
-and the other standard fonts, rather than rebuilding them. The prebuilt
-fonts are made using a more complicated process than that described
-here, to make them work as well as possible with TeX. So following the
-steps in this manual will not generate files identical to the
-distributed ones. *Note PostScript font installation::, for pointers to
-the prebuilt fonts.
-
- Installation of a PostScript font proceeds in three steps. *Note
-Font concepts::, for descriptions of the various files involved.
-
- 1. Run `afm2tfm' to create a TFM file for the original font, and the
- VPL form of the virtual font:
- afm2tfm Times-Roman -v ptmr rptmr
-
- 2. Run `vptovf' to generate a VF and TFM file for the virtual font
- from the VPL file:
- vptovf ptmr.vpl ptmr.vf ptmr.tfm
-
- 3. Insert an entry for the font in `psfonts.map' (*note
- psfonts.map::):
- rptmr Times-Roman <ptmr8a.pfa
-
- 4. Install the files in the standard locations, as in:
- cp ptmr.vf FONTDIR/vf/...
- cp *ptmr.tfm FONTDIR/tfm/...
- cp ptmr.afm FONTDIR/afm/...
- cp ptmr.pf? FONTDIR/type1/...
-
- The simplest invocation of Afm2tfm to make virtual fonts goes
-something like this:
-
- afm2tfm Times-Roman -v ptmr rptmr
-
-This reads the file `Times-Roman.afm', and produces two files as
-output, namely the virtual property list'file `ptmr.vpl', and the "raw"
-font metric file `rptmr.tfm'. To use the font in TeX, you first run
-
- vptovf ptmr.vpl ptmr.vf ptmr.tfm
-
-You should then install the virtual font file `ptmr.vf' where Dvips
-will see it and install `ptmr.tfm' and `rptmr.tfm' where TeX and Dvips
-will see them.
-
- Using these raw fonts is not recommended; there are no raw fonts in
-the prebuilt PostScript fonts distributed along with Dvips. But
-nevertheless, that's how Afm2tfm presently operates, so that's what we
-document here. The `r' prefix convention is likewise historical
-accident.
-
- You can also make more complex virtual fonts by editing `ptmr.vpl'
-before running `vptovf'; such editing might add the uppercase Greek
-characters in the standard TeX positions, for instance. (This has
-already been done for the prebuilt fonts.)
-
- Once the files have been installed, you're all set. You can now do
-things like this in TeX:
- \font\myfont = ptmr at 12pt
- \myfont Hello, I am being typeset in 12-point Times-Roman.
-
- Thus, we have two fonts, one actual (`rptmr', which is analogous to
-the font in the printer) and one virtual (`ptmr', which has been
-remapped to the standard TeX encoding (almost)), and has typesetting
-know-how added. You could also say
-
- \font\raw = rptmr at 10pt
-
-and typeset directly with that, but then you would have no ligatures or
-kerning, and you would have to use Adobe character positions for special
-letters like the ligature `AE'. The virtual font `ptmr' not only has
-ligatures and kerning, and most of the standard accent conventions of
-TeX, it also has a few additional features not present in the Computer
-Modern fonts. For example, it includes all the Adobe characters (such
-as the Polish ogonek and the French guillemots). The only things you
-lose from ordinary TeX text fonts are the dotless `j' (which can be
-hacked into the VPL file with literal PostScript specials if you have
-the patience) and uppercase Greek letters (which just don't exist
-unless you buy them separately). *Note Reencoding with Afm2tfm::.
-
- As a final step you need to record information about both the virtual
-font and the original font (if you ever might want to use it) in the
-`psfonts.map' file (*note psfonts.map::). For our example, you'd
-insert the following into `psfonts.map':
- rptmr Times-Roman <ptmr8a.pfa
-
-Of course, `Times-Roman' is already built in to most every printer, so
-there's no need to download any Type 1 file for it. But if you are
-actually following these instructions for new fonts, most likely they
-are not built in to the printer.
-
- These PostScript fonts can be scaled to any size. Go wild! Using
-PostScript fonts, however, does use up a great deal of the printer's
-memory and it does take time. You may find downloading bitmap fonts
-(possibly compressed, with the `Z' option) to be faster than using the
-built-in PostScript fonts.
-
-
-File: dvips.info, Node: Invoking afm2tfm, Next: psfonts.map, Prev: Making a font available, Up: PostScript fonts
-
-6.3 Invoking Afm2tfm
-====================
-
-The Afm2tfm program converts an AFM file for a PostScript font to a TFM
-file and a VPL file for a corresponding virtual font (or, in its
-simplest form, to a TFM file for the PostScript font itself). The
-results of the conversion are affected by the command-line options and
-especially by the reencodings you can specify with those options. You
-can also obtain special effects such as an oblique font.
-
- An alternative to Afm2tfm for creating virtual fonts is Alan
-Jeffrey's `fontinst' program, available from
-`CTAN:fonts/utilities/fontinst' (for CTAN info, *note unixtex.ftp:
-(kpathsea)unixtex.ftp.).
-
-* Menu:
-
-* Changing font encodings:: Reencoding with -t, -p, -T.
-* Special font effects:: Oblique fonts, small caps, and such.
-* Afm2tfm options:: afm2tfm command-line options.
-
-
-File: dvips.info, Node: Changing font encodings, Next: Special font effects, Up: Invoking afm2tfm
-
-6.3.1 Changing font encodings
------------------------------
-
-Afm2tfm allows you to specify a different encoding for a PostScript font
-(for a general introduction to encodings, *note Encodings::). The `-t'
-options changes the TeX encoding, `-p' changes the PostScript encoding,
-and `-T' changes both simultaneously, as detailed in the sections below.
-
-* Menu:
-
-* Changing TeX encodings:: Where TeX finds a character.
-* Changing PostScript encodings:: Where PostScript finds a character.
-* Changing both encodings:: One and the same, simultaneously.
-* Reencoding with Afm2tfm:: Problems with the default encoding.
-* Encoding file format:: Syntax of an encoding file.
-
-
-File: dvips.info, Node: Changing TeX encodings, Next: Changing PostScript encodings, Up: Changing font encodings
-
-6.3.1.1 `-t': Changing TeX encodings
-....................................
-
-To build a virtual font with Afm2tfm, you specify the `-v' or `-V'
-option. You can then specify an encoding for that virtual font with `-t
-TEX-ENC'. (`-t' is ignored if neither `-v' nor `-V' is present.) Any
-ligature and kerning information you specify in TEX-ENC will be used in
-the VPL, in addition to the ligature and kerning information from the
-AFM file.
-
- If the AFM file has no entry for a character specified in TEX-ENC,
-that character will be omitted from the output VPL.
-
- The `-t' option is likely to be needed when you have a PostScript
-font corresponding to a TeX font other than a normal text font such as
-Computer Modern. For instance, if you have a PostScript font that
-contains math symbols, you'd probably want to use the encoding in the
-`texmsym.enc' file supplied with Dvips. (For a start; to actually get
-usable math fonts, you have to define much more than just an encoding.)
-
-
-File: dvips.info, Node: Changing PostScript encodings, Next: Changing both encodings, Prev: Changing TeX encodings, Up: Changing font encodings
-
-6.3.1.2 `-p': Changing PostScript encodings
-...........................................
-
-By default, Afm2tfm uses the encoding it finds in the AFM file. You can
-specify a different PostScript encoding with `-p PS-ENC'. This makes
-the raw TFM file (the one output by Afm2tfm) have the encoding
-specified in the encoding file PS-ENC. Any ligature or kern
-information specified in PS-ENC is ignored by Afm2tfm, since ligkern
-info is always omitted from the raw TFM.
-
- If you use this option, you must also arrange to download PS-ENC as
-part of any document that uses this font. You do this by adding a line
-like the following one to `psfonts.map' (*note psfonts.map::):
- zpopr Optima "MyEncoding ReEncodeFont" <myenc.enc
-
- Using `-p' is the only way to access characters in a PostScript font
-that are neither encoded in the AFM file nor constructed from other
-characters. For instance, Adobe's `Times-Roman' font contains the
-extra characters `trademark' and `registered' (among others); these can
-only be accessed through such a PostScript reencoding.
-
- The `8r' base encoding used for the current PostScript font
-distribution does do this reencoding, for precisely this reason.
-
-
-File: dvips.info, Node: Changing both encodings, Next: Reencoding with Afm2tfm, Prev: Changing PostScript encodings, Up: Changing font encodings
-
-6.3.1.3 `-T': Changing both TeX and PostScript encodings
-........................................................
-
-The option `-T ENC-FILE' is equivalent to `-p ENC-FILE -t ENC-FILE'.
-If you make regular use of a private non-standard reencoding `-T' is
-usually a better idea than the individual options, to avoid unexpected
-inconsistencies in mapping otherwise. An example of when you might use
-this option is a dingbats font: when you have a TeX encoding that is
-designed to be used with a particular PostScript font.
-
-
-File: dvips.info, Node: Reencoding with Afm2tfm, Next: Encoding file format, Prev: Changing both encodings, Up: Changing font encodings
-
-6.3.1.4 Reencoding with Afm2tfm
-...............................
-
-The Afm2tfm program creates the TFM and VF files for the virtual font
-corresponding to a PostScript font by "reencoding" the PostScript font.
-Afm2tfm generates these files from two encodings: one for TeX and one
-for PostScript. The TeX encoding is used to map character numbers to
-character names while the PostScript encoding is used to map each
-character name to a possibly different number. In combination, you can
-get access to any character of a PostScript font at any position for
-TeX typesetting.
-
- In the default case, when you specify none of the `-t', `-p', or
-`-T' options, Afm2tfm uses a default TeX encoding (which mostly
-corresponds to the Computer Modern text fonts) and the PostScript
-encoding found in the AFM file being read. The reencoding is also
-sometimes called a "remapping".
-
- For example, the default encodings reencode the acute accent in two
-steps: first the default TeX encoding maps the number 19 to the
-character name `acute'; then the default PostScript encoding, as found
-in the AFM file for an ordinary PostScript font, maps the character
-name `acute' to the number 194. (The PostScript encoding works in
-reverse, by looking in the encoding vector for the name and then
-yielding the corresponding number.) The combined mapping of 19 to 194
-shows up explicitly in the VF file and also implicitly in the fact that
-the properties of PostScript character 194 appear in position 19 of the
-TFM file for the virtual font.
-
- The default encoding of the distributed fonts (e.g., `ptmr.tfm')
-mostly follows plain TeX conventions for accents. The exceptions: the
-Hungarian umlaut (which is at position `0x7D' in `cmr10', but position
-`0xCD' in `ptmr'); the dot accent (at positions `0x5F' and `0xC7',
-respectively); and the Scandinavian A ring `\AA', whose definition
-needs different tweaking. In order to use these accents with
-PostScript fonts or in math mode when `\textfont0' is a PostScript
-font, you will need to use the following definitions. These
-definitions will not work with the Computer Modern fonts for the
-relevant accents. They are already part of the distributed
-`psfonts.sty' for use with LaTeX.
-
- \def\H#1{{\accent"CD #1}}
- \def\.#1{{\accent"C7 #1}}
- \def\dot{\mathaccent"70C7 }
- \newdimen\aadimen
- \def\AA{\leavevmode\setbox0\hbox{h}\aadimen\ht0
- \advance\aadimen-1ex\setbox0\hbox{A}\rlap{\raise.67\aadimen
- \hbox to \wd0{\hss\char'27\hss}}A}
-
- As a kind of summary, here are the `CODINGSCHEME's that result from
-the various possible choices for reencoding.
-
-default encoding
- (CODINGSCHEME TeX text + AdobeStandardEncoding)
-
-`-p dc.enc'
- (CODINGSCHEME TeX text + DCEncoding)
-
-`-t dc.enc'
- (CODINGSCHEME DCEncoding + AdobeStandardEncoding)
-
-`-T dc.enc'
- (CODINGSCHEME DCEncoding + DCEncoding)
-
-
-The `CODINGSCHEME' line appears in the VPL file but is ignored by Dvips.
-
-
-File: dvips.info, Node: Encoding file format, Prev: Reencoding with Afm2tfm, Up: Changing font encodings
-
-6.3.1.5 Encoding file format
-............................
-
-Afm2tfm's encoding files have the same format as an encoding vector in a
-PostScript font. Here is a skeletal example:
-
- % Comments are ignored, unless the first word after the percent sign
- % is `LIGKERN'; see below.
- /MyEncoding [ % exactly 256 entries follow, each with a leading `/'
- /Alpha /Beta /Gamma /Delta ...
- /A /B ... /Z
- ... /.notdef /xfooaccent /yfooaccent /zfooaccent
- ] def
-
- These encoding files are downloaded as part of changing the encoding
-at the PostScript level (see the previous section).
-
- Comments, which start with a percent sign and continue until the end
-of the line, are ignored unless they start with `LIGKERN' (see below).
-
- The first non-comment word of the file must start with a forward
-slash `/' (i.e., a PostScript literal name) and defines the name of the
-encoding. The next word must be an left bracket `['. Following that
-must be precisely 256 character names; use `/.notdef' for any that you
-want to leave undefined. Then there must be a matching right bracket
-`]'. A final `def' token is optional. All names are case-sensitive.
-
- Any ligature or kern information is given as a comment. If the first
-word after the `%' is `LIGKERN', then the entire rest of the line is
-parsed for ligature and kern information. This ligature and kern
-information is given in groups of words: each group is terminated by a
-space and a semicolon and (unless the semicolon is at the end of a
-line) another space.
-
- In these `LIGKERN' statements, three types of information may be
-specified. These three types are ligature pairs, kerns to ignore, and
-the character value of this font's boundary character.
-
- Throughout a `LIGKERN' statement, the boundary character is
-specified as `||'. To set the font's boundary character value for TeX:
-
- % LIGKERN || = 39 ;
-
- To indicate a kern to remove, give the names of the two characters
-(without the leading slash) separated by `{}', as in `one {} one ;'.
-This is intended to be reminiscent of the way you might use `{}' in a
-TeX file to turn off ligatures or kerns at a particular location.
-Either or both of the character names can be given as `*', which is a
-wild card matching any character; thus, all kerns can be removed with
-`* {} * ;'.
-
- To specify a ligature, specify the names of the pair of characters,
-followed by the ligature operation (as in Metafont), followed by the
-replacing character name. Either (but not both) of the first two
-characters can be `||' to indicate a word boundary.
-
- The most common operation is `=:' meaning that both characters are
-removed and replaced by the third character, but by adding the `|'
-character on either side of the `=:', you can retain either or both of
-the two leading characters. In addition, by suffixing the ligature
-operation with one or two `>' signs, you can make the ligature scanning
-operation skip that many resulting characters before proceeding. This
-works just like in Metafont. For example, the `fi' ligature is
-specified with `f i =: fi ;'. A more convoluted ligature is `one one
-|=:|>> exclam ;' which separates a pair of adjacent `1''s with an
-exclamation point, and then skips over two of the resulting characters
-before continuing searching for ligatures and kerns. You cannot give
-more >'s than |'s in an ligature operation, so there are a total of
-eight possibilities:
-
- =: |=: |=:> =:| =:|> |=:| |=:|> |=:|>>
-
- The default set of ligatures and kerns built in to Afm2tfm is:
-
- % LIGKERN question quoteleft =: questiondown ;
- % LIGKERN exclam quoteleft =: exclamdown ;
- % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;
- % LIGKERN quoteleft quoteleft =: quotedblleft ;
- % LIGKERN quoteright quoteright =: quotedblright ;
- % LIGKERN space {} * ; * {} space ; 0 {} * ; * {} 0 ;
- % LIGKERN 1 {} * ; * {} 1 ; 2 {} * ; * {} 2 ; 3 {} * ; * {} 3 ;
- % LIGKERN 4 {} * ; * {} 4 ; 5 {} * ; * {} 5 ; 6 {} * ; * {} 6 ;
- % LIGKERN 7 {} * ; * {} 7 ; 8 {} * ; * {} 8 ; 9 {} * ; * {} 9 ;
-
-
-File: dvips.info, Node: Special font effects, Next: Afm2tfm options, Prev: Changing font encodings, Up: Invoking afm2tfm
-
-6.3.2 Special font effects
---------------------------
-
-Besides the reencodings described in the previous section, Afm2tfm can
-do other manipulations. (Again, it's best to use the prebuilt fonts
-rather than attempting to remake them.)
-
- `-s SLANT' makes an obliqued variant, as in:
-
- afm2tfm Times-Roman -s .167 -v ptmro rptmro
-
-This creates `ptmro.vpl' and `rptmro.tfm'. To use this font, put the
-line
-
- rptmro Times-Roman ".167 SlantFont"
-
-into `psfonts.map'. Then `rptmro' (our name for the obliqued Times)
-will act as if it were a resident font, although it is actually
-constructed from Times-Roman via the PostScript routine `SlantFont'
-(which will slant everything 1/6 to the right, in this case).
-
- Similarly, you can get an expanded font with
-
- afm2tfm Times-Roman -e 1.2 -v ptmrre rptmrre
-
-and by recording the pseudo-resident font
-
- rptmrre Times-Roman "1.2 ExtendFont"
-
-in `psfonts.map'.
-
- You can also create a small caps font with a command such as
-
- afm2tfm Times-Roman -V ptmrc rptmrc
-
-This will generate a set of pseudo-small caps mapped into the usual
-lowercase positions and scaled down to 0.8 of the normal cap
-dimensions. You can also specify the scaling as something other than
-the default 0.8:
-
- afm2tfm Times-Roman -c 0.7 -V ptmrc rptmrc
-
- It is unfortunately not possible to increase the width of the small
-caps independently of the rest of the font. If you want a really
-professional looking set of small caps, you need to acquire a small caps
-font.
-
- To change the `PaintType' in a font from filled (0) to outlined (2),
-you can add `"/PaintType 2 store"' to `psfonts.map', as in the
-following:
-
- rphvrl Helvetica "/PaintType 2 store"
-
- Afm2tfm writes to standard output the line you need to add to
-`psfonts.map' to use that font, assuming the font is resident in the
-printer; if the font is not resident, you must add the `<FILENAME'
-command to download the font. Each identical line only needs to be
-specified once in the `psfonts.map' file, even though many different
-fonts (small caps variants, or ones with different output encodings)
-may be based on it.
-
-
-File: dvips.info, Node: Afm2tfm options, Prev: Special font effects, Up: Invoking afm2tfm
-
-6.3.3 Afm2tfm options
----------------------
-
-Synopsis:
- afm2tfm [OPTION]... AFMFILE[.afm] [TFMFILE[.tfm]]
-
- Afm2tfm reads AFMFILE and writes a corresponding (but raw) TFM file.
-If TFMFILE is not supplied, the base name of the AFM file is extended
-with `.tfm' to get the output filename.
-
- The simplest example:
-
- afm2tfm Times-Roman rptmr
-
-The TFM file thus created is "raw" because it omits ligature and kern
-information, and does no character remapping; it simply contains the
-character information in the AFM file in TFM form, which is the form
-that TeX understands. The characters have the same code in the TFM
-file as in the AFM file. For text fonts, this means printable ASCII
-characters will work ok, but little else, because standard PostScript
-fonts have a different encoding scheme than the one that plain TeX
-expects (*note Encodings::). Although both schemes agree for the
-printable ASCII characters, other characters such as ligatures and
-accents vary. Thus, in practice, it's almost always desirable to create
-a virtual font as well with the `-v' or `-V' option. *Note Making a
-font available::.
-
- The command line options to Afm2tfm:
-
-`-c RATIO'
- See `-V'; overrides the default ratio of 0.8 for the scaling of
- small caps.
-
-`-e RATIO'
- Stretch characters horizontally by RATIO; if less than 1.0, you
- get a condensed font.
-
-`-O'
- Output all character codes in the `vpl' file as octal numbers, not
- names; this is useful for symbol or other special-purpose fonts
- where character names such as `A' have no meaning.
-
-`-p PS-ENC'
- Use PS-ENC for the destination (PostScript) encoding of the font;
- PS-ENC must be mentioned as a header file for the font in
- `psfonts.map'. *Note Changing PostScript encodings::.
-
-`-s SLANT'
- Slant characters to the right by SLANT. If SLANT is negative, the
- letters slope to the left (or they might be upright if you start
- with an italic font).
-
-`-t TEX-ENC'
- Use TEX-ENC for the target (TeX) encoding of the font. Ligature
- and kern information may also be specified in FILE. FILE is not
- mentioned in `psfonts.map'.
-
-`-T PS-TEX-ENC'
- Use PS-TEX-ENC for both the PostScript and target TeX encodings of
- the font. Equivalent to `-p FILE -t FILE'.
-
-`-u'
- Use only those characters specified in the TeX encoding, and no
- others. By default, Afm2tfm tries to include all characters in the
- input font, even those not present in the TeX encoding (it puts
- them into otherwise-unused positions, arbitrarily).
-
-`-v VPL-FILE'
- Output a VPL (virtual property list) file, as well as a TFM file.
-
-`-V VPL-FILE'
- Same as `-v', but the virtual font generated is a pseudo small caps
- font obtained by scaling uppercase letters by 0.8 to typeset
- lowercase. This font handles accented letters and retains proper
- kerning.
-
-
-File: dvips.info, Node: psfonts.map, Prev: Invoking afm2tfm, Up: PostScript fonts
-
-6.4 `psfonts.map': PostScript font catalog
-==========================================
-
-The `psfonts.map' file associates a PostScript font with related files
-and constructs. Each line has the format:
-
- FILENAME POSTSCRIPT-NAME OPTIONS
-
- For example, the line
- rpstrn StoneInformal <StoneInformal.pfb
- causes Dvips to download `StoneInformal.pfb' if your document (just
-as if it were a header file, *note Header files::) uses the font
-`StoneInformal'.
-
- If the `j' config file or command-line option is enabled,
-`StoneInformal.pfb' will be "partially downloaded"--only those
-characters your document actually uses will be extracted and downloaded,
-and the remainder discarded. *Note Option details::.
-
- Filenames of fonts that are partially downloaded are surrounded by
-curly braces (`{...}') in the progress report Dvips writes to standard
-output. Wholly-downloaded fonts appear inside angle brackets
-(`<...>'), like other downloaded files.
-
- Adobe Multiple Master fonts, such as Minion, cannot be partially
-downloaded. To partially download in general, but avoid partial
-downloading for individual fonts, use `<<' instead `<':
- pmnr8r Minion <<Minion.pfb
-
- You can generate transformed fonts with a line like this:
- rpstrc StoneInformal <StoneInformal.pfb ".8 ExtendFont"
-
-*Note Special font effects::, for a complete list of font effects.
-
- You can change the encoding of the Type 1 font at the PostScript
-level with a `ReEncodeFont' instruction, plus the name of the encoding
-file. This allows you access to characters that may be present in the
-Type 1 font file, but not encoded by default--most of the preaccented
-characters, for example. An example:
- pstrn8r StoneInformal "TeXBase1Encoding ReEncodeFont" <8r.enc <pstrn8a.pfb
-
- The `8r' encoding mentioned here has been designed to serve as a
-base for all downloadable fonts; it allows access to all the characters
-commonly present in a Type 1 font. For more details, see the `8r.enc'
-source file that comes with (and is installed with) Dvips.
-
- You may notice that the same syntax is used for downloading encoding
-vectors and Type 1 font files. To make your intentions clear, you can
-also use `<[' to explicitly indicate you are downloading an encoding
-vector, as in:
- pstrn8r StoneInformal "TeXBase1Encoding ReEncodeFont" <[8r.enc <pstrn8a.pfb
-
- If the filename of your encoding vector does not end in `.enc', and
-you are using partial font downloading, you must use the `<[' syntax,
-or Dvips will not download the font properly.
-
- Similarly, the name of the Type 1 font file itself must have
-extension `.pfa' or `.pfb' for partial downloading to work properly.
-
- When using PFB files, Dvips is smart enough to unpack the binary PFB
-format into printable ASCII so there is no need to perform this
-conversion yourself. In addition, Dvips scans the font to determine its
-memory usage, just as it does for other header files (*note Header
-files::).
-
- Here is a brief summary of how `psfonts.map' is read:
-
- 1. If a line is empty or begins with a space, percent, asterisk,
- semicolon, or hash mark, it is ignored.
-
- 2. Otherwise, the line is separated into words, where words are
- separated by spaces or tabs, except that if a word begins with a
- double quote, it extends until the next double quote or the end of
- the line.
-
- 3. If a word starts with `<<', it is taken as a font file to be
- wholly downloaded. Use this to avoid partial downloading, as
- described above.
-
- 4. If a word starts with `<[', it is taken as an encoding file to be
- downloaded. Use this if the name of the encoding file does end in
- `.enc', also as described above.
-
- 5. If a word starts with a `<' character, it is treated as a header
- file that needs to be downloaded. If the name ends in `.pfa' or
- `.pfb', it is taken as Type 1 font file that will be partially
- downloaded if the `j' option is in effect. There can be more than
- one such header for a given font. If a `<' is a word by itself,
- the next word is taken as the name of the header file.
-
- 6. If a word starts with a `"' character, it is taken as PostScript
- code used in generating that font, and is inserted into the output
- verbatim at the appropriate point. (And the double quotes
- beginning and ending the word are removed.)
-
- 7. Otherwise the word is a name. The first such name is the TFM file
- that a virtual font file can refer to. If there is a second name,
- it is used as the PostScript name; if there is only one name, it
- is used for both the TeX name and the PostScript name.
-
-
-
-File: dvips.info, Node: Color, Next: Index, Prev: PostScript fonts, Up: Top
-
-7 Color
-*******
-
-Dvips supports one-pass multi-color printing of TeX documents on any
-color PostScript device. Initially added by Jim Hafner, IBM Research,
-<hafner@almaden.ibm.com>, the color support has gone through many
-changes by Tomas Rokicki. Besides the source code support itself, there
-are additional TeX macro files: `colordvi.tex' and `blackdvi.tex', and
-corresponding `.sty' versions for use with LaTeX.
-
- In this section we describe the use of color from the document
-preparer's point of view and then add some instructions on installation
-for the TeX administrator.
-
-* Menu:
-
-* Color macro files:: TeX macro definitions.
-* User-definable colors:: Adding your own colors.
-* Color subtleties:: Subtleties in using color.
-* Ted Turner:: Printing in black/white after colorizing.
-* Color device configuration:: Configuring Dvips for color devices.
-* Color support details:: Color support details
-
-
-File: dvips.info, Node: Color macro files, Next: User-definable colors, Up: Color
-
-7.1 Color macro files
-=====================
-
-All the color macro commands are defined in `colordvi.tex' (or
-`colordvi.sty'). To access these macros simply add to the top of your
-plain TeX file the command:
- \input colordvi
- For (the obsolete) LaTeX 2.09, add the `colordvi' style option as in:
- \documentstyle[12pt,colordvi]{article}
- For LaTeX 2e, these examples are not applicable. Instead, please see
-the documentation for the graphics package, available from
-`CTAN:doc/latex/graphics/'. See also `CTAN:doc/epslatex.ps'.
-
- These macros provide two basic kinds of color macros: ones for local
-color changes (a few words, a single symbol) and one for global color
-changes (the whole document). All the color names use a mixed case
-scheme to avoid conflicts with other macros. There are 68 predefined
-colors, with names taken primarily from the Crayola crayon box of 64
-colors, and one pair of macros for the user to set his own color pattern
-(*note User-definable colors::). You can browse the file
-`colordvi.tex' for a list of the predefined colors. The comments in
-this file also show a rough correspondence between the crayon names and
-Pantones.
-
- A local color command has the form
-
- \COLORNAME{this is the color COLORNAME}
-
-where COLORNAME is the name of a predefined color, e.g., `Blue'. As
-shown, these macros take one argument, the text to print in the
-specified color. This can be used for nested color changes since it
-restores the original color state when it completes. For example:
-
- This text is normal but here we are \Red{switching to red,
- \Blue{nesting blue}, recovering the red} and back to original.
-
-The color nesting level has no hard limit, but it is not advisable to
-nest too deeply lest you and the reader lose track of the color history.
-
- The global color command has the form
-
- \textCOLORNAME
-
-These macros take no arguments and changes the default color from that
-point on to COLORNAME. This of course can be overridden globally by
-another such command or locally by local color commands. For example,
-expanding on the example above, we might have
-
- \textGreen
- This text is green but here we are \Red{switching to red,
- \Blue{nesting blue}, recovering the red} and back to
- original green.
- \textCyan
- The text from here on will be cyan until
- \Yellow{locally changed to yellow}. Now we are back to cyan.
-
- The color commands will even work in math mode and across math mode
-boundaries. This means that if you have a color before going into math
-mode, the mathematics will be set in that color as well. In alignment
-environments like `\halign', `tabular' or `eqnarray', local color
-commands cannot extend beyond the alignment characters.
-
- Because local color commands respect only some environment and
-delimiter changes besides their own, care must be taken in setting
-their scope. It is best not to have them stretch too far.
-
- At the present time there are no macros for color environments in
-LaTeX which might have a larger range. This is primarily to keep the
-TeX and LaTeX use compatible.
-
-
-File: dvips.info, Node: User-definable colors, Next: Color subtleties, Prev: Color macro files, Up: Color
-
-7.2 User-definable colors
-=========================
-
-There are two ways for the user to specify colors not already defined.
-For local changes, there is the command `\Color' which takes two
-arguments. The first argument is four numbers between zero and one and
-specifies the intensity of cyan, magenta, yellow and black (CMYK) in
-that order. The second argument is the text that should appear in the
-given color. For example, suppose you want the words "this color is
-pretty" to appear in a color which is 50% cyan, 85% magenta, 40% yellow
-and 20% black. You would use the command
-
- \Color{.5 .85 .4 .2}{this color is pretty}
-
- For global color changes, there is a command `\textColor' which
-takes one argument, the CMYK quadruple of relative color intensities.
-For example, if you want the default color to be as above, then the
-command
-
- \textColor{.5 .85 .4 .2}
- The text from now on will be this pretty color
-
-will do the trick.
-
- Making a global color change in the midst of nested local colors is
-highly discouraged. Consequently, Dvips will give you warning message
-and do its best to recover by discarding the current color history.
-
-
-File: dvips.info, Node: Color subtleties, Next: Ted Turner, Prev: User-definable colors, Up: Color
-
-7.3 Color subtleties
-====================
-
-Color macros are defined via `\special' keywords. As such, they are
-put in the `.dvi' file only as explicit message strings to the driver.
-The (unpleasant) result is that certain unprotected regions of the text
-can have unwanted color side effects. For example, if a color region
-is split by TeX across a page boundary, then the footers of the current
-page (e.g., the page number) and the headers of the next page can
-inherit that color. To avoid this effect globally, users should make
-sure that these special regions of the text are defined with their own
-local color commands. For example, to protect the header and footer in
-plain TeX, use
-
- \headline{\Black{My Header}}
- \footline{\Black{\hss\tenrm\folio\hss}}
-
- This warning also applies to figures and other insertions, so be
-careful!
-
- Of course, in LaTeX, this is much more difficult to do because of the
-complexity of the macros that control these regions. This is
-unfortunate but inevitable, because TeX and LaTeX were not written with
-color in mind.
-
- Even when writing your own macros, much care must be taken. The
-macros that `colorize' a portion of the text work prefix the text work
-by outputting one `\special' command to turn the color on before the
-text, and outputting another `\special' command afterwards to restore
-the original color. It is often useful to ensure that TeX is in
-horizontal mode before the first special command is issued; this can be
-done by prefixing the color command with `\leavevmode'.
-
-
-File: dvips.info, Node: Ted Turner, Next: Color device configuration, Prev: Color subtleties, Up: Color
-
-7.4 Printing in black/white after colorizing
-============================================
-
-If you have a TeX or LaTeX document written with color macros and you
-want to print it in black and white there are two options. On all
-(good) PostScript devices, printing a color file will print in
-corresponding gray levels. This is useful to get a rough idea of the
-colors without using expensive color printing devices. The second
-option is to replace the call to input `colordvi.tex' with
-`blackdvi.tex' (and similarly for the `.sty' files). So in the above
-example, replacing the word `colordvi' with `blackdvi' suffices.
-`blackdvi.tex' defines the color macros as no-ops, and so will produce
-normal black/white printing. By this simple mechanism, the user can
-switch to all black/white printing without having to ferret out the
-color commands. Also, some device drivers, particularly non-PostScript
-ones like screen previewers, will simply ignore the color commands and
-so print in black/white. Hopefully, in the future screen previewers
-for color displays will be compatible with some form of color support.
-
-
-File: dvips.info, Node: Color device configuration, Next: Color support details, Prev: Ted Turner, Up: Color
-
-7.5 Color device configuration
-==============================
-
-To configure Dvips for a particular color device you need to fine tune
-the color parameters to match your device's color rendition. To do
-this, you will need a Pantone chart for your device. The header file
-`color.lpro' shows a (rough) correspondence between the Crayola crayon
-names and the Pantone numbers and also defines default CMYK values for
-each of the colors. Note that these colors must be defined in CMYK
-terms and not RGB, as Dvips outputs PostScript color commands in CMYK.
-This header file also defines (if they are not known to the
-interpreter) the PostScript commands `setcmykcolor' and
-`currentcmykcolor' in terms of a RGB equivalent so if your device only
-understands RGB, there should be no problem.
-
- The parameters set in this file were determined by comparing the
-Pantone chart of a Tektronix Phaser printer with the actual Crayola
-Crayons. Because these were defined for a particular device, the
-actual color rendition on your device may be very different. There are
-two ways to adjust this. One is to use the PAntone chart for your
-device to rewrite `color.lpro' prior to compilation and installation.
-A better alternative, which supports multiple devices, is to add a
-header file option in the configuration file (*note Configuration file
-commands::) for each device that defines, in `userdict', the color
-parameters for those colors that need redefining.
-
- For example, if you need to change the parameters defining
-`Goldenrod' (approximately Pantone 109 on the Phaser) for your device
-`mycolordev', do the following. In the Pantone chart for your device,
-find the CMYK values for Pantone 109. Let's say they are `{\ 0 0.10
-0.75 0.03 }'. Then create a header file named `mycolordev.pro' with the
-commands
-
- userdict begin
- /Goldenrod { 0 0.10 0.75 0.03 setcmykcolor} bind def
-
-Finally, in `config.mycolordev' add the line
-
- h mycolordev.pro
-
-This will then define `Goldenrod' in your device's CMYK values in
-`userdict' which is checked before defining it in `TeXdict' by
-`color.pro'. (On MS-DOS, you will have to call this file
-`mycolordev.cfg'.)
-
- This mechanism, together with additions to `colordvi.tex' and
-`blackdvi.tex' (and the `.sty' files), can also be used to predefine
-other colors for your users.
-
-
-File: dvips.info, Node: Color support details, Prev: Color device configuration, Up: Color
-
-7.6 Color support details
-=========================
-
-To support color, Dvips recognizes a certain set of specials. These
-specials start with the keyword `color' or the keyword `background',
-followed by a color specification.
-
-* Menu:
-
-* Color specifications::
-* Color specials::
-
-
-File: dvips.info, Node: Color specifications, Next: Color specials, Up: Color support details
-
-7.6.1 Color specifications
---------------------------
-
-What is a color specification? One of three things. First, it might be
-a PostScript procedure as defined in a PostScript header file. The
-`color.pro' file defines 64 of these, including `Maroon'. This
-PostScript procedure must set the current color to be some value; in
-this case, `Maroon' is defined as `0 0.87 0.68 0.32 setcmykcolor'.
-
- The second possibility is the name of a color model (initially, one
-of `rgb', `hsb', `cmyk', or `gray') followed by the appropriate number
-of parameters. When Dvips encounters such a macro, it sends out the
-parameters first, followed by the string created by prefixing
-`TeXcolor' to the color model. Thus, the color specification `rgb 0.3
-0.4 0.5' would generate the PostScript code `0.3 0.4 0.5 TeXrgbcolor'.
-Note that the case of zero arguments is disallowed, as that is handled
-by the single keyword case (`Maroon') above, where no changes to the
-name are made before it is sent to the PostScript file.
-
- The third and final type of color specification is a double quote
-followed by any sequence of PostScript. The double quote is stripped
-from the output. For instance, the color specification `"AggiePattern
-setpattern' will set the `color' to the Aggie logo pattern (assuming
-such exists.)
-
-
-File: dvips.info, Node: Color specials, Prev: Color specifications, Up: Color support details
-
-7.6.2 Color specials
---------------------
-
-We will describe `background' first, since it is the simplest. The
-`background' keyword must be followed by a color specification. That
-color specification is used as a fill color for the background. The
-last `background' special on a page is the one that gets issued, and it
-gets issued at the very beginning of the page, before any text or
-specials are sent. (This is possible because the prescan phase of
-Dvips notices all of the color specials so that the appropriate
-information can be written out during the second phase.)
-
- The `color' special itself has three forms. The first is just
-`color' followed by a color specification. In this case, the current
-global color is set to that color; the color stack must be empty when
-such a command is executed.
-
- The second form is `color push' followed by a color specification.
-This saves the current color on the color stack and sets the color to be
-that given by the color specification. This is the most common way to
-set a color.
-
- The final version of the `color' special is just `color pop', with
-no color specification; this says to pop the color last pushed on the
-color stack from the color stack and set the current color to be that
-color.
-
- Dvips correctly handles these color specials across pages, even when
-the pages are repeated or reversed.
-
- These color specials can be used for things such as patterns or
-screens as well as simple colors. However, note that in the
-PostScript, only one color specification can be active at a time. For
-instance, at the beginning of a page, only the bottommost entry on the
-color stack is sent; also, when a color is popped, all that is done is
-that the color specification from the previous stack entry is sent. No
-`gsave' or `grestore' is used. This means that you cannot easily mix
-usage of the `color' specials for screens and colors, just one or the
-other. This may be addressed in the future by adding support for
-different categories of color-like state.
-
-
-File: dvips.info, Node: Index, Prev: Color, Up: Top
-
-Index
-*****
-
-
-* Menu:
-
-* ! special (literal PS header): Literal headers. (line 6)
-* ! starting output filename: Option details. (line 222)
-* " special (literal PostScript): " special. (line 6)
-* %%BoundingBox: Bounding box. (line 17)
-* %%Page, and multi-page information: PostScript hooks. (line 37)
-* %%Page, not generating: Option details. (line 197)
-* %%Page, removing: Option details. (line 153)
-* %%Page, required by Ghostview: Ghostscript installation.
- (line 17)
-* %%VMusage: Headers and memory usage.
- (line 12)
-* %*Font: Fonts in figures. (line 6)
-* (atend), bounding box specification: Bounding box. (line 28)
-* +PSMAPFILE: Configuration file commands.
- (line 101)
-* -: Option details. (line 11)
-* - as output filename: Option details. (line 222)
-* --help <1>: Option details. (line 15)
-* --help: Option summary. (line 7)
-* --version: Option details. (line 18)
-* -A: Option details. (line 27)
-* -a: Option details. (line 21)
-* -B: Option details. (line 37)
-* -b NUM: Option details. (line 31)
-* -C NUM: Option details. (line 46)
-* -c NUM: Option details. (line 41)
-* -c RATIO: Afm2tfm options. (line 33)
-* -D NUM: Option details. (line 58)
-* -d NUM: Option details. (line 52)
-* -E: Option details. (line 82)
-* -e NUM: Option details. (line 71)
-* -e RATIO: Afm2tfm options. (line 37)
-* -F: Option details. (line 110)
-* -f: Option details. (line 98)
-* -G: Option details. (line 117)
-* -h NAME: Option details. (line 121)
-* -i: Option details. (line 126)
-* -j for partial font downloading: Option details. (line 139)
-* -K: Option details. (line 153)
-* -k for cropmarks: Option details. (line 145)
-* -l [=]NUM: Option details. (line 162)
-* -M: Option details. (line 183)
-* -m: Option details. (line 171)
-* -mode: Option details. (line 174)
-* -mode MODE: Option details. (line 174)
-* -N: Option details. (line 197)
-* -n NUM: Option details. (line 194)
-* -noomega: Option details. (line 205)
-* -O: Afm2tfm options. (line 41)
-* -o NAME: Option details. (line 218)
-* -O X-OFFSET,Y-OFFSET: Option details. (line 234)
-* -p [=]NUM: Option details. (line 252)
-* -P PRINTER: Option details. (line 266)
-* -p PS-ENC <1>: Afm2tfm options. (line 46)
-* -p PS-ENC: Changing PostScript encodings.
- (line 6)
-* -pp FIRST-LAST: Option details. (line 261)
-* -pp RANGE: Option details. (line 261)
-* -PPRINTER, and config file searching: Configuration file searching.
- (line 27)
-* -q: Option details. (line 285)
-* -R: Option details. (line 292)
-* -r: Option details. (line 289)
-* -s: Option details. (line 298)
-* -S NUM: Option details. (line 305)
-* -s SLANT: Afm2tfm options. (line 51)
-* -T ENC-FILE: Changing both encodings.
- (line 6)
-* -T HSIZE,VSIZE: Option details. (line 321)
-* -t PAPERTYPE: Option details. (line 310)
-* -T PS-TEX-ENC: Afm2tfm options. (line 61)
-* -t TEX-ENC <1>: Afm2tfm options. (line 56)
-* -t TEX-ENC: Changing TeX encodings.
- (line 6)
-* -u: Afm2tfm options. (line 65)
-* -U: Option details. (line 334)
-* -u PSMAPFILE: Option details. (line 326)
-* -V: Option details. (line 345)
-* -v: Option details. (line 342)
-* -V VPL-FILE: Afm2tfm options. (line 74)
-* -v VPL-FILE: Afm2tfm options. (line 71)
-* -X NUM: Option details. (line 362)
-* -x NUM: Option details. (line 354)
-* -Y NUM: Option details. (line 369)
-* -z: Hypertext. (line 6)
-* -Z for compressing bitmap fonts: Option details. (line 378)
-* -z for recognizing hyperdvi: Option details. (line 372)
-* .afm Adobe metric files: Metric files. (line 26)
-* .dvipsrc, searched for: Configuration file searching.
- (line 14)
-* .enc extension for encoding vectors: psfonts.map. (line 55)
-* .lpro long prologue files: Header files. (line 12)
-* .mf Metafont source files: Glyph files. (line 30)
-* .NNNpk packed font bitmaps: Glyph files. (line 35)
-* .pfa extension required for partial downloading: psfonts.map.
- (line 59)
-* .pfa printer font ascii files: Glyph files. (line 25)
-* .pfb extension required for partial downloading: psfonts.map.
- (line 59)
-* .pfb printer font binary files: Glyph files. (line 25)
-* .pfm printer font metric files: Metric files. (line 49)
-* .pl property list files: Metric files. (line 39)
-* .pro prologue files: Header files. (line 12)
-* .tfm TeX font metric files: Metric files. (line 31)
-* /#copies: Option details. (line 31)
-* /magscale: EPSF scaling. (line 67)
-* 612 792 bounding box size: Bounding box. (line 43)
-* 8r encoding, and extra characters: Changing PostScript encodings.
- (line 24)
-* 8r font encoding: psfonts.map. (line 44)
-* 8r.enc: Encodings. (line 35)
-* < font downloading: psfonts.map. (line 11)
-* << whole font downloading: psfonts.map. (line 27)
-* <[ encoding vector downloading: psfonts.map. (line 49)
-* =: ligature operation: Encoding file format.
- (line 59)
-* @ paper size config command: Configuration file commands.
- (line 18)
-* \.: Reencoding with Afm2tfm.
- (line 44)
-* \AA: Reencoding with Afm2tfm.
- (line 44)
-* \COLORNAME: Color macro files. (line 31)
-* \dot: Reencoding with Afm2tfm.
- (line 44)
-* \epsffile macro: EPSF macros. (line 38)
-* \epsfsize: EPSF scaling. (line 29)
-* \epsfverbosetrue: EPSF macros. (line 46)
-* \epsfxsize: EPSF scaling. (line 14)
-* \epsfysize: EPSF scaling. (line 20)
-* \H: Reencoding with Afm2tfm.
- (line 44)
-* \includegraphics LaTeX macro: \includegraphics. (line 6)
-* \leavevmode: EPSF macros. (line 26)
-* \magnification: EPSF scaling. (line 63)
-* \rotninety: Literal examples. (line 27)
-* \textCOLORNAME: Color macro files. (line 46)
-* a config command (memory conservation): Configuration file commands.
- (line 21)
-* A ring, Scandinavian letter: Reencoding with Afm2tfm.
- (line 32)
-* a3 papertype: Option details. (line 310)
-* a4 paper size, as default: Config file paper sizes.
- (line 72)
-* a4 papertype: Option details. (line 310)
-* absolute filenames, disabling: Option details. (line 292)
-* absolute page number, and -l: Option details. (line 162)
-* absolute page number, and -p: Option details. (line 252)
-* accents, in wrong position: Reencoding with Afm2tfm.
- (line 32)
-* accents, wrong: Afm2tfm options. (line 17)
-* accuracy in positioning: Option details. (line 71)
-* Adobe fonts: PostScript font installation.
- (line 10)
-* Adobe fonts, installing: PostScript font installation.
- (line 19)
-* afm files: Metric files. (line 26)
-* afm2tfm <1>: Invoking afm2tfm. (line 6)
-* afm2tfm: Making a font available.
- (line 46)
-* afm2tfm options: Afm2tfm options. (line 6)
-* after header, inserting code: Including headers from TeX.
- (line 28)
-* Aladdin Ghostscript: Ghostscript installation.
- (line 6)
-* Anderson, Laurie: Hypertext specials. (line 42)
-* arcs: Glyph files. (line 17)
-* ASCII character codes, used by PostScript: PostScript typesetting.
- (line 31)
-* atend, bounding box specification: Bounding box. (line 28)
-* b config command (#copies): Configuration file commands.
- (line 24)
-* base: Hypertext specials. (line 57)
-* base encoding, recommended: psfonts.map. (line 44)
-* base fonts: Virtual fonts. (line 24)
-* bbfig: Bounding box. (line 37)
-* before header, inserting code: Including headers from TeX.
- (line 28)
-* Bhattacharya, Tanmoy: Hypertext. (line 21)
-* big points: Bounding box. (line 11)
-* Bigelow & Holmes fonts: PostScript font installation.
- (line 10)
-* binary files, not supported: Including graphics fails.
- (line 23)
-* bitmap fonts: Glyph files. (line 30)
-* Bitstream fonts, installing: PostScript font installation.
- (line 19)
-* bop undefined error: Printer errors. (line 6)
-* bop-hook <1>: PostScript hooks. (line 11)
-* bop-hook: EPSF scaling. (line 75)
-* bop-hook, and offset pages: Option details. (line 247)
-* boundary character: Encoding file format.
- (line 41)
-* bounding box, comment for: Bounding box. (line 6)
-* bounding box, defined: Bounding box. (line 11)
-* bounding box, determining: Bounding box. (line 37)
-* bounding box, finding tight: Option details. (line 82)
-* bounding box, inaccurate: EPSF clipping. (line 6)
-* bounding box, supplying to TeX <1>: EPSF macros. (line 26)
-* bounding box, supplying to TeX: \includegraphics. (line 36)
-* changing PostScript encodings: Changing PostScript encodings.
- (line 6)
-* changing TeX encodings: Changing TeX encodings.
- (line 6)
-* character definitions in PostScript: PostScript typesetting.
- (line 55)
-* character lookup procedure in PostScript: PostScript typesetting.
- (line 6)
-* CharStrings Type 1 dictionary: PostScript typesetting.
- (line 51)
-* clipping of EPSF: EPSF clipping. (line 6)
-* CODINGSCHEME: Reencoding with Afm2tfm.
- (line 52)
-* collated copies: Option details. (line 46)
-* color: Color. (line 6)
-* color configuration: Color device configuration.
- (line 6)
-* color macros: Color macro files. (line 6)
-* color names, mixed case: Color macro files. (line 16)
-* color nesting level: Color macro files. (line 39)
-* color separations: Option details. (line 31)
-* color specifications: Color specifications.
- (line 6)
-* color subtleties: Color subtleties. (line 6)
-* colors, user-definable: User-definable colors.
- (line 6)
-* command line, including headers from: Including headers from the command line.
- (line 6)
-* command-line options: Invoking Dvips. (line 6)
-* comments, in configuration files: Configuration file commands.
- (line 13)
-* comments, in encoding files: Encoding file format.
- (line 20)
-* comments, removing included: Option details. (line 153)
-* compilation: Installation. (line 6)
-* compressed PostScript: Dynamic creation of graphics.
- (line 6)
-* compressing bitmap fonts: Option details. (line 378)
-* Computer Modern in PostScript: Hypertext caveats. (line 6)
-* Computer Modern, encoding of: Encodings. (line 15)
-* condensed fonts: Afm2tfm options. (line 37)
-* config.proto: config.ps installation.
- (line 15)
-* config.ps: Option details. (line 266)
-* config.ps installation: config.ps installation.
- (line 6)
-* config.ps, searched for: Configuration file searching.
- (line 10)
-* configuration file options: Configuration file commands.
- (line 6)
-* configuration file paper size command: Config file paper sizes.
- (line 6)
-* configuration file path: Environment variables.
- (line 47)
-* configuration file searching: Configuration file searching.
- (line 6)
-* configuration files: Config files. (line 6)
-* configuration files, creating: config.ps installation.
- (line 6)
-* configuration files, prototype: config.ps installation.
- (line 15)
-* configuration, of color devices: Color device configuration.
- (line 6)
-* configuration, of Dvips: Installation. (line 6)
-* continuation lines, not supported: Configuration file commands.
- (line 13)
-* control-D: Option details. (line 110)
-* copies, collated: Option details. (line 46)
-* copies, duplicated page bodies: Option details. (line 31)
-* copies, uncollated: Option details. (line 41)
-* Crayola crayon box: Color macro files. (line 16)
-* crop.pro: Option details. (line 145)
-* cropmarks: Option details. (line 145)
-* current font, in PostScript: PostScript typesetting.
- (line 35)
-* D config command (dpi): Configuration file commands.
- (line 27)
-* dated output: PostScript hooks. (line 16)
-* datestamp, in output: Configuration file commands.
- (line 33)
-* debugging <1>: Option details. (line 52)
-* debugging: Diagnosing problems. (line 6)
-* debugging options: Debug options. (line 6)
-* default resolutions: Configuration file commands.
- (line 123)
-* default_texsizes Make variable: Configuration file commands.
- (line 139)
-* Deutsch, Peter: Ghostscript installation.
- (line 6)
-* device dependency, and virtual fonts: Configuration file commands.
- (line 162)
-* dictionary, CharStrings: PostScript typesetting.
- (line 51)
-* dictionary, PostScript language: PostScript typesetting.
- (line 35)
-* dictionary, SDict: Literal headers. (line 6)
-* dictionary, userdict: Header files. (line 21)
-* distillation, and -z: Option details. (line 372)
-* distiller, for PDF files: Hypertext. (line 11)
-* dot accent: Reencoding with Afm2tfm.
- (line 32)
-* double-sided printing: Option details. (line 37)
-* downloading fonts partially: psfonts.map. (line 17)
-* downloading PostScript fonts: psfonts.map. (line 6)
-* Doyle, Mark: Hypertext. (line 21)
-* draft copies: PostScript hooks. (line 16)
-* dual paper trays: Paper trays. (line 6)
-* duplex printers: Including headers from the command line.
- (line 13)
-* DVI magnification: EPSF scaling. (line 63)
-* dvihps, hyperdvi to PostScript: Hypertext. (line 21)
-* Dvips configuration file options: Configuration file commands.
- (line 6)
-* dvips.enc: Encodings. (line 35)
-* DVIPSFONTS: Environment variables.
- (line 17)
-* DVIPSHEADERS: Environment variables.
- (line 22)
-* DVIPSHEADERS, overrides H: Configuration file commands.
- (line 47)
-* DVIPSMAKEPK: Environment variables.
- (line 26)
-* DVIPSRC: Environment variables.
- (line 32)
-* DVIPSSIZES: Environment variables.
- (line 37)
-* DVIPSSIZES, overrides R: Configuration file commands.
- (line 136)
-* dynamic creation of graphics: Dynamic creation of graphics.
- (line 6)
-* e config command (maxdrift): Configuration file commands.
- (line 30)
-* E config command (shell escape): Configuration file commands.
- (line 33)
-* efficiency, and fonts: Making a font available.
- (line 104)
-* ehandler.ps: No output. (line 12)
-* embedding Type 1 fonts: Hypertext caveats. (line 6)
-* encoding changes: Changing font encodings.
- (line 6)
-* encoding file format: Encoding file format.
- (line 6)
-* encoding files: Encodings. (line 27)
-* Encoding Type 1 dictionary: PostScript typesetting.
- (line 43)
-* encoding vectors, defined: Encodings. (line 27)
-* encoding vectors, in Type 1 fonts: PostScript typesetting.
- (line 43)
-* encodings: Encodings. (line 6)
-* end-hook: PostScript hooks. (line 11)
-* environment variables: Environment variables.
- (line 6)
-* EOF: Option details. (line 110)
-* eop-hook: PostScript hooks. (line 11)
-* EPS, and Ghostview: Ghostscript installation.
- (line 17)
-* EPSF macros: EPSF macros. (line 6)
-* EPSF, generating: Option details. (line 82)
-* epsf.sty: EPSF macros. (line 15)
-* epsf.tex: EPSF macros. (line 13)
-* Epson printers: Ghostscript installation.
- (line 6)
-* error messages from printer: Printer errors. (line 6)
-* even pages only: Option details. (line 37)
-* examples of literal PostScript: Literal examples. (line 6)
-* expanded fonts <1>: psfonts.map. (line 32)
-* expanded fonts <2>: Afm2tfm options. (line 37)
-* expanded fonts: Special font effects.
- (line 24)
-* expansion, of virtual fonts: Virtual fonts. (line 34)
-* extended URL: Hypertext specials. (line 20)
-* ExtendFont: Special font effects.
- (line 28)
-* extra characters, accessing: Changing PostScript encodings.
- (line 18)
-* F config command (filter): Configuration file commands.
- (line 41)
-* f config command (filter): Configuration file commands.
- (line 41)
-* failure, and printer errors: Printer errors. (line 6)
-* failure, of long documents: Long documents fail. (line 6)
-* failure, to include graphics: Including graphics fails.
- (line 6)
-* failure, to print at all: No output. (line 6)
-* fallback resolutions: Configuration file commands.
- (line 123)
-* figures and fonts: Fonts in figures. (line 6)
-* figures, natural size: EPSF macros. (line 38)
-* figures, scaling: EPSF scaling. (line 6)
-* filter, running as a: Option details. (line 98)
-* first page printed: Option details. (line 252)
-* font concepts: Font concepts. (line 6)
-* font generation, avoiding: Option details. (line 183)
-* fontinst: Invoking afm2tfm. (line 13)
-* fonts, as header files: Including headers from TeX.
- (line 13)
-* fonts, changing encoding of: Changing font encodings.
- (line 6)
-* fonts, downloading: psfonts.map. (line 6)
-* fonts, expanded: Special font effects.
- (line 24)
-* fonts, in PostScript figures: Fonts in figures. (line 6)
-* fonts, installation of PostScript: PostScript font installation.
- (line 6)
-* fonts, installing: Making a font available.
- (line 6)
-* fonts, outlined: Special font effects.
- (line 50)
-* fonts, slanted: Special font effects.
- (line 6)
-* fonts, small caps: Special font effects.
- (line 34)
-* fonts, system PostScript: PostScript font installation.
- (line 24)
-* gf files: Glyph files. (line 41)
-* gftopk: Glyph files. (line 41)
-* Ghostscript installation: Ghostscript installation.
- (line 6)
-* ghostview: Ghostscript installation.
- (line 17)
-* Ghostview, and no N: Ghostscript installation.
- (line 17)
-* glyph files: Glyph files. (line 6)
-* GLYPHFONTS, overrides P: Configuration file commands.
- (line 110)
-* GNU Ghostscript: Ghostscript installation.
- (line 13)
-* gnuplot: Dynamic creation of graphics.
- (line 25)
-* graphics inclusion fails: Including graphics fails.
- (line 6)
-* gs installation: Ghostscript installation.
- (line 6)
-* gsave/grestore, and literal PS: Literal examples. (line 27)
-* gsftopk: Option details. (line 346)
-* h header downloading config command: Configuration file commands.
- (line 44)
-* H header path config command: Configuration file commands.
- (line 47)
-* Hafner, Jim: Color. (line 6)
-* header file, downloading: Option details. (line 121)
-* header files, defined: Header files. (line 6)
-* header path, defining: Configuration file commands.
- (line 47)
-* header=FILE \special: Including headers from TeX.
- (line 6)
-* headers and memory usage: Headers and memory usage.
- (line 6)
-* headers, including from the command line: Including headers from the command line.
- (line 6)
-* headers, including in TeX: Including headers from TeX.
- (line 6)
-* hints: PostScript typesetting.
- (line 55)
-* HP printers and Type 1 fonts: PostScript font installation.
- (line 69)
-* HP4Si printer and paper trays: Paper trays. (line 6)
-* href: Hypertext specials. (line 32)
-* html specials: Hypertext. (line 6)
-* html specials, and -z: Option details. (line 372)
-* http://www.win.tue.nl/~dickie/idvi: Hypertext. (line 21)
-* http://xxx.lanl.gov/hypertex: Hypertext. (line 21)
-* Hungarian umlaut: Reencoding with Afm2tfm.
- (line 32)
-* hyperdvi extensions, enabling: Option details. (line 372)
-* hypertext and bitmap fonts: Hypertext caveats. (line 6)
-* hypertext caveats: Hypertext caveats. (line 6)
-* hypertext specials: Hypertext specials. (line 6)
-* hypertext support: Hypertext. (line 6)
-* i config command (pages/section): Configuration file commands.
- (line 51)
-* idvi Java DVI reader: Hypertext. (line 21)
-* Illustrator, workaround for: Including graphics fails.
- (line 10)
-* img: Hypertext specials. (line 52)
-* including graphics fails: Including graphics fails.
- (line 6)
-* including headers from the command line: Including headers from the command line.
- (line 6)
-* including headers in TeX: Including headers from TeX.
- (line 6)
-* installation of config.ps: config.ps installation.
- (line 6)
-* installation of PostScript fonts: PostScript font installation.
- (line 6)
-* installation, of Dvips: Installation. (line 6)
-* installing fonts: Making a font available.
- (line 6)
-* interaction with PostScript: Interaction with PostScript.
- (line 6)
-* inverted output: Small or inverted. (line 6)
-* invoking Dvips: Invoking Dvips. (line 6)
-* j config command (partial font downloading): Configuration file commands.
- (line 55)
-* Java DVI reader: Hypertext. (line 21)
-* Jeffrey, Alan: Invoking afm2tfm. (line 13)
-* K config command (comment-removeal): Configuration file commands.
- (line 59)
-* kerning, defined: Metric files. (line 15)
-* landscape orientation, defined: Paper size and landscape.
- (line 11)
-* landscape papertype: Option details. (line 310)
-* landscape, as \special: papersize special. (line 16)
-* last page printed: Option details. (line 162)
-* last-resort font scaling, with DVIPSSIZES: Environment variables.
- (line 38)
-* last-resort scaling, with R: Configuration file commands.
- (line 123)
-* ledger papertype: Option details. (line 310)
-* legal papertype: Option details. (line 310)
-* letter papertype: Option details. (line 310)
-* letterhead tray: Paper trays. (line 10)
-* ligature operations: Encoding file format.
- (line 54)
-* ligature, defined: Metric files. (line 15)
-* LIGKERN encoding file command: Encoding file format.
- (line 37)
-* lines in figures, wrong width: EPSF clipping. (line 6)
-* links, hypertext: Hypertext specials. (line 33)
-* literal headers: Literal headers. (line 6)
-* literal PostScript, examples: Literal examples. (line 6)
-* literal PostScript, using: Literal PS. (line 6)
-* long documents not printing: Long documents fail. (line 6)
-* low characters, shifting: Option details. (line 117)
-* lpr spooler, MS-DOS emulation: Option details. (line 222)
-* Lucida, installing: PostScript font installation.
- (line 10)
-* m config command (available memory): Configuration file commands.
- (line 63)
-* M config command (mf mode): Configuration file commands.
- (line 82)
-* macros for color: Color macro files. (line 6)
-* macros for epsf inclusion <1>: EPSF macros. (line 6)
-* macros for epsf inclusion: \includegraphics. (line 6)
-* magnification, DVI: EPSF scaling. (line 63)
-* magnification, overriding DVI: Option details. (line 354)
-* magnification, vertical: Option details. (line 365)
-* mailcap and hypertext: Hypertext specials. (line 53)
-* manual feed: Option details. (line 171)
-* maxdrift: Option details. (line 71)
-* maximum pages printed: Option details. (line 194)
-* media: Option details. (line 310)
-* memory available: Configuration file commands.
- (line 63)
-* memory of printer exhausted: Printer errors. (line 14)
-* memory usage, and headers: Headers and memory usage.
- (line 6)
-* memory, conserving: Option details. (line 21)
-* memory, used by PostScript fonts: Making a font available.
- (line 104)
-* Metafont ligature operations: Encoding file format.
- (line 54)
-* Metafont mode, specifying: Option details. (line 174)
-* Metafont source files: Glyph files. (line 30)
-* metric files: Metric files. (line 6)
-* Minion typeface family: psfonts.map. (line 27)
-* missfont.log: Option details. (line 183)
-* MISSFONT_LOG: Option details. (line 186)
-* Mitsubishi Shinko CHC-S446i printer: No output. (line 14)
-* mkdvipspapers: Config file paper sizes.
- (line 69)
-* mktexpk, avoiding: Option details. (line 183)
-* mktexpk, changing name: Environment variables.
- (line 27)
-* mode name, specifying: Option details. (line 174)
-* Monotype fonts: PostScript font installation.
- (line 10)
-* Monotype fonts, installing: PostScript font installation.
- (line 19)
-* mtpk: Option details. (line 346)
-* multiple master fonts: psfonts.map. (line 27)
-* multiple output files: Option details. (line 126)
-* multiple paper trays: Paper trays. (line 6)
-* Murphy, Tim: Hypertext specials. (line 20)
-* N EPS-disabling config command: Configuration file commands.
- (line 85)
-* name: Hypertext specials. (line 41)
-* narrow fonts: psfonts.map. (line 32)
-* no output at all: No output. (line 6)
-* non-printing characters, shifting: Option details. (line 117)
-* non-resident fonts: psfonts.map. (line 6)
-* O config command (offset): Configuration file commands.
- (line 98)
-* o config command (output file): Configuration file commands.
- (line 90)
-* oblique fonts: Special font effects.
- (line 6)
-* octal character codes: Afm2tfm options. (line 41)
-* odd pages only: Option details. (line 27)
-* offset pages: Option details. (line 234)
-* Omega extensions: Option details. (line 205)
-* option, details of: Option details. (line 6)
-* options, debugging: Debug options. (line 6)
-* options, Dvips: Invoking Dvips. (line 6)
-* options, reading from standard input: Option details. (line 11)
-* options, summary: Option summary. (line 6)
-* options, to Afm2tfm: Afm2tfm options. (line 6)
-* outline fonts <1>: Special font effects.
- (line 50)
-* outline fonts: Glyph files. (line 17)
-* output file, sectioning of: Headers and memory usage.
- (line 6)
-* output file, setting: Configuration file commands.
- (line 90)
-* output files, multiple: Option details. (line 126)
-* output, inverted: Small or inverted. (line 6)
-* output, none: No output. (line 6)
-* output, redirecting: Option details. (line 218)
-* output, too small: Small or inverted. (line 6)
-* p config command (font aliases): Configuration file commands.
- (line 101)
-* P config command (PK path): Configuration file commands.
- (line 110)
-* page range: Option details. (line 261)
-* page, first printed: Option details. (line 252)
-* page, last printed: Option details. (line 162)
-* pages, maximum printed: Option details. (line 194)
-* PaintType: Special font effects.
- (line 50)
-* Pantone colors: Color macro files. (line 16)
-* paper size configuration file command: Config file paper sizes.
- (line 6)
-* paper size, default: config.ps installation.
- (line 6)
-* paper size, general: Paper size and landscape.
- (line 6)
-* paper trays: Paper trays. (line 6)
-* paper type: Option details. (line 310)
-* papersize special: papersize special. (line 6)
-* papersize special, and no -t: Option details. (line 310)
-* partial font downloading: psfonts.map. (line 17)
-* PDF files, font quality: Hypertext caveats. (line 6)
-* PDF files, making <1>: Hypertext. (line 11)
-* PDF files, making: Ghostscript installation.
- (line 6)
-* PDF files, option for: Option details. (line 372)
-* pdfmark: Hypertext. (line 6)
-* pfa files: Glyph files. (line 25)
-* pfb files: Glyph files. (line 25)
-* pfb files, automatically unpacked: psfonts.map. (line 62)
-* pfm files: Metric files. (line 49)
-* Phaser printer, used for color calibration: Color device configuration.
- (line 18)
-* physical page number, and -l: Option details. (line 162)
-* physical page number, and -p: Option details. (line 252)
-* physical page number, and bop-hook: PostScript hooks. (line 26)
-* pipes, not readable: Option details. (line 98)
-* pk files: Glyph files. (line 35)
-* PKFONTS, overrides P: Configuration file commands.
- (line 110)
-* plotfile, ps subspecial: ps special. (line 25)
-* pltotf: Metric files. (line 39)
-* popen for output: Option details. (line 222)
-* positioning accuracy: Option details. (line 71)
-* post code after headers: Including headers from TeX.
- (line 28)
-* PostScript code, literal: Literal PS. (line 6)
-* PostScript encoding: Encodings. (line 27)
-* PostScript encoding, changing: Changing PostScript encodings.
- (line 6)
-* PostScript font alias file <1>: Configuration file commands.
- (line 101)
-* PostScript font alias file: Option details. (line 326)
-* PostScript fonts: PostScript fonts. (line 6)
-* PostScript fonts, installing: PostScript font installation.
- (line 6)
-* PostScript fonts, on your system: PostScript font installation.
- (line 24)
-* PostScript header files: Header files. (line 6)
-* PostScript hooks: PostScript hooks. (line 6)
-* PostScript interaction: Interaction with PostScript.
- (line 6)
-* PostScript previewers: Ghostscript installation.
- (line 6)
-* PostScript units: Bounding box. (line 11)
-* PowerPage PostScript implementation: No output. (line 14)
-* pre code before headers: Including headers from TeX.
- (line 28)
-* previewing Dvips output: Ghostscript installation.
- (line 6)
-* PRINTER: Environment variables.
- (line 41)
-* printer configuration: config.ps installation.
- (line 6)
-* printer configuration file, prototype: config.ps installation.
- (line 15)
-* printer errors: Printer errors. (line 6)
-* printer memory: Configuration file commands.
- (line 63)
-* printer memory exhausted: Printer errors. (line 14)
-* printer offset: Option details. (line 234)
-* PRINTER, and config file searching: Configuration file searching.
- (line 36)
-* PRINTER, avoided with -f: Option details. (line 98)
-* printer, driving directly: Option details. (line 110)
-* problems: Diagnosing problems. (line 6)
-* property list files: Metric files. (line 39)
-* prototype printer configuration file: config.ps installation.
- (line 15)
-* ps special: ps special. (line 6)
-* psfile special: psfile special. (line 6)
-* psfonts.map <1>: psfonts.map. (line 6)
-* psfonts.map <2>: Special font effects.
- (line 19)
-* psfonts.map: PostScript font installation.
- (line 24)
-* psheaderdir: Header files. (line 12)
-* psi character missing: Hypertext caveats. (line 55)
-* pstopk: Option details. (line 346)
-* Q config command (quiet): Configuration file commands.
- (line 117)
-* q config command (quiet): Configuration file commands.
- (line 117)
-* quiet operation: Option details. (line 285)
-* r config command (page reversal): Configuration file commands.
- (line 120)
-* R fallback resolution config command: Configuration file commands.
- (line 123)
-* reencode/*.enc: Encodings. (line 35)
-* reencoding: Reencoding with Afm2tfm.
- (line 6)
-* reencoding PostScript fonts: psfonts.map. (line 37)
-* registered character, accessing: Changing PostScript encodings.
- (line 18)
-* remapping: Reencoding with Afm2tfm.
- (line 6)
-* resident fonts, different in different printers <1>: Configuration file commands.
- (line 101)
-* resident fonts, different in different printers: Option details.
- (line 326)
-* resolution: Option details. (line 362)
-* resolution, setting: Option details. (line 58)
-* reverse pagination: Option details. (line 289)
-* Rokicki, Tomas: Why Dvips. (line 68)
-* rotate.tex: ps special. (line 29)
-* S config command (pict path): Configuration file commands.
- (line 148)
-* s config command (save/restore): Configuration file commands.
- (line 145)
-* save/restore, and inverted output: Small or inverted. (line 6)
-* save/restore, and literal PS: Literal examples. (line 27)
-* save/restore, and specials: ps special. (line 6)
-* save/restore, generating global: Option details. (line 298)
-* scaleunit: psfile special. (line 55)
-* scaling of figures: EPSF scaling. (line 6)
-* scaling small caps: Afm2tfm options. (line 33)
-* Scandinavian A ring: Reencoding with Afm2tfm.
- (line 32)
-* screen frequencies, setting: Including headers from the command line.
- (line 13)
-* SDict: psfile special. (line 55)
-* SDict dictionary: Literal headers. (line 6)
-* searching config files, order of: Configuration file searching.
- (line 6)
-* sections of output file, and memory: Headers and memory usage.
- (line 6)
-* sections output, in separate files: Option details. (line 126)
-* security: Option details. (line 292)
-* shell command execution, disabling: Option details. (line 292)
-* shell escape, in config file: Configuration file commands.
- (line 33)
-* Shinko CHC-S446i printer: No output. (line 14)
-* show PostScript operator: PostScript typesetting.
- (line 23)
-* silent operation: Option details. (line 285)
-* simplex mode on duplex printers: Including headers from the command line.
- (line 13)
-* slanted fonts: Special font effects.
- (line 6)
-* slanted fonts, making: Afm2tfm options. (line 51)
-* SlantFont: Special font effects.
- (line 17)
-* small caps fonts: Special font effects.
- (line 34)
-* Smith, Arthur: Hypertext specials. (line 6)
-* Softkey fonts: PostScript font installation.
- (line 10)
-* Softkey fonts, installing: PostScript font installation.
- (line 19)
-* spaces, dropped trailing: Hypertext caveats. (line 55)
-* specials, hypertext: Hypertext specials. (line 6)
-* splines: Glyph files. (line 17)
-* spooler, lacking: Option details. (line 110)
-* spooling to lpr on MS-DOS: Option details. (line 222)
-* standard I/O: Option details. (line 98)
-* standard input, reading options from: Option details. (line 11)
-* standard output, output to: Option details. (line 218)
-* standard PostScript, required by Ghostview: Ghostscript installation.
- (line 17)
-* start-hook: PostScript hooks. (line 11)
-* structured comments: Option details. (line 197)
-* system in config file: Configuration file commands.
- (line 33)
-* T config command (TFM path): Configuration file commands.
- (line 153)
-* Tektronix Phaser printer, used for color calibration: Color device configuration.
- (line 18)
-* testpage.tex: Option details. (line 241)
-* TeX encoding, changing: Changing TeX encodings.
- (line 6)
-* TeX, including headers in: Including headers from TeX.
- (line 6)
-* TEXCONFIG: Environment variables.
- (line 46)
-* TEXFONTS, overrides P: Configuration file commands.
- (line 110)
-* TEXFONTS, overrides T: Configuration file commands.
- (line 153)
-* TEXINPUTS, overrides S: Configuration file commands.
- (line 148)
-* texmext.enc: Encodings. (line 35)
-* TEXMFOUTPUT: Option details. (line 186)
-* texmital.enc: Encodings. (line 35)
-* texmsym.enc <1>: Changing TeX encodings.
- (line 16)
-* texmsym.enc: Encodings. (line 35)
-* TEXPICTS: Environment variables.
- (line 53)
-* TEXPICTS, overrides S: Configuration file commands.
- (line 148)
-* TEXPKS, overrides P: Configuration file commands.
- (line 110)
-* TEXSIZES, overrides R: Configuration file commands.
- (line 136)
-* text in figures, chopped off: EPSF clipping. (line 6)
-* tfm files: Metric files. (line 31)
-* TFMFONTS, overrides T: Configuration file commands.
- (line 153)
-* tftopl: Metric files. (line 39)
-* Theisen, Tim: Ghostscript installation.
- (line 17)
-* tight bounding box, finding: Option details. (line 82)
-* too-small output: Small or inverted. (line 6)
-* trademark character, accessing: Changing PostScript encodings.
- (line 18)
-* trailing spaces, dropped: Hypertext caveats. (line 55)
-* TranScript: Option details. (line 197)
-* transforming downloaded fonts: psfonts.map. (line 32)
-* trouble: Diagnosing problems. (line 6)
-* Type 1 fonts: Glyph files. (line 25)
-* typesetting in PostScript: PostScript typesetting.
- (line 6)
-* U config command (Xerox 4045): Configuration file commands.
- (line 158)
-* uncollated copies: Option details. (line 41)
-* uncompressing PostScript: Dynamic creation of graphics.
- (line 6)
-* uniform resource locator: Hypertext specials. (line 20)
-* URL, definition: Hypertext specials. (line 27)
-* URL, extended for TeX: Hypertext specials. (line 20)
-* user-definable colors: User-definable colors.
- (line 6)
-* userdict, and dictionary files: Header files. (line 21)
-* userdict, used for header files: Option details. (line 121)
-* V config command (vf path): Configuration file commands.
- (line 162)
-* verbose EPSF processing: EPSF macros. (line 46)
-* vf files: Virtual fonts. (line 16)
-* virtual font expansion: Virtual fonts. (line 34)
-* virtual font path: Configuration file commands.
- (line 162)
-* virtual fonts: Virtual fonts. (line 6)
-* virtual fonts, creating: Invoking afm2tfm. (line 13)
-* VM exhausted: Printer errors. (line 14)
-* VMusage: Headers and memory usage.
- (line 12)
-* vpl files: Virtual fonts. (line 16)
-* vptovf: Making a font available.
- (line 52)
-* W config command (warning): Configuration file commands.
- (line 167)
-* warning messages, defining: Configuration file commands.
- (line 167)
-* warnings, suppressing: Option details. (line 285)
-* whole font downloading: psfonts.map. (line 27)
-* wide fonts: psfonts.map. (line 32)
-* X config command (horizontal resolution): Configuration file commands.
- (line 174)
-* Xerox 4045: Option details. (line 334)
-* Y config command (vertical resolution): Configuration file commands.
- (line 177)
-* Y&Y fonts, installing: PostScript font installation.
- (line 19)
-* Z config command (compression): Configuration file commands.
- (line 180)
-* z config command (secure mode): Configuration file commands.
- (line 183)
-* | starting output filename: Option details. (line 222)
-
-
-
-Tag Table:
-Node: Top465
-Node: Why Dvips1155
-Node: Installation4603
-Node: config.ps installation5741
-Node: PostScript font installation8282
-Node: Ghostscript installation11156
-Node: Diagnosing problems12253
-Node: Debug options13122
-Node: No output14238
-Node: Small or inverted15706
-Node: Printer errors16425
-Node: Long documents fail17757
-Node: Including graphics fails18098
-Node: Invoking Dvips19336
-Node: Basic usage19927
-Node: Command-line options20911
-Node: Option summary21360
-Node: Option details23336
-Node: Environment variables41418
-Node: Config files43921
-Node: Configuration file searching44604
-Node: Configuration file commands47904
-Node: Paper size and landscape54941
-Node: papersize special56518
-Node: Config file paper sizes57632
-Node: Paper trays61765
-Node: Interaction with PostScript63099
-Node: PostScript figures63752
-Node: Bounding box64478
-Node: \includegraphics67849
-Node: EPSF macros70140
-Node: EPSF scaling72110
-Node: EPSF clipping74680
-Node: psfile special75322
-Node: Dynamic creation of graphics77242
-Node: Fonts in figures78560
-Node: Header files80220
-Node: Including headers from TeX81426
-Node: Including headers from the command line83460
-Node: Headers and memory usage84560
-Node: Literal PS85270
-Node: " special85852
-Node: ps special86593
-Node: Literal headers87901
-Node: PostScript hooks88616
-Node: Literal examples90706
-Node: Hypertext92158
-Node: Hypertext caveats93716
-Node: Hypertext specials98113
-Node: PostScript fonts100747
-Node: Font concepts101863
-Node: Metric files103030
-Node: Glyph files105856
-Node: Virtual fonts108212
-Node: Encodings110102
-Node: PostScript typesetting112484
-Node: Making a font available115566
-Node: Invoking afm2tfm120596
-Node: Changing font encodings121566
-Node: Changing TeX encodings122357
-Node: Changing PostScript encodings123457
-Node: Changing both encodings124801
-Node: Reencoding with Afm2tfm125474
-Node: Encoding file format128578
-Node: Special font effects132781
-Node: Afm2tfm options135044
-Node: psfonts.map138029
-Node: Color142753
-Node: Color macro files143797
-Node: User-definable colors146995
-Node: Color subtleties148270
-Node: Ted Turner149921
-Node: Color device configuration151146
-Node: Color support details153588
-Node: Color specifications153966
-Node: Color specials155369
-Node: Index157498
-
-End Tag Table
diff --git a/Build/source/texk/dvipsk/dvips.texi b/Build/source/texk/dvipsk/dvips.texi
index 5ee85f36cf5..4304f57a49d 100644
--- a/Build/source/texk/dvipsk/dvips.texi
+++ b/Build/source/texk/dvipsk/dvips.texi
@@ -1032,10 +1032,12 @@ Output pages in reverse order. By default, page 1 is output first.
@cindex security
@cindex shell command execution, disabling
@cindex absolute filenames, disabling
-Run securely. This disables shell command execution in
+Run securely. @samp{-R2} disables both shell command execution in
@code{\special} (via @samp{`}, @pxref{Dynamic creation of graphics})
and config files (via the @samp{E} option, @pxref{Configuration file
-commands}), and opening of any absolute filenames.
+commands}) and opening of any absolute filenames. @samp{-R1}, the
+default, forbids shell escapes but allows absolute filenames.
+@samp{-R0} allows both.
@item -s*
@opindex -s
@@ -1588,8 +1590,8 @@ Compress bitmap fonts. Same as @samp{-Z} (@pxref{Option details}).
@item z*
@opindex z @r{config command (secure mode)}
Disables execution of system commands, like @samp{-R}
-(@pxref{Option details}). If @samp{-R1} is given to disable system
-commands, however, this will not re-enable them.
+(@pxref{Option details}). If @samp{-R} is specified
+on the command line, that takes precedence.
@end table
diff --git a/Build/source/texk/dvipsk/header.c b/Build/source/texk/dvipsk/header.c
index 280761f9d74..4b9c7d6b034 100644
--- a/Build/source/texk/dvipsk/header.c
+++ b/Build/source/texk/dvipsk/header.c
@@ -80,7 +80,7 @@ void checkhmem P3C(char *, s, char *, pre, char *, post)
f = search(figpath, s, READBIN) ;
}
if (f==0) {
- (void)sprintf(errbuf, "! Couldn't find header file %s", s) ;
+ (void)sprintf(errbuf, "! Couldn't find header file %s.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s) ;
error(errbuf) ;
} else {
int len, i, j ;
diff --git a/Build/source/texk/dvipsk/hps.lpro b/Build/source/texk/dvipsk/hps.lpro
index 0823f180a17..79c29769ec0 100644
--- a/Build/source/texk/dvipsk/hps.lpro
+++ b/Build/source/texk/dvipsk/hps.lpro
@@ -69,16 +69,19 @@ bind def
}
bind def
-/tempstring 256 string def
+% PDF implementation limit for names is 127, see PDF specification,
+% version 1.6, appendix C "Implementation Limits,
+% table C.1 "Architectural limits", page 920.
+/tempstring 128 string def
/targetvalidate
- {1 index dup length 255 gt exch
+ {1 index dup length 127 gt exch
+ tempstring cvs
dup (/) search
{pop pop pop exch pop true exch}
{pop}
ifelse
- cvn tempstring cvs
- token pop pop length 0 ne or
+ token {pop length 0 ne} {true} ifelse or
not} bind def
/targetdump-hook where
diff --git a/Build/source/texk/dvipsk/loadfont.c b/Build/source/texk/dvipsk/loadfont.c
index 449c74256e7..1151ae2210c 100644
--- a/Build/source/texk/dvipsk/loadfont.c
+++ b/Build/source/texk/dvipsk/loadfont.c
@@ -39,7 +39,7 @@ extern real alpha ;
#ifndef KPATHSEA
extern char *pkpath ;
#endif
-char errbuf[200] ;
+char errbuf[512] ;
int lastresortsizes[40] ;
extern integer fsizetol ;
extern Boolean nosmallchars ;
diff --git a/Build/source/texk/dvipsk/makefont.c b/Build/source/texk/dvipsk/makefont.c
index 39c9fdd9735..b90f03819d2 100644
--- a/Build/source/texk/dvipsk/makefont.c
+++ b/Build/source/texk/dvipsk/makefont.c
@@ -7,7 +7,7 @@
extern int quiet ;
extern int filter ;
extern int dontmakefont ;
-extern Boolean secure ;
+extern int secure ;
extern char *mfmode ;
#ifdef OS2
#include <stdlib.h>
diff --git a/Build/source/texk/dvipsk/output.c b/Build/source/texk/dvipsk/output.c
index d0653400c93..10203bed7de 100644
--- a/Build/source/texk/dvipsk/output.c
+++ b/Build/source/texk/dvipsk/output.c
@@ -33,7 +33,7 @@ extern integer hh, vv ;
extern fontdesctype *curfnt ;
extern FILE *bitfile ;
extern char *oname ;
-extern Boolean secure ;
+extern int secure ;
extern Boolean reverse ;
extern Boolean removecomments ;
extern Boolean sendcontrolD, disablecomments, multiplesects ;
@@ -147,15 +147,15 @@ copyfile_general P2C(char *, s, struct header_list *, cur_header)
lastdirsep = strrchr(s, '/') ;
if ( NULL != lastdirsep ) trunc_s = lastdirsep + 1 ;
(void)sprintf(errbuf,
- "Couldn't find figure file %s with CMS name %s; continuing", s, trunc_s) ;
+ "Couldn't find figure file %s with CMS name %s; continuing.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s, trunc_s) ;
#else
#ifdef MVSXA
lastdirsep = strrchr(s, '/') ;
if ( NULL != lastdirsep ) trunc_s = lastdirsep + 1 ;
(void)sprintf(errbuf,
- "Couldn't find figure file %s with MVS name %s; continuing", s, trunc_s) ;
+ "Couldn't find figure file %s with MVS name %s; continuing.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s, trunc_s) ;
#else
- (void)sprintf(errbuf, "Could not find figure file %s; continuing", s) ;
+ (void)sprintf(errbuf, "Could not find figure file %s; continuing.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s) ;
#endif
#endif
break ;
@@ -198,7 +198,7 @@ copyfile_general P2C(char *, s, struct header_list *, cur_header)
if(f==NULL)
f = search(figpath, s, READBIN) ;
}
- (void)sprintf(errbuf, "! Could not find header file %s", s) ;
+ (void)sprintf(errbuf, "! Could not find header file %s.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s) ;
break ;
}
if (f==NULL)
@@ -510,8 +510,10 @@ msdosdone:
c = getc(f);
if (c != '\n')
ungetc(c, f);
- else
+ else {
+ (void)putc(c, bitfile) ;
dosepsend-- ;
+ }
}
break ;
}
@@ -938,14 +940,14 @@ nlcmdout P1C(char *, s)
newline() ;
}
/*
- * Is the dimension close enough for a match? We use a quarter inch
- * as a match; this is 65536*72.27/4 or 1,184,072 scaled points.
+ * Is the dimension close enough for a match? We use 5bp
+ * as a match; this is 65536*72.27*5/72 or 328909 scaled points.
*/
static int indelta P1C(integer, i)
{
if (i < 0)
i = -i ;
- return (i <= 1184072) ;
+ return (i <= 328909) ;
}
/*
* A case-irrelevant string compare.
@@ -973,6 +975,9 @@ int ncstrcmp P2C(char *, a, char *, b)
void findpapersize P1H(void) {
if (finpapsiz == 0) {
struct papsiz *ps ;
+ struct papsiz *fps = 0 ;
+ int ih, iv, it ;
+ int mindiff = 0x7fffffff ;
if (tryepsf && !landscape) {
finpapsiz = &defpapsiz ;
@@ -1009,33 +1014,54 @@ void findpapersize P1H(void) {
}
if (finpapsiz == 0 && hpapersize > 0 && vpapersize > 0) {
for (ps=papsizes; ps; ps = ps->next) {
- if (indelta(ps->xsize-hpapersize) &&
- indelta(ps->ysize-vpapersize)) {
- landscape = 0 ;
- break ;
+ ih = ps->xsize-hpapersize ;
+ iv = ps->ysize-vpapersize ;
+ if (ih < 0) ih = -ih ;
+ if (iv < 0) iv = -iv ;
+ it = ih ;
+ if (it < iv) it = iv ;
+ if (it < mindiff) {
+ mindiff = it ;
+ fps = ps ;
}
}
- if (ps == 0) {
+ if (indelta(mindiff))
+ landscape = 0 ;
+ else
+ fps = 0 ;
+ mindiff = 0x7fffffff ;
+ if (fps == 0) {
for (ps=papsizes; ps; ps = ps->next) {
- if (indelta(ps->ysize-hpapersize) &&
- indelta(ps->xsize-vpapersize)) {
- landscape = 1 ;
- break ;
+ iv = ps->ysize-hpapersize ;
+ ih = ps->xsize-vpapersize ;
+ if (ih < 0) ih = -ih ;
+ if (iv < 0) iv = -iv ;
+ it = ih ;
+ if (it < iv) it = iv ;
+ if (it < mindiff) {
+ mindiff = it ;
+ fps = ps ;
}
}
- if (ps == 0) {
+ if (indelta(mindiff))
+ landscape = 1 ;
+ else
+ fps = 0 ;
+ if (fps == 0) {
for (ps=papsizes; ps; ps = ps->next) {
- if (ps->ysize == 0 && ps->xsize == 0)
+ if (ps->ysize == 0 && ps->xsize == 0) {
+ fps = ps ;
break ;
+ }
}
- if (ps == 0) {
+ if (fps == 0) {
landscape = (hpapersize > vpapersize) ;
error(
"no match for special paper size found; using default") ;
}
}
}
- finpapsiz = ps ;
+ finpapsiz = fps ;
}
if (finpapsiz == 0) {
if (papsizes)
diff --git a/Build/source/texk/dvipsk/resident.c b/Build/source/texk/dvipsk/resident.c
index 80610b02c90..e6644932fcd 100644
--- a/Build/source/texk/dvipsk/resident.c
+++ b/Build/source/texk/dvipsk/resident.c
@@ -92,7 +92,7 @@ extern Boolean shiftlowchars ;
extern unsigned lastresortsizes[] ;
extern integer hoff, voff ;
extern struct papsiz *papsizes ;
-extern Boolean secure ;
+extern int secure ;
extern integer hpapersize, vpapersize ;
extern int landscape ;
/*
@@ -713,7 +713,7 @@ case 'E' :
error("dvips was compiled with SECURE, which disables E in config") ;
#else
if (secure) {
- error("dvips -R option used, which disables E in config") ;
+ error("E in config is disabled. To enable E, set z0 before E") ;
break ;
}
(void)system(was_inline+1) ;
@@ -759,10 +759,16 @@ case 'z' :
if (secure_option && secure && was_inline[1] == '0') {
fprintf (stderr,
"warning: %s: z0 directive ignored since -R1 given\n",
- realnameoffile);
- } else {
- secure = (was_inline[1] != '0') ;
- }
+ realnameoffile); /* Never happen */
+ } else {
+ if (was_inline[1] == '0') {
+ secure = 0 ;
+ } else if (was_inline[1] == '2') {
+ secure = 2 ;
+ } else {
+ secure = 1 ;
+ }
+ }
break ;
case 'q' : case 'Q' :
quiet = (was_inline[1] != '0') ;
diff --git a/Build/source/texk/dvipsk/search.c b/Build/source/texk/dvipsk/search.c
index 94529af6693..1f525db5c65 100644
--- a/Build/source/texk/dvipsk/search.c
+++ b/Build/source/texk/dvipsk/search.c
@@ -51,7 +51,7 @@ extern char *newstring P1H(char *) ;
*/
#ifndef SECURE
-extern Boolean secure;
+extern int secure ;
#endif
#ifdef DEBUG
extern integer debug_flag;
@@ -87,7 +87,7 @@ search P3C(kpse_file_format_type, format, char *, file, char *, mode)
/* This change suggested by maj@cl.cam.ac.uk to disallow reading of
arbitrary files. Further modified by Y. Oiwa. */
#ifndef SECURE
- if (secure) {
+ if (secure == 2) {
#endif
/* an absolute path is denied */
if (kpse_absolute_p (file, false)) return NULL;