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.

enter image description here

È stato utile?

Soluzione

Due fatti:

  1. knitr Rende tutto accessibile per te, quindi i trucchi in lattice sono spesso inutili;
  2. 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):

enter image description here

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*">>=
@
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top