Figura* Ambiente nel documento Twocolumn Knitr/SWEAVE
Domanda
Sembra che dovrebbe essere un problema comune, ma non ho trovato un trucco ovvio. Considera il file Knitr RNW di seguito,
\documentclass[twocolumn, 12pt]{article}
\usepackage{graphicx}
\begin{document}
%\SweaveOpts{dev=pdf, fig.align=center}
\begin{figure*}
<<aaa, fig.width=8, fig.height=5, fig.show=hold>>=
plot(1,1)
@
\end{figure*}
\end{document}
Vorrei che questa figura ampia estendesse due colonne, usando a {figure*}
Ambiente in lattice. C'è un gancio per questo?
EDIT: avvolgimento del pezzo figure*
fornisce il seguente output.
Soluzione
Due fatti:
knitr
Rende tutto accessibile per te, quindi i trucchi in lattice sono spesso inutili;- c'è un
chunk
gancio con cui puoi avvolgere i risultati del tuo pezzo;
Una soluzioni di mentalità semplice è:
knit_hooks$set(chunk = function(x, options) {
sprintf('\\begin{figure*}\n%s\n\\end{figure*}', x)
})
Lascio il resto del lavoro a te per occuparmi di maggiori dettagli options
(ad esempio quando options$fig.keep == 'none'
, non dovresti avvolgere l'output figure*
). Potresti voler vedere come il predefinito chunk
gancio per il lattice è definito in knitr
per sapere meglio come il chunk
ganci.
Tuttavia, in questo caso, tendo a scrivere il codice lattice da solo nel documento invece di crearlo automaticamente. Dopo aver avuto figure*
, potresti iniziare a pensare \caption{}
e \label{}
(non difficile, ma voglio ancora vederli in lattice).
Altri suggerimenti
Non sono sicuro di come KNITR ma per SWEAVE (e lattice di base) c'è in effetti un trucco: chiedi al codice R produrre un file PDF e quindi utilizzare lo standard \includegraphics
per tirarlo dentro.
Quindi con questo:
\documentclass[twocolumn, 12pt]{article}
\usepackage{graphicx}
\begin{document}
%\SweaveOpts{dev=pdf}
<<aaa,fig=FALSE,print=FALSE,echo=FALSE>>=
pdf("mychart.pdf", width=6, height=3)
set.seed(42)
plot(cumsum(rnorm(100)), type='l', main="yet another random walk")
invisible(dev.off())
@
\begin{figure*}
\includegraphics{mychart.pdf}
\end{figure*}
\end{document}
Ho ottenuto il documento di seguito (che ho poi convertito da PDF a PNG):
Ho anche avuto un problema simile durante la preparazione di una figura che dovrebbe abbracciare due colonne in un documento della conferenza a due colonne IEEE.
L'impostazione del gancio di blocco ha causato uno strano errore nella mia configurazione.Anche questo semplice gancio: knit_hooks$set(chunk = function(x, options) x)
Ma dopo aver esaminato knitr::opts_chunk$get()
, Mi sono reso conto che semplicemente imposta fig.env="figure*"
Risolve il problema in modo elegante.
Ecco come appare il mio pezzo in un file RNW:
<<fig1, fig.width=18, fig.height=6, fig.env="figure*">>=
@