Tex-Datei in Knitr-Datei eingeben

Tex-Datei in Knitr-Datei eingeben

Ich zeige hier nur ein einfaches Beispiel, um die Frage zu formulieren.

\documentclass{article}

\begin{document}

<<>>=
library('ggplot2')
dataset <- diamonds
@

\begin{table}[htbp]
  \centering
  \begin{tabular}{c|c|c|c}
  \textbf{Name} & \textbf{Columns} \\\hline \hline
  dataset & \Sexpr{length(colnames(dataset))} \\
  \end{tabular}
  \caption{Repeated table}
\end{table}

\end{document}

Jetzt wiederhole ich diese Tabelle (genaue Tabelle) mehrmals in der Datei. (Stellen Sie sich vor, Sie ersetzen den Datensatz durch einen anderen Satz, bevor Sie diese Tabelle aufrufen.)

\documentclass{article}

\begin{document}

<<>>=
library('ggplot2')
dataset <- diamonds;
@

\input{table-file.tex}

\end{document}

Ich füge den gesamten tabellarischen Teil in diese Datei ein und gebe ihn dann an mehreren Stellen ein. Aber ich bekomme das nicht zum Laufen. Ich habe mich gefragt, ob das möglich ist? Gibt es bessere Ansätze, um diese Tabelle „modular“ zu machen?

Danke

Antwort1

Hier ist ein Beispiel für die Verwendung des Knitr-Child-File-Prozesses gemäß der Knitr-Dokumentation yihui.name/knitr/demo/child.

Zuerst die neue Hauptdatei, die ich 'knitr01.Rnw' genannt habe.

\documentclass{article}

\begin{document}

<<>>=
library('ggplot2')
dataset <- diamonds
@

<<child='child-knitr01.Rnw'>>=
@

<<>>=
dataset<-mtcars
@

<<child='child-knitr01.Rnw'>>=
@
\end{document}

Beachten Sie, dass ich das Kind zweimal und jeweils mit einem anderen Datensatz eingegeben habe.

Und die untergeordnete Datei, die ich „child-knitr01.Rnw“ genannt habe.

\begin{table}[htbp]
  \centering
  \begin{tabular}{c|c|c|c}
  \textbf{Name} & \textbf{Columns} \\\hline \hline
  dataset & \Sexpr{length(colnames(dataset))} \\
  \end{tabular}
  \caption{Repeated table}
\end{table}

Wenn es zuerst durch 'knit' und dann durch 'pdflatex' ausgeführt wird, ergibt sich

Bildbeschreibung hier eingeben

Um die Demonstration der Vollständigkeit halber fortzusetzen, können hierdurch auch in untergeordnete Dateien Enkel eingegeben werden.

Das knitr01.Rnw wird wie folgt geändert.

\documentclass{article}
\begin{document}
<<>>=
library('ggplot2')
dataset <- diamonds
title="These are diamonds"
@

<<child='child-knitr01.Rnw'>>=
@

<<>>=
dataset<-mtcars
title="These are cars"
@

<<child='child-knitr01.Rnw'>>=
@

\end{document}

Hier ist die überarbeitete Datei „child-knitr01.Rnw“

\begin{table}[htbp]
  \centering
  \begin{tabular}{c|c|c|c}
  \textbf{Name} & \textbf{Columns} \\\hline \hline
  dataset & \Sexpr{length(colnames(dataset))} \\
  \end{tabular}
  \caption{\Sexpr{paste(substr(capture.output(print(title)),5,50))}}
  % The 5 is to remove some leading R stuff (try with 1 to see why)
  % The 50 is chosen to be longer than the string
\end{table}

<<child='grand-child-knitr01.Rnw'>>=
@

Und hier ist die Datei 'grand-child-knitr01.Rnw'

Demonstration that you can call on 'grandchildren' files with knitr.

<<>>=
names(dataset)  
@

Und die Ausgabe ist: Bildbeschreibung hier eingeben

verwandte Informationen