как получить сдвиг по центру фигуры без центрирования кода - PullRequest
6 голосов
/ 19 июня 2011

Один из способов получить разворот к центру фигуры - добавить что-то вроде следующего:

\begin{figure}
\begin{center}
[sweave chunk]
\end{center}
\end{figure}

Однако, если вы хотите отобразить код для создания визуализации, код выходит по центру. Кто-нибудь знает хитроумный способ заставить код отображать выравнивание по левому краю, все еще следя за тем, чтобы фигура была в центре? Это проблематично, если вы установите размер рисунка 3x3:

<<myplot, fig=TRUE, width=3, height=3>>=
    plot(rnorm(20), rnorm(20))        
@

Мне нужно сделать это более 100 раз для проекта, над которым я работаю, и предпочел бы не создавать отдельные фрагменты для сюжета и кода.

1 Ответ

6 голосов
/ 19 июня 2011

Может быть, не совсем то, что вам нужно, но мне нравится сохранять код, который я использую, чтобы сделать изображение вне области рисунка, так как я хочу код в тексте:

Blablabla if we run:
R CODE
We get the figure in Figure 1

Вы можете сделать это, используя include=false в аргументах Sweave и используя тот факт, что если вы делаете картинку в Sweave, она вызывает pdf DOCUMENTNAME-PICTURENAME.pdf. Например, в документе foo.Rnw:

Blablabla if we run:
<<myplot,fig=true,include=false>>=
plot(1)
@
We get the plot in Figure \ref{myplot}

\begin{figure}
\begin{center}
\includegraphics{foo-myplot}
\end{center}
\label{myplot}
\caption{This is my plot!}
\end{figure}

Это должно привести к тому, что ваш код будет выровнен по левому краю в текущем тексте и на рисунке, куда бы его ни поместил LaTeX (если вы хотите прямо здесь).


Edit:

Выполнение вашего примера дает мне выравнивание по левому краю с тем же полем, что и у обычного текста:

\documentclass{article}
\usepackage{Sweave}
\begin{document}
\begin{figure}
\centering
<<myplot, fig=TRUE, width=3, height=3>>=
    plot(rnorm(20), rnorm(20))        
@
\end{figure}
\end{document}
...