ps.slide {Hmisc} | R Documentation

## Postscript and Adobe PDF Setup for 35mm Slides and Other Formats

### Description

The `ps.slide` function has nice defaults to create postscript images with larger font, thicker lines, and better axis labeling. These images can be used to make nice slides. There is an option to view the constructed postscript file using `ghostview`, and an option to initiate a background process to convert the postscript file to a PC Paintbrush `.pcx` file for importing into various PC presentation graphics packages although with a significant loss in resolution. This option assumes you have installed various public-domain unix image conversion programs. You can preview `.pcx` files using e.g. `xli file.pcx &`. Specify `type=1` to make nice fullsize graphs or `type=3` for making 5 x 7" landscape graphs using 14-point type (useful for submitting to journals). `type=2` (the default) is for color 35mm slides. Use `type=4` to make nice black and white overhead projection transparancies (portrait mode). This uses line thickness 4, pointsize 14, height 8, width 7. For `type=3`, numbers on the y-axis are written horizontally (`las` defaults to `1` for `type=3`).

`ps.slide` calls `mgp.axis.labels` in Hmisc set up axis-specific defaults for the 2nd `mgp` graphical parameter. See `Overview` for Hmisc for help. This is only used automatically for select high-level graphics functions in Hmisc and Design, as S-Plus only supports a single distance between tick marks and tick mark labels using `par`, and when `las=1` a larger distance is needed for the y-axis.

See the body of the function for `type`-specific default values for many of the parameters. This function has not been tested for color output on Windows systems.

`setps` is a function that makes small postscript plots with minimal surrounding white space, suitable for inclusion in books and reports. Internally `setps` uses (and defines) the `psfig` function by Antonio Possolo (antonio@atc.boeing.com). `setps` is especially good for including plots in LaTeX. `setps` creates a temporary function in the session database that when invoked will convert a completed postscript graphics file to a Adobe Acrobat .pdf if you have Ghostscript installed and in your path (so that the `gs` command is available in UNIX or `gswin32c` is available for Windows/NT). Invoke `topdf` by the command `topdf()`, or, if you want to convert a graphic other than the last one created, run `topdf(filename)` to convert `filename.ps` to `filename.pdf`. If `trellis=TRUE`, `setps` invokes `trellis.device` with a `postscript` device argument, and it does not set any of the `par` parameters. Arguments 3, 4, 5, 7, 9, and 10 to `setps` are ignored if `trellis=TRUE`. If `options(setpsPrefix="name")` is defined, the `"name"` string will be prefixed to the file name used by `setps`. `setpdf` uses a similar option `setpdfPrefix`. `setps` and `setpdf` set `par(mgp=c(2,0.4,0))` if `trellis=FALSE`.

`setpdf` is similar to `setps` but for making Adobe Acrobat PDF graphics files directly. There are a few problems with the S-Plus `pdf.graph` function used by `setpdf`, though: (1) the default for points (open circle) is too large, (2) graphs are not centered properly, (3) gray scale does not work, and (4) there is some wasted space at the bottom of the graph. When drawing points, the user may want to specify `cex=0.7`. It may be better to use `setps` followed by `topdf()`.

`tex` is a little function to save typing when including `\tex` commands in graphs that are used with the psfrag package in LaTeX to typeset any LaTeX text inside a postscript graphic. `tex` surrounds the input character string with \tex[options]{}. This is especially useful for getting Greek letters and math symbols in postscript graphs. By default `tex` returns a string with `psfrag` commands specifying that the string be centered, not rotated, and not specially enlarged or shrunk.

`showPsfrag` is used to display (using ghostview) a postscript image that contained psfrag LaTeX strings, by building a small LaTeX script and running latex and dvips.

### Usage

    ps.slide(file, background = if (type != 2) "white" else "navy blue",
             foreground = if (type == 2) "yellow" else
                         (if(background == "white") "black" else "white"),
             font = "Helvetica", pointsize = c(24, 28, 14, 14)[type],
             hor = type != 4, lwd = c(2, 5, 2, 4)[type],
             mgp = if(under.unix) list(c(1.8, 0.4, 0), c(1.5, 0.2, 0),
                     c(2, 0.4, 0), c(1.5, 0.2, 0))[[type]] else
                     list(c(1.8, 0.5, 0), c(1.5, 0.4, 0), c(2, 0.5, 0),
                     c(1.5, 0.4, 0))[[type]],
             mar = list(c(4, 3, 2, 1) + 0.1, c(5, 4, 2.25, 2) + 0.1,
                     c(3, 3, 1, 1) + 0.1, c(5, 4, 2.25, 2) + 0.1)[[type]],
             pch = 202, view = FALSE, pcx = FALSE, tiff = FALSE,
             close = view | pcx | tiff, bty = "l",
             type = 2, height = switch(type, NULL, NULL, 5, 8),
             width = switch(type, NULL, NULL, 7, 7),
             tck = if (type == 3 || !under.unix) -0.013 else par("tck"),
             las = if (type == 3) 1 else 0, eps =  FALSE, ...)

    setps(filename, w=0, h=3, pointsize=10, sublines=0, toplines=0,
          type="symbol", lwd=2, font="Helvetica",
          leftlines=0, las=1,
          trellis=!(missing(setTrellis.) & missing(strip.blank) &
                    missing(lty.dot.line) & missing(lwd.dot.line)),
          setTrellis.=TRUE,
          strip.blank =TRUE, lty.dot.line = 1, lwd.dot.line = 1,
          seqno=NULL, color=FALSE)

    setpdf(filename, w=0, h=4, pointsize=10, sublines=0, toplines=0,
           type="symbol", lwd=1.5, font=if(.R.)"Helvetica" else 1,
           ratio= if(.R.) 4/3 else (1 + sqrt(5))/2,
           leftlines=0, las=1, bty='l', hor=FALSE,
           trellis=!(missing(setTrellis.) & missing(strip.blank) &
                     missing(lty.dot.line) & missing(lwd.dot.line)),
           setTrellis.=TRUE,
           strip.blank =TRUE, lty.dot.line = 1, lwd.dot.line =1,
           region=c(0, 0, h, w), color=FALSE, seqno=NULL, ...)

    tex(string, lref='c', psref='c', scale=1, srt=0)

    showPsfrag(filename)

### Arguments

`file` |
`filename` | character string specifying file prefix. For `setps` or `setpdf` omit surrounding quotes unless `type="char"`.
`string` | a character string to be processed by `psfrag` in LaTeX.
`background` | default is yellow on navy blue background (black on white for `type=1,3`. `background` may also be set to any legitimate background color listed in the S-supplied object `ps.colors.rgb`.
`foreground` | foreground color. See `background` for allowable values.
`font` | font for text. Replaces the first font in the standard list of fonts in `ps.options("fonts")`. If `font="Times-Roman"`, the fifth font (normally `Helvetica-Bold`) is set to `Times-Bold`. For `setpdf`, `font` is a number, and the default is `1` for Helvetica. All default fonts are Helvetica for `setps`, `psfig`, and `ps.slide`.
`pointsize` | postscript point size. Set to a larger number if using multiple plots via `par(mfrow=)`.
`hor` | default is `TRUE` to make a horizontal graph
`lwd` | line width
`mgp` | see `par`. Defaults are chosen according to `type`.
`mar` | margins (see `par`)
`pch` | see `par`
`view` | set to `TRUE` to initiate a `ghostview` run to view the postscript file. This option will also close out the postscript file (this is done before viewing). If you have an active `ghostview` window for this file already, you can just type `graphics.off()` or `dev.off()` to re-create the `.ps` file. `ghostview` will then update the image automatically.
`pcx` | set to `TRUE` to initiate conversion to `pcx` format. Also implies `close=TRUE`.
`tiff` | set to `TRUE` to initiate conversion to `tiff` format. Also implies `close=TRUE`.
`close` | set to `TRUE` to finish construction of the postscript file.
`bty` | box type surrounding graph. Default is `"l"` for `"L"` shape. Use `"c"` for complete box.
`type` | set `type=1` to use black on white background, smaller pointsize, and other settings that are good for making overhead transparencies and graphs to include in reports. Set `type=3` for 5" x 7" landscape plots, and `time=4` for overheads. For `setps` and `setpdf`, specifies whether `filename` is quoted or not.
`height` | defaults to 5 if `type=3`, otherwise no default (except for type=4)
`width` | defaults to 7 if `type=3`, otherwise no default (except for type=4)
`tck` | length of tick marks. See `par`.
`las` | set to `0` to have axis labels always parallel to the axis, `1` for always horizontal, `2` for perpendicular to axis
`eps` | set to `TRUE` if you are going to be importing the postscript file to a system that really cares that it is marked to officially be encapsulated postscript. If you set `eps=TRUE`, you may put only one figure in the file (see the `onefile` argument in `postscript`). This applies to UNIX systems only.
`...` | other arguments to `ps.options` (or `postscript` for Windows or `pdf.graph` for `setpdf`)
`w` | width of plot. Default is chosen to scale nicely to `h` for a landscape plot
`h` | height of plot (default is 3in)
`sublines` | number of lines to reserve for subtitles
`toplines` | number of lines to reserve for main title
`leftlines` | number of lines to reserve for left margin
`trellis` | set to `TRUE` to set up for postscript output for Trellis graphics. This makes `trellis.device("postscript", ...)` be called instead of `postscript(...)` directly, and leaves `par` parameters at defaults.
`setTrellis.` | set to `FALSE` to prevent `setTrellis` from being called to set the strip panel background and to set characteristics for dot plot reference lines
`strip.blank` | set to `FALSE` to keep shading in conditioning variable panel titles, if `setTrellis.=TRUE`
`lty.dot.line` | if `setTrellis.=TRUE`, the line type for dot plot reference lines (default = solid line)
`lwd.dot.line` | if `setTrellis.=TRUE`, the line width for dot plot reference lines (default = 1)
`seqno` | if non-null, pastes the value of `seqno` at the end of the base of the file name, for `setps` and `setpdf`
`color` | set `color=TRUE` to use a color Trellis device instead of default of black and white, for `setps`. For `setpdf` set to `TRUE` to get color pdf graphics.
`region` | see `pdf.graph`. Default is to use an image region that is just large enough to contain the graphic.
`ratio` | ratio of width to height of the plot when only one of those is specified. Defaults depend on whether S-Plus or R are being used.
`lref` | LaTeX reference point for `string`. See the `psfrag` documentation referenced below. Default is `"c"` for centered (this is also the default for `psref`).
`psref` | PostScript reference point.
`scale` | scall factor, default is 1
`srt` | rotation for `string` in degrees (default is zero)

### Value

nothing, for most of the functions. `tex` returns a modified character string.

### Side Effects

Starts a postscript file or a process to convert it to pcx format, or starts a Trellis postscript device. `ps.slide` Stores a system option `ps.slide.file`. `pdf.graph` opens a graphics file using `pdf.graph`. `setps` creates a function `topdf` in frame 0 (the session database).

### Author(s)

Frank Harrell
Department of Biostatistics
Vanderbilt University
f.harrell@vanderbilt.edu

### References

Grant MC, Carlisle (1998): The PSfrag System, Version 3. Full documentation is obtained by searching www.ctan.org for pfgguide.ps.

### See Also

`postscript`, `par`, `ps.options`, `mgp.axis.labels`, `pdf`, `trellis.device`, `setTrellis`

### Examples

    ## Not run:
    ps.slide("myslide")   # myslide is file name prefix
    # use ps.slide("myslide",back="green") to use e.g. green background
    plot(x, y)
    title("My Title")

    ps.slide(view=TRUE)   # makes myslide.ps file
                       # use ps.slide(close=TRUE) to close file without viewing with
                       # ghostview.
    ps.slide(view=TRUE, pcx=TRUE)
                       # converts myslide.ps into myslide.pcx (PC Paintbrush
                       # format suitable for importing in PC graphics packages)
    mgp.axis.labels(c(.4,1.2))  # override 2nd mgp parameters for x- and y axes
    mgp.axis.labels(type='x')   # retrieve 3 mgp parameters for x-axis

    setps(myfile)      # equiv. to setps('myfile', type='char')
                       # setps(myfile, trellis=TRUE, other args) for Trellis
    # plotting commands
    dev.off()
    topdf()            # topdf created by setps
                       # makes Ghostscript create "myfile.pdf"
    setpdf(myfile)
    # plotting commands
    dev.off()

    # Put math and Greek symbols in a graph
    setps(test)
    x <- seq(0,15,length=100)
    plot(x, dchisq(x, 5), xlab=tex('$x$'),
            ylab=tex('$f(x)$'), type='l')
    title(tex('Density Function of the $\chi_{5}^{2}$ Distribution'))
    dev.off()
    # To process this file in LaTeX do something like
    #\documentclass{article}
    #\usepackage[scanall]{psfrag}
    #\begin{document}
    #\begin{figure}
    #\includegraphics{test.ps}
    #\caption{This is an example}
    #\end{figure}
    #\end{document}
    ## End(Not run)

[Package Contents]