{{indexmenu_n>999}} ====== ToPS ====== ### //PS = Graphics.ToPS(pl)// returns the text of an encapsulated PostScript (eps) file of the [[documentation:language_reference:objects:graphics:start|Graphics object]] //pl//, a string that can be written to a file. A PostScript file can be included in LaTeX, printed, or turned into a pdf, for example with //ps2pdf -dEPSCrop//. ### ===== Input ===== * //pl// : a Graphics object, for example made by //[[documentation:language_reference:objects:graphics:functions:plot|Graphics.Plot()]]//. ===== Output ===== * //PS// : a string, the text of the PostScript file. ### The coordinates of the PostScript file are in units of 1/10 point, so that zooming in keeps the plot sharp. The bounding box is therefore ten times the page: the A4 page of //Graphics.Plot//, 297 mm by 210 mm, has a bounding box of 8427 by 5959 points, 2.97 m by 2.10 m. Give the size you want when you include the file, for example //\includegraphics[width=8cm]{DOS.ps}// in LaTeX (with //latex// and //dvips//; for //pdflatex// turn it into a pdf first), or scale the pdf when you print it. ### ### PostScript files do not handle transparency correctly. Use svg files for plots with transparent colors, or put a shade that should let a curve show through below the curve, as a layer under the plot. Texts are written in the font given by its PostScript name, and only the letters of ASCII are written correctly: write //"Delta"// rather than the Greek letter. ### ===== Example ===== ### A density of states, written as a PostScript file. The output is the bounding box of the file. ### ==== Input ==== -- the density of states of three levels, broadened by 0.2 eV G = ResponseFunction.New({ {0, -2, 0.5, 3}, {0.3, 0.5, 0.2}, mu = 0, type = "ListOfPoles" }) pl = Graphics.Plot(G/Pi, 0.2, {{"plotRe",false}, {"Negate",true}, {"Frame",{{"Xmin",-4}, {"Xmax",4}, {"Ymin",-0.1}, {"Ymax",1.8}, {"FirstYTick",0}, {"dYTick",0.5}, {"YFormat","%.1f"}, {"XLabel","energy (eV)"}, {"YLabel","density of states"}, {"XLMargin",0.1}, {"YAxis",-10}}}}) -- the plot as an encapsulated PostScript file PS = Graphics.ToPS(pl) print(string.match(PS, "%%%%BoundingBox:[^\n]*")) file = io.open("DOS.ps", "w") file:write(PS) file:close() ==== Result ==== %%BoundingBox: 0 0 8427 5959 ### The script writes //DOS.ps//. //ps2pdf -dEPSCrop DOS.ps// turns it into //DOS.pdf//. ### ===== Table of contents ===== {{indexmenu>../#2|tsort}}