Ich habe ein R-Skript, das auf folgende Weise ein PDF
generiert ...
baseplot
und ggplot
erstellt. Die Grafiken werden mit pdf
device erstellt. Der Grund, warum ich pdf
verwende, ist, dass ich Schriftarten einbetten muss (um benutzerdefinierte Schriftarten in Tex-Labels zu verwenden). Sweave
auf, das .tex
generiert, um alle diese Graphen zusammen zu sammeln. MikTeX
auf, um PDF zu generieren. Es stellt sich heraus, dass 75-95% der Zeit, die zum Generieren eines Graphen benötigt wird, von embed_fonts
call genommen wird. Gibt es eine Möglichkeit, weniger embed_fonts
(das scheint ein Wrapper für Ghostscript zu sein) Aufrufe auszuführen? Der ideale Vatiant ist, Anruf nur einmal einzubetten. Ist das möglich?
Vielleicht könnten Sie das Gerät cairo_pdf
verwenden, das die Schriftarten einbetten soll.
cairo_pdf
scheint langsamer als pdf
, aber schneller als pdf + embedFonts
.
Natürlich wäre das Einbetten der Schriften in das endgültige PDF-Dokument nur eine bessere Lösung ...
%Vor% Eine alternative Lösung wäre, Ihre Plots als TikZ mit dem ausgezeichneten tikzDevice
Paket.
Aus einem rmarkdown Dokument können wir ein knitr markiert sind, wenn das Gerät auf tikz
eingestellt ist.
Sie können mein \renewcommand{\familydefault}{\sfdefault}
durch den Befehl ersetzen, den Sie zum Festlegen der ausgewählten Schriftart benötigen, z. B. \usepackage{charter}
. Beachten Sie, dass Sie die \
wie in meinem Beispiel oben entkernen müssen.
Sie möchten möglicherweise alle Ihre Plots im Voraus mit einem anderen Skript generieren, vorausgesetzt, Sie haben so viele, anstatt stricken Inline zum Zeitpunkt der Dokumentgenerierung. Ich mache das für eine Massenserie von Berichten (1.000+) mit jeweils etwa 20 Plots.
%Vor%N.B. Dies ist keine vollständige
.tex
-Datei und ist eher dazu gedacht, mit\input{example.tex}
oder anderweitig in ein komplettes Dokument eingebettet zu werden. Beachten Sie auch die Berechnungen der Schriftmetrik. Die gespeicherte.tex
-Datei kann unter Umständen mit unterschiedlichen Schriftarten komisch rendern, wenn die Metriken deutlich zu niedrig sind.