R + ggplot + pdf device + LaTeX: Ist es möglich, Schriften einmal einzubetten?

8

Ich habe ein R-Skript, das auf folgende Weise ein PDF generiert ...

  1. 100+ Grafiken werden mit 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).
  2. Nachdem die Graphen erstellt wurden, rufe ich Sweave auf, das .tex generiert, um alle diese Graphen zusammen zu sammeln.
  3. Danach rufe ich 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?

    
Eugeny89 12.02.2018, 12:08
quelle

3 Antworten

0

Ich habe versucht, embed_fonts über die PDF-Datei zu erstellen, die in Schritt 3 generiert wurde, anstatt sie über jeden in Schritt 1 generierten Graphen aufzurufen, der OK zu sein scheint

    
Eugeny89 23.02.2018, 11:38
quelle
3

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%     
Gilles 20.02.2018 21:46
quelle
1

Eine alternative Lösung wäre, Ihre Plots als TikZ mit dem ausgezeichneten tikzDevice Paket.

Aus einem Dokument können wir ein markiert sind, wenn das Gerät auf tikz eingestellt ist.

Beispiel.Rmd

%Vor%

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.

Beispiel.pdf

Alternative

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%

beispiel.tex

%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.

    
Kevin Arseneau 21.02.2018 22:55
quelle

Tags und Links