Übergeben Sie eine Klassen-/Paket-/Designoption mit knitr an R

Übergeben Sie eine Klassen-/Paket-/Designoption mit knitr an R

Ich habe ein beamerDokument mit RBlöcken, sagen wir 'template.Rnw', das ich mit knitr'PDF kompilieren' kompiliere inRStudio. Ich habe ein Thema „mytheme.sty“ definiert. Ich möchte eine Option für das Thema haben Frenchund diese oben im Dokument folgendermaßen nennen:

    \usetheme[French]{mytheme}

Dieses „französische“ Design definiert Etikettenformatierungsoptionen für Grafiken, die vom US-Stil abweichen, z. B. $1,000,000.00als gedruckt werden 1 000 000,00$.

Ich dachte, ich könnte einen Booleschen Wert French == 1in „mytheme.sty“ erstellen und ihn dann an einen RBlock zur Verwendung in einer Bedingung übergeben if (French) { # set the French styles here.

Aber zunächst einmal weiß ich nicht, wie ich einen LaTeXZählerwert (sagen wir) an einen RBlock übergebe. Außerdem gibt es vielleicht einen besseren Ansatz. Wenn ja, würde ich ihn gerne wissen. Unten ist mein MWE (Warnung:wird nicht kompiliert!)

Vorlage.Rnw

\documentclass{beamer}
\usetheme{mytheme}
%\usetheme[French]{mytheme}

<<'setup', include=FALSE>>=
library(knitr)
library(ggplot2)
library(scales)
@

% I'd want to hide this chunk inside mytheme.sty or similar
<<'formats', include=FALSE>>=
# Create euro currency symbol in plot labels with library(scales)
euro <- function(x) {
paste0("€", format(x, big.mark = ",", decimal.mark = ".", trim = TRUE,
    scientific = FALSE))
} 
# French style formatting for euro labels
euroFrench <- function(x) {
paste0(format(x, big.mark = " ", decimal.mark = ",", trim = TRUE,
    scientific = FALSE), " €")
} 
# French style formatting for dollar labels
dollarFrench <- function(x) {
paste0(format(x, big.mark = " ", decimal.mark = ",", trim = TRUE,
    scientific = FALSE), " $")
} 
#  Toggle On/Off to set formats to French or US
if (French) {  # Here reads the boolean French set by the option [French]
  euro <- euroFrench      # set the custom 'euro' style to custom 'euroFrench'
  dollar <- dollarFrench  # overwrite the default 'dollar' styles of library(scales)
}
@

\begin{document}
\begin{frame}
\frametitle{One day I will be a dual-axis euro/dollar plot}
<<'plot', out.width='1\\linewidth'>>=
df <- data.frame(x = c(0, .0001, .0002, .0003), y = c(0, 1000000, 2000000, 3000000))
ggplot(data = df, aes(x = x, y = y)) + geom_line() + theme_classic(30) + scale_x_continuous(labels = dollar) + scale_y_continuous(labels = euro)
@
\end{frame}
\end{document}

mytheme.sty

\newcounter{French}
\newif\if@themeFrench%
\@themeFrenchfalse%
\DeclareOption{French}{\@themeFrenchtrue}%
\ProcessOptions%
\if@themeFrench% 
\setcounter{French}{1}
@
\fi

HandlungRaußerhalb des Unterrichts erworben werden beamer.

Bildbeschreibung hier eingeben

Antwort1

Es gibt keine Möglichkeit (zumindest keine direkte), LaTeX-Variablen an R zu übergeben. Das Gegenteil ist viel einfacher, d. h., R-Variablen zum Schreiben von LaTeX zu verwenden.

\documentclass{article}
<<include=FALSE>>=
French <- 1
@

<<results='asis'>>=
if (French == 1) cat('\\usepackage[French]{mytheme}')
@

\begin{document}

...

\end{document}

verwandte Informationen