Portál AbcLinuxu, 30. dubna 2025 10:19
Případ: Píšu něco v LaTeXu a chci v tom mít grafiku vytvořenou pomocí R. Kompilovat budu pdfLaTeXem, takže chci grafy v PDF, ale hlavně aby měly stejně krásné písmo jako zbytek díla, tj. Computer Modern.
Mám k dispozici Debian Etch a Ubuntu Feisty, v obou distribuční texlive a R z repozitářů českého mirroru CRAN:
deb http://cran.biokontakt.cz/bin/linux/debian stable/
deb http://cran.biokontakt.cz/bin/linux/ubuntu feisty/
Problém: Standardním písmem grafických výstupů R je Helvetica. Mohl bych sice přizpůsobit zbytek dokumentu balíkem "times", ale to se mi nechce. R standardně písmo Computer Modern neumí.
Řešení: Musím použít písmo s kterým si R poradí, což je cm-lgc (součást texlive), a "Adobe Symbol encoding", k čemuž potřebuji soubor /usr/lib/R/library/grDevices/afm/cmsyase.afm
, který je k mání třeba zde. Tento postup je na příkladu Ubuntu 7.04. V Debianu je nejspíš stejný, ale to teprve uvidím.
V první řadě si musím v R nadefinovat objekt CM, který bude reprezentovat písmo Computer Modern
>CM <- Type1Font("CM",
c("/usr/share/texmf-texlive/fonts/afm/public/cm-lgc/fcmr8a.afm",
"/usr/share/texmf-texlive/fonts/afm/public/cm-lgc/fcmb8a.afm",
"/usr/share/texmf-texlive/fonts/afm/public/cm-lgc/fcmri8a.afm",
"/usr/share/texmf-texlive/fonts/afm/public/cm-lgc/fcmbi8a.afm",
"/usr/lib/R/library/grDevices/afm/cmsyase.afm"))
Aktivuju zařízení "pdf", do něhož půjde grafický výstup:
>pdf("cm.pdf",family=CM)
Teď si můžu vesele malovat. Například takto:
>plot(read.table("histogram.txt",sep="\t",na.strings="0")$V2,
type="h",xaxs="i",yaxs="i",xla="Relative nuclear DNA content",
ylab="Number of events")
Teď musím deaktivovat zařízení "pdf", čímž mám hotový výstupní soubor.
>dev.off()
Ale ouha, PDF neobsahuje font, takže se zobrazuje špatně. Musím tedy fonty zahrnout do PDFka:
>embedFonts("cm.pdf",
outfile="cmembed.pdf",
fontpaths=c("/usr/share/texmf-texlive/fonts/type1/public/cm-lgc/"))
To by bylo.
Tiskni
Sdílej:
cslatex soubor.tex && dvipdf soubor
?
\psfrag{tag}[ posn ][ psposn ][ scale ][ rot ]{LTEX text}
mi přijde těžkopádné... R umí všechny popisky přesně tak jak je potřebuju. Dávám přednost přímé tvorbě PDF pdflatexem (ne pdfcslatexu, protože nepíšu česky), funguje k naprosté spokojenosti. S převodem dvi přes ps do pdf jsem docela zápasil (což je ale asi jen můj problém). Moje práce, tak jak teď vypadá, je dost pdfcentrická, takže volím tuto cestu. A když si to Rko naskriptuju, můžu dělat grafy jak na běžícím pásu.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.