Ich habe ein beamer
Dokument mit R
Blö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 French
und 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.00
als gedruckt werden 1 000 000,00$
.
Ich dachte, ich könnte einen Booleschen Wert French == 1
in „mytheme.sty“ erstellen und ihn dann an einen R
Block zur Verwendung in einer Bedingung übergeben if (French) { # set the French styles here
.
Aber zunächst einmal weiß ich nicht, wie ich einen LaTeX
Zählerwert (sagen wir) an einen R
Block ü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
HandlungR
außerhalb des Unterrichts erworben werden beamer
.
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}