3

stargazer()等幅フォントで生成されたラテックス テーブルを印刷したいのですが、再現可能な方法でknitr(つまり、手動のラテックス コーディングを使用せずに) 印刷したいと考えています。という環境を定義してから、この環境で と を介して Knitr チャンクをラップしようとしましmymonoた。それは動作しません; テーブルはデフォルトのフォント スタイルで印刷されます。\begin{}\end{}

\documentclass{article} 
\newenvironment{mymono}{\ttfamily}{\par}
\begin{document}   
<<lm, echo=FALSE>>=  
df <- data.frame(x=1:10, y=rnorm(10))
library(stargazer)  
lm1 <- lm(y ~ x ,data=df)  
@

% reproducible
\begin{mymono}
<<table_texstyle, echo=FALSE, results='asis', message=FALSE>>=  
stargazer(lm1, label="test")  
@  
\end{mymono}

\end{document}

stargazer()以外にフォント設定はないと思いますfont.size

# > sessionInfo()
# R version 3.0.2 (2013-09-25)
# Platform: x86_64-apple-darwin10.8.0 (64-bit)
# other attached packages:
# [1] stargazer_5.1

全体table{}を新しいフォント スタイルでラップするよりもtabular{}、キャプションがデフォルト スタイルのままになるようにラップする方がよいでしょう。stargazer()プログラムでラテックスコードを出力に挿入する方法があるかどうかはわかりません。

4

1 に答える 1

2

コメントするには長すぎるので、ここから回答を始めます。質問のモデルを使用する:

\documentclass{article} 
\begin{document}  

<<lm, echo=FALSE, message=FALSE, include=FALSE>>=
df <- data.frame(x=1:10, y=rnorm(10))
library(stargazer)  
lm1 <- lm(y ~ x ,data=df)  

tabular_tt <- function(orig.table) {
    library(stringr)
    tabular.start <- which(str_detect(orig.table, "begin\\{tabular\\}"))
    tabular.end <- which(str_detect(orig.table, "end\\{tabular\\}"))
    new.table <- c(orig.table[1:(tabular.start - 1)],
                   "\\texttt{",
                   orig.table[tabular.start:tabular.end],
                   "}",
                   orig.table[(tabular.end + 1):length(orig.table)])
    return(new.table)
}
@

<<print, results='asis', echo=FALSE>>=
cat(tabular_tt(capture.output(stargazer(lm1, label="test"))), sep="\n")
@

\end{document}

必要に応じて簡単に調整できます。問題が発生した場合は、LaTeX のみの小さなおもちゃのテーブルで遊んだり、編み物時に生成された tex ファイルで遊んだりして、ターゲットの LaTeX 構文が正しいことを確認します。

cat(new.table, sep = "\n")出力を Knitr ドキュメントに正しく取得するには、取得する関数を作成する必要がある場合があります。

于 2014-10-08T21:31:30.833 に答える