2016-06-03 7 views
0

Ich versuche eine (gekapselte) Postscript-Grafik mit in die Datei eingebetteten Schriften zu erstellen. Zum Einbetten verwende ich das extrafont Paket.embed_fonts() ändert die Papiergröße auf gekapseltem Postscript (.eps, R)

Während die eigentliche Grafik, die von der postscript() Gerät erstellt wird, völlig in Ordnung ist, scheint embed_fonts() die Papiergröße zu etwas wie A4 oder Letter zu ändern. Warum das? Gibt es eine Möglichkeit, die Papiergröße des Geräts postscript() beizubehalten?

Hier ist ein minimal Beispiel:

library(extrafont) 

postscript("test.eps", family="Times New Roman", width=4, height=4, 
      horizontal = FALSE, onefile=FALSE, paper = "special") 

plot(1:10) 

dev.off() 
embed_fonts("test.eps") 

Ausführen dieses Beispiels ohne den Anruf zu embed_fonts() führt zu einer Figur mit geeigneten Abmessungen (d.h. die gewünschte Ausgabe). Hier ist ein Screenshot von meinem Dokument-Viewer:

enter image description here

jedoch sobald embed_fonts() auf diese Datei ausführen, wird die Papiergröße auf eine feste Papierformat geändert:

enter image description here

Gibt es einen Weg dahin? Das Einbetten der Schriftarten und das Verwenden von .eps ist erforderlich. Ich vermute, dass es möglicherweise mit den Informationen zu tun hat, die in der Postscript-Datei gespeichert sind, wenn paper="special" (oder das Fehlen davon). Es scheint so, als würde embed_fonts() diese Information selbst zurücksetzen.

Antwort

0

Wenn Sie eine eample Datei schreiben, dann kann ich Sie sehen und sagen, was anders ist, kann ich nichts sagen, nicht über es von R

Für EPS Steuerung des Programms (im Gegensatz zu Postscript-Gegensatz) dürfen nicht verlangen eine Mediengröße, obwohl sie (tatsächlich) Kommentare enthalten kann, die die Begrenzungsbox beschreiben.

Also entweder die Datei ist kein EPS, oder die Kommentare beschreiben es als A4 oder "etwas". Sie haben nicht erklärt, was Sie mit dem PostScript-Programm tun, das einen Unterschied zwischen den beiden Mengen aufweist. Damit meine ich: "Was ist dein Zuschauer?"

+0

Ob die Datei wirklich .eps oder nur .ps ist, kann ich nicht sagen. Ich habe im Wesentlichen [diese Anweisungen] (http://stackoverflow.com/questions/5142842/export-a-graph-to-emp-file-with-r) gefolgt. Die Funktion 'embed_fonts()' in R ist ein Wrapper für Ghostscript. Ich habe es geschafft, ein richtig großes .eps durch Aufruf von 'embed_fonts (" test.eps ", format =" eps2write ") zu erzeugen, was vermutlich eine andere Prozedur in Ghostscript aufruft. Warum das funktioniert, habe ich keine Ahnung. Mein Dokumentenbetrachter ist Evince und zeigt mir eine Papiergröße in den Dateieigenschaften an, die den in R. angegebenen 4 x 4 Zoll entspricht. – SimonG

+0

Hmm, es hängt vielleicht von der Version von Ghostscript ab, die Sie verwenden. Ältere Versionen haben möglicherweise das Gerät epswrite verwendet, das veraltet ist und jetzt nicht mehr ausgeliefert wird. Ich würde das ems2write Gerät trotzdem sehr empfehlen, da es eine wesentlich höhere Ausgabequalität liefert. Klingt so, als hättest du es sowieso schon gemacht, also gute Neuigkeiten :-) FWIW Ich denke, Evince benutzt Ghostscript um PostScript anzuzeigen. – KenS