Manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 36
Download | |
Open PDF In Browser | View PDF |
MathPSfrag 2.0 Manual Johannes Groÿe Institute of Physics, Jagellonian University, Reymonta 4, 30-059 Cracow, Poland. Abstract This is the complete manual of PSfrag, Math- 3 a package for the creation of AT X labels for Mathematica plots. L E The manual is not meant as an intro- 2 3 JCosA2 duction but rather as a documentation of all available commands. An overview 1 !!!! 2 13 xE N article may be found in [1]; for a rst impression have a look at the presentation MathPSfrag-2.0/latex/beamerexample-eurobachotex-2007/ direc- in the C tory. In case you have taken a look at 0 Sin@xD local maximum -1 Π 2 0 either already, you might want to skip the introduction. 3Π 2 Π 2Π Fig. 1a) Mathematica 3 2 p √ 3 3 cos2 (2 x) 1 0 sin(x) local maximum −1 0 π 2 Fig. 1b) Email: grosse@th.if.uj.edu.pl http://wwwth.mppmu.mpg.de/members/jgrosse/mathpsfrag π MathPSfrag 3π 2 2π Contents 1 Introduction 3 2 Naming conventions/Typography 4 3 Setup 4 3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.4 Why conguration is needed . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4 PSfrag LATEX package 6 5 MathPSfrag interface commands 7 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.3 PSfragExport PSfrag . . . . UnPSfrag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.4 Conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.5 In the manuscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.2 6 pdfLATEX 6.1 6.2 6.3 6.4 6.5 Standard pst-pdf . pst-pdf . ps4pdf . pdftricks PSfrag 11 ( PostScript only) . . . . . . . . . . . . . . . . . . . . 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 7 Command reference 17 8 General auxiliary functions 25 9 26 Mathematica 4.x5.0 10 Known Bugs and Limitations 27 11 Figure Source Code 28 11.1 Rotated Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 11.2 HoldForm plus CustomTicks . . . . . . . . . . . . . . . . . . . . . . . . . . 29 11.3 Three-dimensional Knot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 11.4 Automatic vs. Manual Example . . . . . . . . . . . . . . . . . . . . . . . . 31 12 How to bug report 32 A Program Summary 33 Index 34 2 1 Introduction Many programs producing EPS graphics do not allow the inclusion of LATEX commands. While there exist several solutions to work around these diculties, they all have various drawbacks. (See [2] for a discussion of several methods and an alternative approach to overcome these diculties.) In this article, we will focus on a particular existing solution, the PSfrag AT X macros allowing to replace pieces of text package [3], which provides L E (tags) in an EPS le by an arbitrary LATEX construct. However, for PSfrag to work, the application must write tags unaltered into the EPS le. For Mathematica [4, 5], this requirement amounts to using single words, strictly consisting of alphanumeric characters only. As a consequence, the user has to work most of the time with an inconveniently labeled graphic and is furthermore required to keep track of the tags used in the substitution macros. On the other hand, it is not always possible to use Mathematica's conventional export function as it produces EPS les requiring the inclusion of additional fonts into the document. This means conguring the local TEX installation such that it nds the fonts provided by Wolfram Inc. [6, 7, 8], a process often not being under the author's control. A way out is to include the fonts into the EPS le and set the font family to a standard PostScript one. Plot[..., TextStyle→{FontFamily→"Times"}] Export[..., ConversionOptions→{"IncludeSpecialFonts"→True}] However, automatic inclusion of Mathematica's special fonts, which irrespective of the chosen FontFamily are used for displaying important symbols like brackets, is only a last resort. While the slight mismatch between a standard PostScript font's appearance, AT X's standard font (Computer Modern) (here Times Roman, cf. g. 1a), and that of L E may be acceptable in case of ordinary text labels, mathematical expressions like square AT X's typesetting quality in this approach. roots or fractions cannot compete with L E Font inclusion is also a feature thatlike the visually displeasing option to not use special fonts at allhas become available only starting from Mathematica version 4.2.1. Consequently, some authors simply restrict labeling of Mathematica plots to a bare minimum. MathPSfrag [9] is a package that conveniently produces publication-quality labels in EPS les generated by Mathematica. MathPSfrag automates many (often all) tedious AT X package details related to the use of the standard L E PSfrag, while still allowing manual ne tuning. As a demonstration of the degree of automation, compare g. 1a, which has been generated by using the standard Mathematica command g. 1b, generated by MathPSfrag's Export, and export instruction. While the solution presented here, relies on the PSfrag package, it avoids many of its shortcomings by providing a semi-automatic layer. In many cases it is sucient to PSfragExport command. MathPSfrag also allows the creation of stand-alone images that do not need any addiAT X and Ghostscript tional preparations in the manuscript. This is achieved by calling L E simply use the new AT X distribution on the from within Mathematica requiring the user to have a full L E same machine where Mathematica resides. 3 2 Naming conventions/Typography Thoughout this document, le names are denoted Unix-style (path/to/files) unless they are system-specic. Similarly, folders are called directories. The basis directory of the is called path\to\files. MathPSfrag package The corresponding Windows path would be MathPSfrag-2.0/, but the user may rename it as she pleases. {TEXMF}/. The /usr/share/texmf/, /usr/local/texmf/ or C:\ The basis directory of the TEX installation will generically be called real location might be for example. Clocaltexmf\texmf\ . Command line quoting is performed with single quotes ' where appropriate in the Unix-context. For Windows these should always be double quotes " . Line breaks that are not to be entered (but are rather a consequence of limited space in the manuscript), are marked with C at the beginning of the next line. (As the reader might have observed in one of the paragraphs above.) Should a hyphen - happen to be the last character of the line, it nevertheless should be entered verbatim, when a C sign is encountered. Mandatory arguments are denoted 3 hmusthave i, optional arguments [maybe ]. Setup 3.1 Requirements Strictly required Mathematica 4.0 or later AT X, L E PSfrag dvips, Ghostscript AT X package [3] L E Recommended Mathematica 5.1 or later CustomTicks pst-pdf AT X package [11] L E pdftricks [10] AT X package [12] L E beamer LATEX class [13] pdfcrop Note that the [14] (which requires Perl) ps4pdf name ps4pdf, 3.2 Installation package is deprecated by which may conict. 1. Check the requirements! 2. Unzip the 3. Read the MathPSfrag README.TEXT package le 4 pst-pdf. Both provide a shell script of the 4. Download CustomTicks [10] (strongly MathPSfrag. recommended) and put CustomTicks.m into the main directory of (Presumably this directory is named 5. Try to translate the psfrag MathPSfrag-2.0.) is-psfrag-installed.tex with LATEX. If it does not work, install AT X package. L E 6. Is Mathematica version 5.0 or earlier installed? Install MathPSfrag-2.0/latex/mma4tex/mma4tex.tex and MathPSfrag-2.0/latex/mma4tex/mma4tex.sty into subdirectory {TEXMF}/tex/latex/tex4mma of your TEX distribution. Need more details? Read section 9. 7. Load MathPSfrag-Test.nb and execute line by line. Errors if any probably occur MathPSfragConfigurationTest[] line. Make sure that LATEX, dvips and Ghostscript are in the system's execution path that's the clean solution or nd the exact location of the executables and provide them via the UnPSfrag options marked by (* EDIT THIS *) in the test notebook. Need more details? after the Read section 5.4. Congratulations. 3.3 Testing AT X examples are set up in such a way that they translate even without the user The L E having to generate her own set of graphics. However for testing, it is useful to ensure that only the user generated content is included, which requires some editing. 1. Check 2. Edit xmpl-psfrag-orig.pdf to get an impression of what we want to create. MathPSfrag-2.0/latex/common/inc-preamble.tex: Comment the line \graphicspath{{../myfigs/}{../origfigs/}} and uncomment the line \graphicspath{{../myfigs/}} This will ensure that only the with MathPSfrag. user's graphics are loaded and not the ones delivered If you have changed the default location of where the graphics are exported to, you have to change above line accordingly. AT X the example in 3. L E execute Makefile.sh MathPSfrag-2.0/latex/xmpl-psfrag/. Hint: You Makefile.bat (for Windows). 4. Have a look at the output and compare with look good? might (Linux or Mac) or xmpl-psfrag-orig.pdf. Does it Minor dierences might be due to dierent Mathematica versions. Consider to bug report in case of errors, but have a look at section 12 before. 5 tag ⊗ TE X ⊗ 1.0 0.8 -3 -2 0.8 0.6 0.6 0.6 0.4 0.4 0.4 0.2 0.2 1 2 3 -3 -2 b) Figure 2: Action of 1.0 0.8 -1 a) TEX ⊗ 1.0 0.2 1 -1 2 3 -3 -2 c) 1 -1 2 3 d) \psfrag{tag}[bc][bc]{\TeX}. The rst coordinate pair [bc] picks the reference point (red crossed circle) in the TEX expression (g. a), the second one in tag that is part of the original EPS le (g. b). the Positioning is achieved by overlaying both boxes such that both reference points coincide (g. c). The nal result is shown in g. d. Scales are exaggerated for better illustration. 3.4 Why conguration is needed MathPSfrag is divided into two layers: A part that produces correspondingly tagged and Ghostscript commands and EPS les, and a part that merges these two les by feeding them AT X. For the latter part, into L E dvips \psfrag MathPSfrag needs to know the exact location of the LATEX, executables. Under Unix-like systems or if you have a properly congured system path under Windows (unlikely), chances are that you do not have to congure MathPSfrag AT X distribution on at all. If for some reason there, there is no L E your Mathematica system, you may want to use the of the UnPSfrag command. unpsfrag bash-shellscript instead It might also work in a Cygwin [15] environment, but hasn't been tested yet. 4 PSfrag LATEX package AT X package This is intended to be a short introduction to the L E PSfrag explaining only the essential features necessary to understand the corresponding Mathematica package's internals and to take advantage of its manual options if automatic placement does not yield the desired result. The full documentation can be found in [3]. PSfrag provides the macro \psfrag{htag i}[[texposition ]][[psposition ]][[scale ]][[rot ]]{hLATEX i} which replaces any occurrence of htag i in the output of an process has been illustrated in g. 2. According to [3], all \includegraphics EPS le by hLATEX i. This \psfrag calls that precede an (or equivalent) in the same or surrounding environments will aect the output of the included graphics; i.e., \psfrag commands can be dened either locally, to act on strictly one graphic, or globally, thus acting on all graphics in a document. [texposition ] and [psposition ] are optional arguments that allow to set (rst) the vertical (top, bottom, Baseline, or center) and (second) the horizontal (left, right, center) alignment of the replacement text by specifying the respective rst character of the choices given in parentheses. The arguments refer to the position of the reference point AT X construct is placed such that its reference in the respective bounding boxes. The L E point is at the position of the corresponding PostScript (tag) box' reference point, cf. g. 3 and 2. 6 — 30] [ ] .5 ][1 l c [ bl] —[ (center line) (center line) — [tc ][c c] [0 .7 5] [4 5] — —[cl][tc]— —[tl][tr][1][180]— —[Bl][tl]— (baseline) —[tr][Bl]— —[cc][cr]— —[bc][Bc]— —[Bc][Br]— —[Br][bc][2]— —[br][br]— —[cr][bl]— Figure 3: Illustration of the various optional arguments of the from [3] with minor changes. \psfrag command, taken AT X The rst option determines the alignment of the L E AT X macro description, while the second one is responsible for the point to which the L E is attached. [scale ] and [rot ] permit scaling and rotation of the inserted box, where the rotation (in degree) is relative to the slope of the PostScript bounding box such that a value of AT X scaling 0 preserves the orientation, see g. 6. Scaling is best achieved by using L E commands, like \Large, instead of the [scale ] AT X fonts option, since the standard L E consists of bitmaps rendered specically for the chosen size and do not rescale well. Since PSfrag exchanges the labels of an EPS bounding box of the resulting image. Fortunately, bb and trim, EPS le. image, these may protrude from the \includegraphics oers the options which may be used to override or correct the obsoleted information in the In particular, in conjunction with some of the PDF production techniques de- scribed in the section 6, correct(ed) bounding boxes can be important because protruding material might be clipped. 5 MathPSfrag interface commands MathPSfrag's EPS generation: PSfrag , which supersedes Mathematica's Export command, and PSfrag, which allows overriding of the defaults for particular expressions. In addition the UnPSfrag AT X and Ghostscript to carry out the PSfrag replacecommand is provided which calls L E There are only three commands needed to control CExport ments and create an (ordinary) \includegraphics 5.1 EPS and PDF image that can be included with the usual command. PSfragExport PSfragExport[hbasename i, hgraphics i, [options ]] converts hgraphics i, the usual PSfragExport Graphics construct returned by Mathematica commands like Plot, to an EPS le AT X le containing \psfrag macros. PSfragExport returns the hbasename i and a L E and the names of the generated les in a list, suitable for processing by UnPSfrag; i.e. UnPSfrag[PSfragExport[...]]. The UnPSfrag command, if provided, will merge these two into a single EPS le and will also produce a [options ] PDF version. More about this in section 5.3. can be any combination of the following options, listed with their paren- thetic defaults. 7 TeXSuffix→"hstring i" ("-psfrag.tex") EpsSuffix→"hstring i" ("-psfrag.eps") RenumberTags→hboolean i (False) Format...→hpsfrag i (PSfrag[#]&) Any other options will be passed on to Export command, respectively. AT X and The respective le names of the L E to which the value of the options TeXSuffix or applied to the graphics using a Show EPS le are determined by hbasename i and EpsSuffix is appended. Unless a base name containing a path is given, the output is written to the current directory, which SetDirectory. RenumberTags→True will renumber can be set using Mathematica's The option all tags and represent the number as one of 52 (small and capital) Latin characters or a combination of letters when the number is larger than 52. This feature, which generates very short tags, sometimes required to achieve a more precise positioning. For completeness' sake, it shall be mentioned that there is a number of Format... options, which determine how the automatic processing of text generating graphics options is handled. The default is pretending the user having applied PSfrag without any additional options to the text content of the respective option. For example the Plot PlotLabel→"foo" would be turned into PlotLabel→PSfrag["foo"] due to the FormatPlotLabel option having the value PSfrag[#]&. The Format... options provide a method for changing the default treatment of particular Plot options. Suppose one would want to display a dierent number of signicant digits on the x- and y -axis. This could be achieved by using option FormatTicksX→(PSfrag[#,TeXCommand→MyDigitsX[#]]&) FormatTicksY→(PSfrag[#,TeXCommand→MyDigitsY[#]]&) with MyDigitsX/Y suitable, user-dened functions that accept a number as argument and return a string containing a well formatted number. However, the recommended method of customizing axes labels is using the CustomTicks package [10]. A minimal example is given in section 11.2. 5.2 PSfrag PSfrag Usually one will not use the Format... options for the purpose of manually controlling the output, but wrap the PSfrag[hexpr i, [options ]] command directly around any Mathematica expression graphic, such as the argument of a Text PlotLabel→... graphics directive; e.g., p=Plot[...,PlotLabel→PSfrag["χ^2-test",...]]; PSfragExport["chisquare", p]; 8 or hexpr i appearing AxesLabel→... as text in a option or a PSfrag processes the following options, whose defaults have been put in parentheses. TeXCommand→"hstring i" (Automatic) PSfragTag→"hstring i" (Automatic) TeXPosition→"hyx i" (Automatic) PSPosition→"hyx i" (CopyTeXPosition) PSRotation→hnumber i (0) PSScaling→hnumber i (1) Actually, PSfragExport's automatic mechanism simply wraps PSfrag around all Text primitives using the default values above. However, manual wrapping has the advantage of allowing dierent options to be applied to expressions where the automatic behavior did not give satisfactory results. TeXCommand→"hstring i" uses hstring i AT X command to appear in the as the L E nal EPS graphic as a replacement of the corresponding expression hexpr i. If set to Automatic, the internal function GuessTeX is called, which is basically a wrapper around TeXForm that adds $ signs around math expressions.1 The content of PSfragTag is a unique alphanumeric tag that is used as a placeholder in the graphics. In most cases the user will not want to change the Automatic default, which corresponds to generating a valid tag from a string representation of hexpr i. The remaining options are in one-to-one correspondence with those of \psfrag ex- AT X plained in section 4, see there; i.e., they determine the alignment of the generated L E TeXPosition is to extract the alignment of the surroundText command is produced during export.) The default value CopyTeXPosition of PSPosition does exactly what it says; i.e., taking over the value of the TeXPosition option. The values of PSRotation and PSScaling are relative to the Mathematica expressions, that is the default values will labels. The default behavior of ing Text command. (If there is none, it waits till the preserve both orientation and size. MathPSfrag uses the FullGraphics command to determine the alignment values for TeXPosition and PSPosition. Unfortunately FullGraphics does not work for threedimensional graphics, such that PSfragExport falls back to PSfragManualExport, which does not perform any alignment detection and can also be used for two-dimensional PSfrag has to be applied Text directive and text producing option like PlotLabel. TeXPosition will have to be given by the user. graphics if automatic processing is not desired. In these cases by hand to the argument of any Moreover at least the values of 5.3 UnPSfrag With the commands described so far, standard MathPSfrag Mathematica. First, creation of pre-rendered frag PSfrag EPS pictures can be produced. AT X run from within provides two additional features that require a full L E EPS images, which do not require the PS- package anymore. Such pre-rendered images will be called unpsfraged henceforth. Second, conversion to PDF preview of the nal plot. AT X or raster images providing a images suitable for pdfL E For both features, 1 MathPSfrag needs to know where to nd To be more precise, GuessTeX has two options that allow the user to override or modify the code generated by TeXForm. These options take care of adding the required $ signs and also take into account part of the version dependence of TeXForm, cf. section 10 9 AT X, the executables for L E dvips and Ghostscript. Unless the binaries are in the system's execution path (as will be the case for Unix-like operating systems), this requires the user to set the location of the les explicitly. The notebook containing the code of all example plots shown in this manual also contains a comprehensive step-by-step guide of how to set up these paths permanently. UnPSfrag The syntax of UnPSfrag is UnPSfrag[{hbasename i,hepsfile i,htexfile i},[options ]]; where hbasename i is used to create the names of output les by appending suitable suces like .pdf or .eps. the tagged EPS and The other two mandatory parameters should point to PSfrag-LATEX les that are to be merged. PSfragExport returns the three le names in exactly this format such that its output can be directly fed to UnPSfrag. UnPSfrag has a number of additional options that control how images are created. Again only the most important ones shall be given here, while a complete list is given in the manual. By default, UnPSfrag only produces an EPS and a possible to generate other output formats by setting the PDF le, though it should be UnPSfragOutputFormats option accordingly. Furthermore UnPSfrag shows a low resolution bitmap preview of the nal images. While this is extremely useful for checking if MathPSfrag has produced the desired results, it will enlarge the notebook considerably, which can be inconvenient for email exchange. PreviewDevice option to None will switch o this behavior. AT X code, it might require When using the PSfrag option TeXCommand to specify L E additional style les. These can be included by UnPSfrag when providing the appropriate \usepackage command as a string via the TeXPreamble option. IncludeGraphicsOptions is the most important option. The string it provides is AT X le used to perform the handed over to the \includegraphics command in the L E \psfrag replacements. The option can therefore be used to set the size of the rendered graphics; e.g., by setting its value to "width=7cm". Note however that the nal bounding Setting the content instead of exactly matching the specied size. This bounding box changing during PSfrag's replacement procedure. box will correctly t the image mismatch is due to the When an exact size is required, it can be reapplied in the manuscript, though it is better to adjust the size from within Mathematica, the reason for which is explained in the next section. 5.4 Conguration When no pre-rendered images are desired, conguration is not required. In order to use UnPSfrag however MathPSfrag needs to know where to dvips and Ghostscript. The respective paths may be set SetOptions[UnPSfrag, LaTeXExecutable→"hstring i", DvipsExecutable→"hstring i", GhostscriptExecutable→"hstring i" ]; 10 AT X, nd the executables for L E by invoking where the default values are "latex", "dvips", and pending on whether the system is Windows based. MathPSfrag path. "gs" or "gswin32c", the last de- These values are chosen to make run out of the box provided that the binaries are in the system's search This will most likely be the case on Unix-like systems; whereas Windows users might either have to adjust their path environment variable or use absolute le names in 2 the above options. Additionally MathPSfragConfigurationTest[] frag is able to nd all components. can be invoked to check if MathPS- Step-by-step instructions that guide the user through the conguration are provided in the notebook MathPSfrag-Test.nb, which also gener- ates all of the examples in section 11. MathPSfrag evaluates the variable $PostMathPSfrag after being loaded, which allows init.m le3 that contains the conguration settings. It can also be used to make Mathematica nd MathPSfrag without explicit path; e.g., setting up a private AppendTo[$Path, "C:\\my_path_to\\MathPSfrag"]; $PostMathPSfrag := SetOptions[UnPSfrag,...]; 5.5 In the manuscript UnPSfrag'ed images do not require any additional treatment or package beyond graphics or graphicx. Since EPS and PDF versions are created anyway, it is recommended to not provide any sux for the le name in the \includegraphics command, such that the AT X and pdfLAT X. It is possible to issue the common manuscript translates with both L E E size options, but this will also change the labels, such that they will not have the xed TEX sizes anymore. This can potentially reduce the fonts quality, in particular when TEX's standard computer modern fonts are used, which are composed of bitmaps optimized for UnPSfrag option DvipsOptions is by default set to "-Ppdf", dvips replace bitmap fonts by outline fonts on most systems, thus reducing a particular resolution. The which makes the problem to a mere mismatch between the label's size and that of the manuscript's text. In any case it is advisable to adjust the size from within Mathematica before rendering by applying It is also possible IncludeGraphicsOptions to follow a pure PSfrag performed on the level of the manuscript. to UnPSfrag. approach, where all replacements are This is discussed in section 4. Before, a number of usage examples shall be given. pdfLATEX 6 AT X documents, the author often not only has to provide the For publication of L E nal manuscript but also the sources to produce them subject to constraints set by the publisher. MathPSfrag essentially oers two levels of image production, a rather sophisticated UnPSfrag approach, which aims at producing pre-rendered stand-alone images as has been described above, and a classical, PSfrag centric approach. In this approach, MathPSfrag is used to produce a tagged EPS le plus a PSfrag translation Therefore, AT X run of the le, which can convert the tags back into readable labels during the L E 2 3 The backslash is an escape symbol and has to be doubled; e.g., "C:\\Programs\\GS\\gswin32c.exe". This is a le that is automatically loaded upon start-up; see 's Help Browser. Mathematica 11 manuscript. These two les are generated by PSfragExport. (Further use of UnPSfrag would join this pair into stand-alone graphics.) The decision which approach to use has an impact on both the process of image creation and on how to include the images and compile the manuscript. In particular, PSfrag the centric approach is less convenient and not as compatible as the approach, since it relies on PostScript. UnPSfrag However it has the advantage of producing considerably smaller images of potentially better typesetting quality as the used fonts are guaranteed to match the document's. Furthermore, the label's font size is xed in this approach, which is of particular importance for the bitmapped Computer Modern, though modern TEX distributions have outline fonts available which scale more gracefully. Still visual consistency might suer from dierently scaled labels. The following sections describe how to include PSfrag images into a manuscript and PSfrag MathPSfrag is accompanied by a set of example les each of which illustrates one of some ways for circumventing the PostScript-only restriction of the standard use. the strategies outlined below. 6.1 Standard PSfrag ( The standard PostScript only) PSfrag way is to include the EPS and PSfrag le in a manner similar to the following code. \begin{psfrags} \input{example-psfrag.tex} \includegraphics{example-psfrag.eps} \end{psfrags} The {psfrags} starts an empty group provided by PSfrag, whose sole purpose is making \psfrag denitions local to the following graphic. The produced DVI le is then required to be converted to PostScript using dvips; and PDF can only be created by distilling from the PostScript version using for example Acrobat or Ghostscript (ps2pdf). The disadvantage of the pure PostScript approach is that the advanced typesetting AT X are not available. features of pdfL E This restriction may be overcome by the either use of the package. 6.2 4 ps4pdf, pst-pdf or pdftricks pst-pdf ps4pdf is deprecated by pst-pdf, which follows the same strategy of using LATEX to produce a collective PDF container for images. pst-pdf is a bit more convenient as it does not require (or allow) to mark PostScript related code. A drawback of this feature is that the above mentioned quick x for a discrepancy between the two outputs of a combined AT X/pdfLAT X version cannot be applied anymore since any invisible frame boxes would L E E not be included in the PDF container le. That means that the use of pst-pdf will restrict the manuscript to translations with AT X at least in the sense that it is not possible to write a manuscript that will simulpdfL E AT X. A major advantage taneously have perfect bounding boxes when translated with L E of pst-pdf 4 is that it provides the additional package option notightpage I would like to thank Ross Moore for bringing these packages to my attention. 12 to support use of pdfcrop by providing trim options. extra space around the images without requiring the use of individual 6.3 pst-pdf pst-pdf extracts all images of a manuscript in an additional LATEX run with the help of the preview package. These can then be turned into a PostScript le and distilled to AT X run, PDF replacements for a PDF that is called image container. During the pdfL E PostScript parts are read from the image container. Whenever content or order of the images are changed in the manuscript, the image container must be regenerated. pst-pdf. Unfortunately, ps4pdf, which is still installed on many systems, has a similar script sharing the same name, ps4pdf. It is important to ensure that the correct version of the ps4pdf is used that refers to pst-pdf. There is one additional catch due to the way \psfrag invalidates bounding boxes: pst-pdf must be loaded with the notightpage option and the ps4pdf script must be called with the crop option. Assuming manuscript.tex to be the main document, either of the following instrucThe required steps are automated in a script accompanying the predecessor package tions produces the image container: ps4pdf --crop manuscript.tex or latex manuscript.tex dvips -Ppdf -o manuscript-crop.ps manuscript ps2pdf -dAutoRotatePages=/None manuscript-crop.ps manuscript-crop.pdf pdfcrop manuscript-crop.pdf manuscript-pics.pdf Of course, a distiller dierent from ps2pdf may be used. Subsequently, the manuscript AT X in the usual manner, which will be use the pre-generated can be processed by pdfL E pictures stored in the -pics.pdf le. The main advantage of this variant is that all images are collected in one single le, which can be very convenient for distribution, since it is much smaller than individual PDF versions of each image. This observation suggests that the collective image le is free of double copies of resources like fonts. It is possible to arrange the preamble in an agnostic way, such that translation is AT X and pdfLAT X. This requires the image container to be created with possible with L E E latex '\AtBeginDocument{\RequirePackage{pst-pdf}} \input{manuscript.tex}'. pst-pdf during an ordinary LATEX run, but only for A pdfL TEX. One should still ensure that pst-pdf receives the notightpage option. Note that the ps4pdf script already uses this line, so ps4pdf crop manuscript.tex will Then it possible to simply not load work as expected. The preamble should read: \PassOptionsToPackage{notightpage}{pst-pdf} \usepackage{ifpdf} \ifpdf\usepackage{pst-pdf}\else\fi 13 6.4 ps4pdf It is recommended to use the package The predecessor of pst-pdf is ps4pdf, pst-pdf instead. which requires all PostScript related material (including material in the preamble) to be wrapped in \PSforPDF instructions similarly to \PSforPDF{% \begin{psfrags} \input{example-psfrag.tex} \includegraphics% [width=8cm,trim=...]% {example-psfrag.eps} \end{psfrags} }% end of PSforPDF and to include a \usepackageps4pdf into the preamble. The trim option will be dis- cussed later. Assuming the main document is tions produces a manuscript.tex the following sequence of instruc- PDF le containing all images (and only these) in PDF format. latex manuscript.tex dvips -Ppdf -o manuscript-pics.ps manuscript ps2pdf manuscript-pics.ps manuscript-pics.pdf Of course, a distiller dierent from ps2pdf may be used. Subsequently, the manuscript AT X in the usual manner without a need to recreate the picture can be processed by pdfL E AT X will use the pre-generated pictures stored in the -pics.pdf le container. pdfL E provided it has (up to the sux) the same name as the main document. A change of the order or of the content of the PostScript material in the manuscript requires repeating above steps. There is however the important catch, that material lying outside the bounding box of the PostScript graphics will be clipped. Since material in the PSfrag eectively changes the graphical EPS les, the bounding box will always be at least slightly, sometimes dramatically, incorrect and has to be manually corrected; e.g., by using the of \includegraphics to provide some extra margin. ps4pdf even allows to arrange the manuscript in trim option such a way that naive translation DVI or PDF le, while the image container can be created by giving an additional switch: AT X or pdfLAT X will produce the expected result, namely creation of a with L E E latex '\let\picsonly\relax\input{manuscript}' This can be achieved by including in the preamble \usepackage{ifpdf} \ifx\picsonly\relax\usepackage{ps4pdf}\else% \ifpdf\usepackage{ps4pdf}\else% \usepackage[inactive]{ps4pdf}\fi\fi 14 \newcommand{\PSfraginclude}[2][]{ \mbox{\PSforPDF{\whitebox{% \begin{psfrags}% \input{#2}% \includegraphics[#1]{#2}% \end{psfrags}% }}}% } ... \PSfraginclude[width=5cm]{example-psfrag} Figure 4: A customized \includegraphics for ps4pdf. As an aside, the author observed a slight mismatch between the bounding boxes AT X and pdfLAT X versions when following the additional switch strategy in the L E E outlined above. Strange enough when investigating this phenomenon by surrounding \includegraphics the command by a frame box, this mismatch did not show up any- more. This suggests a possible workaround by surrounding the material with a white i.e. invisibleframe box. For convenience the user might want to have a macro taking care of such complications, cf. g. 4 The main advantage of this variant is that all images are collected in one single le, which can be very convenient for distribution, since it is much smaller than individual PDF versions of each image. This observation suggests that the collective image le is free of double copies of resources like fonts. A disadvantage is the manual ne-tuning required to produce correct bounding boxes. AT X the situation can be alleviated to some When one is only interested in using pdfL E extent by setting the bounding box way too large using the Cgraphics such that no material is clipped. A program like trim option of \include pdfcrop can then be used to automatically correct the bounding box for all images in the image container: latex manuscript.tex dvips -Ppdf -o manuscript-pre.ps manuscript.dvi ps2pdf manuscript-pre.ps manuscript-pre.pdf pdfcrop manuscript-pre.pdf manuscript-pics.pdf 6.5 pdftricks pdftricks diers from the packages discussed so far in that it produces individual PDF les for PostScript based images. Originally it was meant to be used in conjunction pstricks package. pdftricks requires the the shell-escape capability (a.k.a. \write18 capability) activated and the programs ps2eps and epstopdf to be installed with the popular and in the system's search path. In that case a the manuscript can simply be translated by pdflatex -shell-escape manuscript.tex {pdfpic} environment. There is because \psfrag denitions are already provided that images are enclosed in an {psfrags} environment anymore, 15 no need for a local. preamble \newbox\subfigbox \makeatletter \newenvironment{subfig}{% \def\caption##1{% \gdef\subcapsave{\relax##1}}% \let\subcapsave\@empty \setbox\subfigbox\hbox \bgroup} {\egroup \subfigure[\subcapsave]{\box\subfigbox}} \makeatother document \begin{subfigure} \begin{pdfpic} ... \end{pdfpic} \end{subfigure} Figure 5: How to include a {pdfpic} environment into a subgure. \begin{pdfpic} \input{example-psfrag.tex} \includegraphics[width=...]{example-psfrag.eps} \end{pdfpic} {pdfpic} environment is a {verbatim}-like environment that writes its content to manuscript-fig1.tex, though the number is incremented for each {pdfpic}, AT X, dvips, epstopdf sequence. Any additional packwhich in turn is processed by a L E A ages required for this L TEX run can be included using the {psinputs} environment. In The a le; e.g., our case this will usually mean \usepackage{pdftricks} \begin{psinputs} \usepackage{psfrag,amsmath,graphicx} \end{psinputs} and possibly mma4tex, see section 9. A restriction arises from the an argument to other macros. the subgure {verbatim} nature of {pdfpic}: it cannot be used as This may be an issue when used in conjunction with package, whose documentation recommends to set up a \subfigure-like environment as presented in g. 5. When the \write18 capability is not available, one may perform the same steps by pst2pdf shell script that accompanies pdftricks. (The latter should hand or using the work for example in a CygWin environment [15].) These steps have are 16 latex example-fig1.tex dvips -Ppdf -o example-fig1.ps example-fig1.dvi ps2eps -l -f example-fig1.ps epstopdf example-fig1.eps and have to be repeated for each *-fig?.tex le. Once the gures have been generated, \NoProcess[1-100], where the maximum has to be one may switch o processing with suciently large. 7 Command reference The following is a complete list of all public symbols provided by the age. MathPSfrag pack- The order is approximately alphabetic, though options are collected below the corresponding function. For a truly alphabetic list, have a look at the index. BoundingBoxFromRaster[hrastergraphics i,hextramargin i] rectangle around the non empty region of rastergraphics. by extramargin in all directions. (see there) is not set to returns the smallest This rectangle is enlarged This function is used when the bbox. BoundingBoxFrom CRaster BoundingBoxDevice CreatePSfragRules[hexpr i] generates the TEX commands corresponding to any CreatePSfrag PSfrag used in hexpr i. This is an auxiliary function for hPSfragExport i and may CRules be directly used for debugging or educational purposes. Graphics object whose labels contain PSfrag CreatePSfragRules[FullGraphics[anyplot]]. a 1. 2. You may want to apply it to commands. RenumberTags: Option for CreatePSfragRules PSfragExport (see there). The usual application is that can also be passed through PSfragPrologue: Option for CreatePSfragRules PSfragExport (see there). that can also be passed through FetchGhostscriptDevices[htempfilename i] calls Ghostscript to nd out which of Fetch $MathPSfragGlobal PredefGsDevices are supported by the partic- CGhostscript CDevices ular version of Ghostscript on the current system. the devices listed in Format... HandleAutomaticPSfrag, that can Format PSfragExport. This is an internal feature that is present to keep A number of (internal) options for also be passed to the design exible and separate the general processing from the logic required for the treatment of particular Plot options. When you want to override the default behavior often it is easier to use PSfrag of PSfragTicks. All MathPSfrag Format* options can be used to ne-tune the output of the current automatic handling of axes labels and the like. Their respective default value is usually just PSfrag, which is wrapped around each 17 Text element that is produced by behavior of PSfrag is to call Plot options like AxesLabel or Ticks. Since the default GuessTeX, you obtain the TEX code that is generated by this rather imperfect function. You can include you own TEX generating function by Format...→PSfrag[#,TeXCommand→mytexguesser[#]]&, where you obviously would have to implement mytexguesser to convert an arbitrary expression that could show up into a TEX command. For Tick marks these are usually just numbers, so you might want to use the FormatTicksX and FormatTicksY options to apply a function that sets exactly the number format you want. See also NumberToTeX, a function that could setting be used for this job. The full list of these options is FormatAxesLabelX, FormatAxesLabelY, FormatFrameLabelEast, FormatFrame LabelEastRotated, FormatFrameLabelNorth, FormatFrameLabelSouth, Format FrameLabelWest, FormatFrameLabelWestRotated, FormatFrameTicksEast, FormatFrameTicksNorth, FormatFrameTicksSouth, FormatFrameTicksWest, FormatPlotLabel, FormatTicksX, FormatTicksY. C C The rotated variants are used when Rotated→True has been applied to the graph- ics. Generate CTemporaryName GuessTag GenerateTemporaryName["hprepend i"] creates a string that can be used as a unique "hprepend i". le name and starts with a given string GuessTag[hexpr i] tries to create a unique string describing hexpr i and entirely con- sisting of alpha-numerical characters. (This is called a tag.) It is used by PSfragTag→Automatic MaximumTagLength: Option produced by GuessTag. MinimumTagLength: Option produced by GuessTag. GuessTeX ReplacementHook CCooperative PSfrag when is set (default). for GuessTag. This sets the maximum length of a tag for GuessTag. This sets the minimum length of a tag GuessTeX[hexpr i] creates a string containing PSfrag (see there) when TeXCommand→Automatic the TEX form of expr. It is used by is set (default). ReplacementHookCooperative Option for GuessTex which contains a list of shape {{priority, test, applybefore, applyafter},...} that can be used to customize the behavior of GuessTeX. Starting with the lowest value of priority, each test is called AT X with the Mathematica expression that GuessTeX is supposed to transform into a L E expression. Each test that returns True will cause the respective applybefore command to be applied to the Mathematica expression. In addition after the default generation AT X code that is preformed in any case, the associated of L E AT X code. applied to the string containing the L E 18 applyafter command is ReplacementHookExclusive Option for GuessTeX which contains a list of shape ReplacementHook {{priority, test, command},...} that can be used to customize the behavior of CExclusive GuessTeX. Starting with the lowest value of priority, each test is called with the Mathematica expression that is to be transformed to a LATEX expression. The rst AT X code. Instead the test returning True if any will stop the default generation of L associated command E is called and its return value is used as TEX code. HandleAutomaticPSfrag[graphics,opts] PSfrag commands around all tex- HandleAutomatic tual elements generated by the graphics options AxesLabel, Ticks, PlotLabel, Frame CPSfrag Label and FrameTicks. It accepts a number of options, all starting with Format, that allow to ne-tune this behavior. For example FormatTicksX has the default value PSfrag. Setting FormatTicksX→(PSfrag[#,TeXCommand→myFormatter[#]]&) would wraps C allow to write a function that gives better TEX output for all entries on the x axis. See also NumberToTeX. PSfrag commands Text elements generated by the associated Plot option. Use OptionsTo decide if this handler is called and the corresponding Format... options to The following are default handlers that take care of auto-wrapping around the CHandle to ne-tune the formatting. HandleAxesLabel HandleFrameLabel HandleFrameTicks HandlePlotLabel HandleTicks MathPSfragConfigurationTest[[tempfile ],[opts ]] checks the conguration of MathPSfrag UnPSfrag (see there). [tempfile ] is by default a (hopefully) unique name generated CConfiguration CTest from $SessionId. It is written to the current directory. By default the test is not carried out if [tempfile ] already exists, though you can set ForceOverwrite→True as an option to change that. Be careful. It may be better to simply provide a dierent name for tempfile. NextLaTeXError[[n ]] displays the n-th error in a LATEX run performed by UnPSfrag. NextLaTeXError When omitting the argument it shows the rst error message. OptionHandlers: Plot options signs to Option for HandleAutomaticPSfrag and PSfragExport that as- dierent default handlers that actually carry out the formatting. Format... options setting OptionsToHandle Usually do not touch this option but instead use the corresponding to change the behavior or switch automatic handling o by accordingly. 19 OptionHandlers OptionsToHandle OptionsToHandle Option for HandleAutomaticPSfrag and PSfragExport that con- tains a list of all options that are taken care o by the automatics. Currently automatics are implemented for the default value of AxesLabel, Ticks, PlotLabel, FrameLabel, FrameTicks, which is OptionsToHandle. You can switch o the automatics entirely by setting this option to . The formatting of a Plot's elements can be changed by setting the corresponding PSfrag Format... options. PSfrag[hexpr i, [opts ]] can be used to achieve a higher level of control over the output of PSfragExport by attaching individual typesetting information to hexpr i. Use PSfrag[expr] where ever you want to display StandardForm[hexpr i] (or Traditional Form) on the screen, while a corresponding TEX command will be prepared for use AT X. A typical use is Plot[..., PlotLabel→PSfrag[expr,opts]]. The most within L E important option to PSfrag is TeXCommand, which allows to dene how expr is typeset C when exported to an EPS le. PSfragExport[hfilename i, hgraphics i] to write an EPS le in the current working directory (see SetDirectory). PSfragExport will append a sux (default: -psfrag.eps) to hfilename i. This le will contain a substitute alphanumeric tag for every PSfrag command which in turn is replaced by a TEX command (by default guessed by a stupid algorithm) using the \psfrag command (see documentation of psfrag.sty). The replacement TEX rules are by default written to filename-psfrag.tex. You may independently generate and display these \psfrag commands by CreatePSfragRules[graph ics]. PSfrag is automatically threaded over a List when the argument of TeXCommand is a List of same length. The available options are TeXCommand, TeXPosition, PSPosition, PSRotation, PS Scaling, PSfragTag. Each has a separate help text. You might also want to study the documentation shipped with psfrag.sty. Use C C PSfragTag PSfragTag PSfrag that may be used to manually set the tag that is used by the TEX command \psfrag to substitute for a TEX command. Usually the default setting (PSfragTag→Automatic) gives good results an should be left unchanged. If you have problems with too large tags, you might also try to use RenumberTags→True as an option for PSfragExport, which yields shorter tags. PSPosition PSPosition is an option of PSfrag dening the alignment of the postscript text output by Export. Its default CopyTeXPosition takes over value of the TeXPosition option, while the value Automatic is replaced by the alignment of the rst surrounding Text graphics directive. Explicit values can be the same as those of Position. is an option of CopyTeXPosition CopyTeXPosition: PSRotation PSRotation Default value of is an option of PSfrag. PSfrag's option PSPosition. Its range is 0 to 360 degree. It may be used to 20 turn the text counterclockwise in the nal PostScript output. PSScaling is an option of PSfrag. It is a positive number which is used to increase the size of any TEX command's output in the nal meaning no rescaling. le. The default value is 1, It is recommended not to use this option but instead use TEX \small. MathPSfrag inserts \PFGstyle commands in front of each TEX \newcommand{\PFGstyle}{\small} in the preamble will therefore commands like expression. EPS PSScaling Issuing scale all labels in a manuscript. TeXCommand is an option of PSfrag. C→Automatic] The default PSfrag[hexpression i, TeXCommand TeXCommand deduces the TEX command from the given expression. For complicated expressions, this may not give satisfactory results and you may have to set them by hand using TeXCommand→"TeX command string". (Note, that the TeXForm output of Mathematica is version dependent.) If the argument is not a string, it is assumed to be a function that returns a suitable TEX string when applied to the Mathematica expression. TeXPosition is an option of PSfrag dening the alignment of the TEX text replacing TeXPosition the tag in the EPS output. Possible values are any two-character combination of ("B", "t", "c", "b") and ("l", "c", "r"). The default is Automatic. For the x label in AxesLabel you should use "Bl". TeXShift→{"hx i","hy i"} box by the specied amount. is an option of hx i a numeric value is given, the unit and pt hy i PSfrag shifting the position of the TEX are TEX dimensions; e.g., 3cm or 4pt. TeXShift When is assumed. TeXShiftX→hvalue i is equivalent to TeXShift→{hvalue i,0}. TeXShiftX TeXShiftY→hvalue i is equivalent to TeXShiftY→{0,hvalue i}. TeXShiftY PSfragExport[hfilename i, hgraphics i, [opts ]] writes an Encapsulated Post- EPS) version of graphics into a le. Filename may contain a directory, otherwise the EPS le is written into the current working directory. This EPS le is meant to be read Script ( \includegraphics and processed by the PSfrag LATEX package. The TEX commands required by PSfrag are also written into a le. Note that PSfragExport automatically appends suces dened by EpsSuffix→... and TeXSuffix→... to create the actual le names. PSfragExport rst generates automatic PSfrag commands for all textual elements of a graphic (including numbers and formulas) by calling HandleAutomaticPSfrag. All options [opts ] are passed through. This means that in particular special formatting by 21 PSfragExport HandleAutomaticPSfrag can be given directly to PSfragExport. The PSfragManualExport, which does the actual job of creating the EPS and TEX le. A list containing hfilename i and the names of the generated les is returned. This list is suitable as input for UnPSfrag, such that typical usage looks like this: PSfragExport["mydemo",myplot]//UnPSfrag instructions of second step is to call EpsSuffix TeXSuffix PSfragManual CExport PSfragManualExport[hfilename i,hgraphics i] converts all PSfrag entries in a Graphics object into alphanumerical tags using CreatePSfragRules. The result is exported into an ordinary EPS le, while the generated \psfrag TEX commands are written into a TEX le. The respective le names are determined from the param- hfilename i and the sux given in the PSfragExport options EpsSuffix and TeXSuffix. PSfragManualExport returns a list of the form {filename, epsfilename, texfilename}, which is suitable as input to UnPSfrag. PSfragManualExport is internally called by PSfragExport after constructing automatic PSfrag commands for all textual elements in a graphic by calling HandleAutomaticPSfrag. eter PSfragTicks PSfragTicks[htickspec i,[opts ]] maps PSfrag[#,hopts i]& at each label in a tick mark specication (see the Ticks option of Plot). Note that tickspec is for one axis only, so PSfragTicks has to be applied to each axis. Since PSfragExport applied to two-dimensional graphics will automatically wrap PSfrag at the correct positions, this is only needed, when you want to have additional control over the output or for threedimensional plots. A typical usage example: Needs["CustomTicks`"]; Plot3D[..., Ticks->{ PSfragTicks[LinTicks[xmin,xmax], TeXPosition->"Bc"], PSfragTicks[LinTicks[ymin,ymax], TeXPosition->"Bl"], PSfragTicks[LinTicks[zmin,zmax], TeXPosition->"Br"] }]; TextToPSfrag TextToPSfrag[hgraphics i] simply wraps PSfrag around all Text directives conhgraphics i. It is used by HandleAutomaticPSfrag, which in turn is called PSfragExport. tained in by UnPSfrag UnPSfrag[{houtputprefix i,hepsinfile i,htexinfile i},[opts ]] transforms an EPS graphics le hepsinfile i relying on \psfrag commands (contained in htexinfile i) into a standalone graphics. .eps or .pdf outputprefix should give a valid lename when a sux like is appended. Example: 22 UnPSfrag[PSfragExport["example",myplot]]; PSfragExport["example",myplot]//UnPSfrag; BoundingBoxDevice is an option for or UnPSfrag that defaults to Ghostscript's bbox BoundingBox device. Do not change this option unless you have good reason to do so. The format is a device triplet device like png or as described for the pnm PreviewDevice CDevice option. You may choose a raster here in which case Mathematica will determine the bounding box from the bitmap graphic by counting non-empty rows and columns. This is not quite as precise as the bounding box generated from memory and time. Ghostscript's bbox device and takes more It has the advantage of correctly dealing with invisible elements, which are not cut o by Ghostscript's bbox. DvipsExecutable is an option for UnPSfrag that contains an absolute or relative DvipsExecutable dvips command. On Unixes this will usually be in the system path, so no change will be required in most cases. On Windows systems dvips neither has a standard location nor is it necessarily in one of the folders given in the system's PATH environment variable. In that case, you will have to manually search the dvips program and set the absolute path explicitly, e.g. DvipsExecutable→"C:\Programs\texmf\bin\dvips". Also make sure to set the correct values of LaTeXExecutable and GhostscriptExecutable. You can check your conguration with MathPSfragConfigurationTest. The MathPSfrag -Test.nb notebook gives a step-by-step guide for the correct conguration of UnPSfrag. name of the C DvipsOptions EPS les. UnPSfrag that is passed on to dvips when producing DvipsOptions "-Ppdf" will ensure replace bitmap by outline fonts on most is an option for Its default value modern systems. ForceOverwrite→boolean Option for UnPSfrag and for MathPSfragConfiguration ForceOverwrite CTest (see there, respectively). GhostscriptExecutable→"hstring i" is an option for absolute or relative name of the Ghostscript command. gs UnPSfrag that contains an On Unixes this defaults to and will usually be in the system path, so no change will be required in most cases. gs-gpl. On Windows systems, this option defaults gswin32c, but the program neither has a standard location nor is it necessarily in one of the folders given in the system's PATH environment variable. In that case, you will have to manually search the gswin32c program and set the absolute path explicitly; e.g. GhostscriptExecutable→"C:\Programs\texmf\bin\latex". Also make sure to set the correct values of LaTeXExecutable and DvipsExecutable. You can check your conguration with MathPSfragConfigurationTest. The MathPSfrag-Test.nb notebook gives a step-by-step guide for the correct conguration of UnPSfrag. (Also have a look Sometimes you have to change this to to 23 Ghostscript CExecutable at explained there.) IncludeGraphicsOptions IncludeGraphics COptions $PostMathPSfrag UnPSfrag that can be used to change the IncludeGraphicsOptions→"width=3in" will is an option for size of the generated image. For example AT X does not change the size of the plot. However the size is only approximate since L E include the size of the labels in the calculation. LaTeXExecutable LaTeXExecutable is an option for UnPSfrag that contains an absolute or relative name of the latex command. On Unixes this will usually be in the system path, so no change will be required in most cases. On Windows systems latex neither has a standard location nor is it necessarily in one of the folders given in the system's PATH environment variable. In that case, you will have to manually search the latex program and set the absolute path explicitly, e.g. LaTeXExecutable→"C:\Programs\texmf\bin\latex". Also make sure to set the correct values of DvipsExecutable and GhostscriptExecutable. You can check your conguration with MathPSfragConfigurationTest. The MathPSfrag -Test.nb notebook gives a step-by-step guide for the correct conguration of UnPSfrag. Also have a look at $PostMathPSfrag. C LaTeXOptions LaTeXOptions is an option for AT X during the creation of on to L E MasterTeXFile MasterTeXFile UnPSfrag is an option for EPS les. that contains command line options passed UnPSfrag that contains the full TEX le that is used to convert the psfrag-EPS into a nal PostScript version. Then Ghostscript is used to convert this pure PostScript le into other formats. PreviewDevice PreviewDevice is an option for UnPSfrag. Unless there are severe problems, the only value you might choose instead of the default is Allowed values are None None to suppress generation of preview {gsdevice, suffix, options}, where gsdevice is the name of a Ghostscript device, suffix is a string that is a suitable sux for the generated le, e.g. .eps for an EPS le, and options are additional command line options to Ghostscript that can be used to change anti-aliasing settings or the like. Typically a preview device should be a raster device, like pnm or png. Further information can be found in the documentation of the Ghostscript program. images. or a device triplet; i.e. a list Remove RemoveTemporaries is an option for UnPSfrag that can be set to False for debugging. SuppressOutput SuppressOutput CTemporaries is an option for UnPSfrag put of external programs. 24 that contains instructions to discard out- TemporaryDirectory is an option for UnPSfrag that gives the name of a subdirectory Temporary AT X run in performed. All intermediate les are stored there. The temporary where the L E CDirectory directory is removed after successful execution unless RemoveTemporaries has been set to False. TeXPreamble produced by UnPSfrag that in particular can be used to change TeXPreamble UnPSfrag needs a TEX le to convert a psfrag-EPS le, as is an option for the fonts used in the image. PSfragExport, to an EPS le independent of any psfrag commands. TeX- Preamble is a string that is included in the TeXPreamble of that le and can be used to AT X packages. For example: include additional L E TeXPreamble→"\usepackage{euler}" to change the math fonts. UnPSfragOutputFormats is an option for UnPSfrag that contains a list of devices UnPSfragOutput {{gsdev1, suffix1, opts1}, ..., {gsdevN, suffixN, optsN}}. gsdev CFormats is a string containing the Ghostscript device like png, pdf and so forth. The suffix is for the lename and should contain a leading dot; i.e. .png, .pdf. The options in opts are passed to the respective Ghostscript call and allow to set additional options. In particular triplets; i.e. the resolution and the anti-aliasing settings. 8 General auxiliary functions PatchType1FontIntoEps[hinfile i,houtfile i] copies missing fonts into an This is a hack that will result in possibly usable but not standard conformant The upshot: with Do not use this. MathPSfrag, You will not need this when you replace all expressions which is a clean solution. NumberToTeX[hnumber i,[opts ]] sents number. EPS le. PatchType1Font EPS les. CIntoEps returns a string containing TEX code that repre- NumberToTeX There are several options that inuence the appearance of number: IntegerPartDigits determines the number of digits before the decimal point in a FractionalPartDigits sets the number of digits after the decChopExponent is True, exponents of the form 100 are suppressed. ChopImaginaryPart→True turns complex numbers with almost vanishing imaginary part into real numbers. In a similar manner Integerize→True will turn oating point numbers like 1. into integers. ExponentSymbol→"\cdot 10 " will format oats in the form 1.23 \cdot 10^{4}. This is the default behavior. Example: NumberToTeX[Exp[10.]]. oating point number, imal point. When ChopExponent, ChopFractionalPart, ChopImaginaryPart, ExponentSymbol, Frac tionalPartDigits, Integerize, IntegerPartDigits, IntegerToReal, Ration alToReal C C NumToBase52[hinteger i] converts a non-negative string. 25 hinteger i into an alphabetic NumToBase52 LatinCharacterSet LatinQ. LatinCharacter CSet LatinNum CCharacterSet is a list containing all 52 letters from A to Z and a to z. Used by LatinNumCharacterSetis CNumQ LatinNumQ["hstring i"] LatinNumQ a list of all 52 Latin letters and 10 digits. Used by returns True if string Latin consists entirely of alphanumerical characters (A-Z, a-z, 0-9). LatinQ["hstring i"] LatinQ returns True if string consists entirely of letters A to Z and a to z. 9 Mathematica 4.x5.0 MathPSfrag AT X code that corresponds to a particular Mathematica creates the L E expression by calling TeXForm. Starting from version 5.1 the supporting code, that only requires a few standard packages. TeXForm output is selfPre-5.1 TeXForm output will require an additional style le providing Mathematica fonts that have to be congured accordingly [6, 7, 8]. In the new approach, since a large number of Mathematica AT X packages, some symbols are created symbols do not have counterparts in standard L E by gluing together existing symbols. When applied carefully, this method can achieve acceptable results; though the current implementation is not optimal yet. The problem with the pre-5.1 output in conjunction with the PSfrag method is that AT X installation, it requires the Mathematica fonts to be available in the publisher's L E while in general they willif at allonly be available to the author. (This should not be a problem when the author decides to follow the UnPSfrag approach, where all required fonts are embedded into the image les. It is then however necessary to include the style UnPSfrag option: TeXPreamble→"\usepackage{...}".) PSfrag approach requires a compatibility package (mma4tex.tex) that is included in the MathPSfrag distribution. Basically it parses Mathles by setting the according To avoid these problems in the ematica 4.x5.0 LATEX code and replaces it by code similar to the output of version 5.1/5.2. When MathPSfrag detects Mathematica 5.0 or earlier, PSfragExport creates automatically PSfrag mma4tex.tex and issue a warning when mma4tex.sty that additionally loads mma4tex.tex is only loaded once. It is rec- les that attempt to load unsuccessful. There is also a corresponding style le the required font packages and ensures that ommended to include it in the preamble. Therefore both les have to be installed where AT X can nd them; e.g., in a directory L E tex/latex/mma4tex/ relative to the texmf direc- AT X distribution. Thereafter the le database ( ls-R) has to be updated. tory of the L E Again the details depend on the distribution. Typical names of the update command mktexlsr or texhash. For MiKTeX there is the choice between the command line program (initexmf -u) and a graphical conguration program (MiKTeX Options or are Settings; press the button General/File Name Database/Refresh Now). 26 10 Known Bugs and Limitations MathPSfrag relies on three Mathematica commands: TeXForm, FullGraphics AbsoluteOptions. All are potential sources of failure. and For the rst one, this is due to substantial changes concerning its output in its version history, which do not seem to have been publicly documented. With the latest steps in amsmath compatible LATEX though, TeXForm will probably stabilize AT X packages. To make the TeXForm output need for non-standard L E the transition towards with respect to its of Mathematica versions 4.x5.0 rely on standard packages only, a compatibility layer has been written, cf. section 9. However it will not produce satisfactory output regarding AT X. Since for most those Mathematica symbols that have no direct counterpart in L E AT X are sucient, this is only a minor restriction, purposes the symbols available in L E which also applies to the TeXForm output of Mathematica version 5 anyway. In any case, single occurrences of malformed TeXCommand option of PSfrag. TeXForm output may easily be overridden using the FullGraphics, which is not faithful in the sense Show[FullGraphics[...]] do not yield exactly the same output. The same is true for AbsoluteOptions and may be a potential source of errors. The code has been written such that the FullGraphics plot is only used for alignment information The automatic positioning relies on that Show[...] and but discarded afterward in order to isolate this discrepancy. For AbsoluteOptions this has not been possible since its output is directly needed. So far the only observed dierence is that AbsoluteOptions turns integers into oating point numbers. Therefore a mechanism to override this behavior has been implemented in GuessTeX, the function implementing automatic generation of LATEX code in MathPSfrag: Floating point numbers very close to integers are converted back to integers. Clearly this introduces another potential source of mysterious errors. Therefore this mechanism can be completely congured. GuessTeX provides two options: CHookExclusive . form ReplacementHookCooperative and Replacement The former contains of a set of rules, each of which is a list of the {rank, test, trafoexpr, trafotex}. The rank is simply used to determine the order of the rules (low rank rst). For all rules, test is a function that evaluates the Mathematica expression to be turned into LATEX and determines if the rule is activated. For all activated rule, rst all trafoexpr functions are applied to the Mathematica AT X string using TeXForm and nally the trafotex expression, it is then turned into a L E transformations are applied to the string. Currently there is only one rule (albeit in two dierent versions) for CHookCooperative Replacement : ReplacementHookCooperative-> { If[$VersionNumber >= 5.1, {10000, True &, Identity, StringJoin["$", #, "$"] &}, {10000, (Head[#] =!= String)&, Identity, StringJoin["$", #, "$"] &}]}; Mathematica 5.1 TeXForm always returns expressions in math mode, so the default rule is to always wrap dollar sign around the nal expression. TeXForm Mathematica pre-5.1 will return expressions that are strings in text mode, such that they don't need to be wrapped in dollar signs. (This is checked by the test in the last line.) ReplacementHookExclusive option contains a set of rules that have the form {rank, test, trafo}. The main dierence is that the rst rule that is activated (test The 27 Example 90 0 12 ple am x E Ex am ple 60 Ex am ple 0 30 am p l e 150 210 ple am Ex Ex Example 180 0 24 Example 270 E xam ple 30 ple m a Ex Example 0 Ex am ple 330 Figure 6: Example for substituting rotated text. To demonstrate that the new export function can preserve the orientation, only half of the labels have been substituted by AT X. L E GuessTeX: The expression is unmodied into the PSfrag replacement returns True) will immediately stop further evaluation by trafo and its result is written GuessTeX expects this result to be a string. handed over to le. Therefore Only when none of these rules were activated, the cooperative mechanism described rst will be employed. The current content of the exclusive option is: ReplacementHookExclusive->Join[{ { 900, (NumberQ[#] && Chop[# - Round[#]] === 0 )&, "$" <> ToString[Round[#]] <> "$" &}, {1000, (NumberQ[#] && (StringPosition[ToString[#], "\n"] === {})) &, "$" <> ToString[#] <> "$" &}, {1100, NumberQ, "$" <> NumberToTeX[#] <> "$" &} }, If[$VersionNumber < 5.1, { {5000, (Head[#] === PaddedForm) &, ToString[" " <> ToString[#], TeXForm] &} }, {}] ]; The rst line undoes said AbsoluteOptions bug by rounding real numbers to integers when they are very close to integers already (less then The TeXForm output of representation into TEX. 10−10 ). Mathematica up to 5.2 always turns a number's The second line uses ToString, InputForm which preserves the chosen form of the number. However, this approach will not work when a oating point number is processed that has a large exponent. (The test rejects multiple line output.) The third line will process any remaining numbers by applying function provided by MathPSfrag. NumberToTeX, a simple formatting TeXForm treats PaddedForm as a mathematical function whose name is output verbatim. ToString shows The last line intercepts another Mathematica 4.x5.0 peculiarity: the correct behavior, that is merely a number. It should be noted that there is a number of other ...Form commands that might not be treated correctly in Mathematica pre-5.1 and require similar work-arounds. 11 Figure Source Code The source code of all example plots is listed and commented below. It can also be found in the test notebook (MathPSfragTest.nb) that comes with to congure and check the installation of MathPSfrag. 28 MathPSfrag and can be used In the example code below, it sin(25x2 −6) sin(5x)+2 1.0 0.5 0.0 −0.5 .0 0.5 1.0 x 1.5 2.5 2.0 3.0 HoldForm, Mathematica would HoldForm example: Without 6−25x2 y axis to − sin 2+sin(5x) . The CustomTicks typical stripped decimal 1. on the x axis. Figure 7: the label on the the normal order package has been used to avoid will be assumed that all necessary packages have already been loaded. In particular the comparison of the automatic and manual examples should be educational. 11.1 Rotated Text Text Export and PSfragExport do the right thing, cf. g. 6. demonstrated, that PSfragExport can apply the option PlotRange→ While in some environments Mathematica does not rotate the letters of a rotated on screen, both the conventional Furthermore, it is All to the graphics before carrying out the export. Show[Graphics[{ Table[Text["Example " <> ToString[Round[phi*180/Pi]], {Cos[phi], Sin[phi]}, {0, 0}, {Cos[phi], Sin[phi]}], {phi, 0, 2Pi - 0.01, 2Pi/6}], Table[Text[PSfrag["Example " <> ToString[Round[phi*180/Pi]]], {Cos[phi], Sin[phi]}, {0, 0}, {Cos[phi], Sin[phi]}], {phi, 2Pi/12, 2Pi - 0.01, 2Pi/6}], Circle[{0, 0}, 1] }]]; PSfragExport["ex_rot", %] // UnPSfrag; 11.2 HoldForm plus CustomTicks HoldForm can be used to x the shape of an CustomTicks [10] can be used to circumvent the usual Fig. 7 is a plain example demonstrating that expression while LinTicks from stripped decimal 1. and print a much nicer 1.0 instead. holdformexpr := HoldForm[Sin[25x^2 - 6]/(Sin[5x] + 2)]; holdformex = Plot[Evaluate[ReleaseHold[holdformexpr]], {x, 0, 3}, AxesLabel→{x, holdformexpr}, Ticks→{LinTicks[0, 3], LinTicks[-1, 1]}, PlotStyle→Hue[0.6], PlotRange→{{0, 3}, {-1.2, 1.2}}, PlotPoints→100, AxesOrigin→{0, -1}] PSfragExport["ex_hold", holdformex] // UnPSfrag 29 0.5 0.0 −0.5 −0.5 0.0 0.5 0.5 0.0 −0.5 .0 Figure 8: Three dimensional example: As there exists no manual labeling was required and the RenumberTags FullGraphics3D command, PSfragExport was used option of to produce smaller tags, increasing positioning precision. 11.3 Three-dimensional Knot Here, the three-dimensional knot in g. 8 is generated. knot3d[r_, phi_] = Flatten[{(0.5 + 0.2*Cos[phi/5] + r*Sin[1.7phi]){Cos[phi], Sin[phi]}, phi/(5Pi) + r*Cos[1.7 phi]}]; ParametricPlot3D[Evaluate[knot3d[r, phi]], {phi, -3Pi, 4Pi}, {r, 0.05, 0.2}, Ticks → { PSfragTicks[LinTicks[-1, 1], TeXPosition → "Bc"], PSfragTicks[LinTicks[-1, 1], TeXPosition → "Bl"], PSfragTicks[LinTicks[-1, 1], TeXPosition → "Br"]}, PlotPoints → {200, 3}, ViewPoint → {-1.1, 2.6, 2.2}] PSfragExport["ex_3d"] // UnPSfrag; 30 3 3 2 2 p √ 3 3 cos2 (2 x) 1 3 cos 1 0 2π 3π 2 4x 2 3 0 sin(x) local maximum −1 π π 0 2 √ −1 sin(x) local maximum 0 π π 2 a) automatic 3π 2 2π b) manual PSfragExport vs. b) Plot without resorting PSfragManualExport. Additionally, the typesetting of Figure 9: Comparison: a) Plot exported with to automatics; i.e., exported with the cos . . . label has been manually improved. 11.4 Automatic vs. Manual Example Fig. 9a has been created using strictly the automatics provided through PSfragExport, while g. 9b achieves the same result by not relying on automatics at all but instead marking each textual element with a CExport PSfrag command and exporting with PSfragManual . Both examples share the rst lines of code that stretch over the full width. f1[x_] := Sin[x]; f2[x_] := 3*((Cos[2 Sqrt[x]])^2)^(1/3); SimpleLabel[tip : {_, _}, txt_, txtpos : {_, _}, align : {_, _}] := Sequence[ Arrow[txtpos, tip, HeadScaling→Absolute, HeadLength→8, HeadCenter→{}0.6], Text[txt, txtpos, align]]; mygrid = Map[{#, {AbsoluteDashing[{0.1, 1}], GrayLevel[0.5]}} &, {Pi*{1/2, 1, 3/2}, {1, 2}}, {2}]; (* Automatic *) tickmarks = { Pi/2*{0, 1, 2, 3, 4}, Automatic, None, None}; (* Manual *) mantickmarks = { {N[#], PSfrag[#, TeXPosition→"tc"]} & /@ (Pi/2*{0, 1, 2, 3, 4}), {N[#], PSfrag[#, TeXPosition→"cr"]} & /@ {-1, 0, 1, 2, 3}, None, None}; mantexstr = "$3\left|\cos \sqrt{4x}\right|^\frac{2}{3}$"; textlabels = Graphics[{ SimpleLabel[{Pi/2, f1[Pi/2]}, "local maximum", {1, -0.5}, {0, 1}], SimpleLabel[{7/6Pi, f1[7/6Pi]}, f1[x], {4.2, -0.3}, {-1, 0}], SimpleLabel[{4.2, f2[4.2]}, f2[x], {3.5, 1.5}, {1, 0}] }]; mantextlabels= Graphics[{ SimpleLabel[{Pi/2, f1[Pi/2]}, PSfrag["local maximum", TeXPosition→"tc"], {1, -0.5}, {0, 1}], SimpleLabel[{7/6Pi, f1[7/6Pi]}, PSfrag[f1[x], TeXPosition→"cl"], {4.2, -0.3}, {-1, 0}], SimpleLabel[{4.2, f2[4.2]}, PSfrag[f2[x], TeXPosition→"cr", TeXCommand→mantexstr], {3.5, 1.5}, {1, 0}] }]; rawplot = Plot[ {f1[x], f2[x]}, {x, 0, 2 Pi}, PlotStyle→{Hue[1.0], Hue[0.6]}, Frame→True, FrameTicks→tickmarks, TextStyle→{FontFamily→"Times"}]; manrawplot = Plot[ {f1[x], f2[x]}, {x, 0, 2 Pi}, PlotStyle→{Hue[1.0], Hue[0.6]}, Frame→True, FrameTicks→mantickmarks ]; exampleplot = Show[rawplot, textlabels, GridLines→mygrid]; Show[manrawplot, mantextlabels, GridLines→mangrid]; PSfragExport["ex_auto", exampleplot]; PSfragManualExport["ex_manual", %]; Export["ex_nopsfrag.eps", exampleplot]; 31 12 How to bug report There is a number of things you can do/tell me to speed up the process of nding the error: 1. What is your operating system (Windows, Linux, Mac OS)? 2. What is your Mathematica version (4.x, 5.x, 6.x)? 3. What are the steps that lead to the error? Please create a copy all lines needed (and only minimal example. Just those) to reproduce the error into a fresh notebook. Then think about if there are lines that can still be removed. Then quit your kernel and evaluate the notebook in one rush. 4. Send me an email (see rst page of this manual). 5 5. Send me your credit card number. 5 Just kidding, of course I only accept cash. 32 A Program Summary Manuscript Title: MathPSfrag: Creating Publication-quality Labels in Mathematica® Plots Authors: Johannes Groÿe Program Title: MathPSfrag Journal Reference: Catalogue identier: Program available from: http://wwwth.mppmu.mpg.de/members/jgrosse/mathpsfrag Licensing provisions: CPC non-prot use license Programming language: Mathematica 6.0, 5.2, 5.0, 4.1 Computer: Tested on x86 architecture Operating systems: Tested on Linux, Windows XP RAM used during test run: 11 Mb Keywords: Encapsulated PostScript, PACS: 01.30.Rr Classication: 14 Graphics External routines: Standard Nature of problem: Insucient typesetting quality of labels in graphics exported from Solution method: An automatic export function is provided that generates LATEX substitution labels. Requirements: LATEX, Ghostscript, PSfrag; recommended: ps2eps, pdfcrop, Perl Restrictions: The described method requires to some extent the use of Encapsulated PostScript (EPS) graphics though conversion to PDF is supported. Special characters that do not have a direct counterpart in LATEX will not show satisfactory typesetting quality. For versions earlier than 5.1, the automatically created LATEX code requires a compatibility LATEX package, which is included in the package. In 4.1, one of the examples does not work in its current form due to a bug in 's Export command. However, the same eect can be achieved using exclusively MathPSfrag's rotation mechanism. Mathematica, PSfrag, L TEX Mathematica packages Mathematica Mathematica Mathematica Mathematica Running time: A Mathematica 41s for all examples in this article References [1] J. Groÿe, MathPSfrag: Publication quality labels with Mathematica. 1 [2] W. McKay, R. Moore, Convenient Labelling of Graphics, the WARMreader Way, TUGboat 20(3). URL http://www.tug.org/TUGboat/Articles/tb20-3/tb64ross.pdf 3 [3] M. C. Grant, D. Carlisle, The PSfrag system, version 3. URL http: //www.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.ps 4, 6, 7 33 3, [4] S. Wolfram, The Mathematica book (4th edition), Cambridge University Press, New York, NY, USA, 1999. 3 [5] Wolfram Research, Inc., Mathematica 5.2 (2005). URL http://www.wolfram.com/ 3 [6] WRI Support, tetex 1.0 with mathematica? http: //support.wolfram.com/mathematica/interface/export/tetexconfig.html URL 3, 26 [7] WRI Support, Mathematica fonts and ghostscript. http: //support.wolfram.com/mathematica/graphics/export/ghostscript.html URL 3, 26 [8] WRI Support, Mathematica fonts in eps les. URL http: //support.wolfram.com/mathematica/graphics/export/includefonts.html 3, 26 [9] J. Groÿe, MathPSfrag. URL http://wwwth.mppmu.mpg.de/members/jgrosse/mathpsfrag/ 3 [10] M. Caprio, Custom tick marks for linear, logarithmic, and general nonlinear axes (2005). URL http://library.wolfram.com/infocenter/MathSource/5599/ 4, 5, 8, 29 pst-pdf package. http://www.ctan.org/tex-archive/graphics/pstricks/contrib/ pst-pdf/pst-pdf.pdf 4 [11] R. Niepraschk, H. Gäÿlein, The URL pdftricks. http://www.ctan.org/tex-archive/macros/latex/contrib/pdftricks/ [12] A. Chambert-Loir, R. CV, R. CV, URL [13] T. Tantau, The beamer URL class. http://latex-beamer.sourceforge.net/ 4 pdfcrop. http://www.ctan.org/tex-archive/support/pdfcrop/ [14] H. Obeberdiek, URL [15] Red Hat, Inc., Homepage of the URL http://www.cygwin.com GPL'ed cygwin version. 6, 16 34 4 4 Index BoundingBoxDevice, 23 Integerize, 25 BoundingBoxFromRaster, 17 IntegerPartDigits, 25 IntegerToReal, 25 ChopExponent, 25 ChopFractionalPart, 25 LaTeXExecutable, 24 ChopImaginaryPart, 25 LaTeXOptions, 24 CopyTeXPosition, 20 LatinCharacterSet, 26 CreatePSfragRules, 17 LatinNumCharacterSet, 26 LatinNumQ, 26 DvipsExecutable, 23 LatinQ, 26 DvipsOptions, 23 MasterTeXFile, 24 EpsSux, 22 MathPSfragCongurationTest, 19 ExponentSymbol, 25 MaximumTagLength, 18 FetchGhostscriptDevices, 17 MinimumTagLength, 18 ForceOverwrite, 23 NextLaTeXError, 19 Format, 17 NumberToTeX, 25 FormatAxesLabelX, 18 NumToBase52, 25 FormatAxesLabelY, 18 FormatFrameLabelEast, 18 OptionHandlers, 19 FormatFrameLabelEastRotated, 18 OptionsToHandle, 20 FormatFrameLabelNorth, 18 FormatFrameLabelSouth, 18 PatchType1FontIntoEps, 25 FormatFrameLabelWest, 18 PostMathPSfrag, 11 FormatFrameLabelWestRotated, 18 PreviewDevice, 24 FormatFrameTicksEast, 18 PSfrag, 8, 20 FormatFrameTicksNorth, 18 PSfragExport, 7, 21 FormatFrameTicksSouth, 18 PSfragManualExport, 22 FormatFrameTicksWest, 18 PSfragPrologue, 17 FormatPlotLabel, 18 PSfragTag, 20 FormatTicksX, 18 PSfragTicks, 22 FormatTicksY, 18 PSPosition, 20 FractionalPartDigits, 25 PSRotation, 20 PSScaling, 21 GenerateTemporaryName, 18 GhostscriptExecutable, 23 RationalToReal, 25 GuessTag, 18 RemoveTemporaries, 24 GuessTeX, 18 RenumberTags, 17 ReplacementHookCooperative, 18 HandleAutomaticPSfrag, 19 ReplacementHookExclusive, 19 HandleAxesLabel, 19 HandleFrameLabel, 19 HandleFrameTicks, 19 HandlePlotLabel, 19 HandleTicks, 19 IncludeGraphicsOptions, 24 SuppressOutput, 24 TemporaryDirectory, 25 TeXCommand, 21 TeXPosition, 21 TeXPreamble, 25 35 TeXShift, 21 TeXShiftX, 21 TeXShiftY, 21 TeXSux, 22 TextToPSfrag, 22 UnPSfrag, 10, 22 UnPSfragOutputFormats, 25 36
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Page Count : 36 Page Mode : UseOutlines Author : Title : Subject : Creator : LaTeX with hyperref package Producer : pdfTeX-1.40.3 Create Date : 2007:11:20 18:14:45+01:00 Modify Date : 2007:11:20 18:14:45+01:00 Trapped : False PTEX Fullbanner : This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6EXIF Metadata provided by EXIF.tools