2013-02-05 6 views
6

私はLaTeXでうまく表示したいコードチャンクの線形モデルを持っています。モデル呼び出しは、LaTeXでひどくタイプセットされるチルダ〜が付いた標準形式をとります。綺麗なチルダ〜ニットのRチャンクから?

\documentclass{article} 
\begin{document} 
<<>>= 
lm(Sepal.Width ~ Sepal.Length, data = iris) 
@ 
\end{document} 

コードは、knitr::knit(mwe.Rnw)を編成した後にpdflatexを介して実行されます。

LaTeXで気分が良いチルダを作るのは非常に面倒で、ニットを作るのは非常に簡単ではないようです。 knitによって生成された.texファイルを調べると、そのコードは3つの環境に置かれていることがわかります。そのうちの\begin{alltt} ... \end{alltt}が興味深いものです。しかし、パッケージallttは特別な文字の特別な組版のための迅速な修正を提供していません。

答えて

7

この解決策は、yihui's example on hooks,this postと私のバディRJからインスピレーションを受けています。

\documentclass{article} 
\usepackage{xspace} 
\newcommand{\mytilde}{\lower.80ex\hbox{\char`\~}\xspace} 
\begin{document} 
<<setup, include=FALSE>>= 
library(knitr) 
hook_source = knit_hooks$get('source') 
knit_hooks$set(source = function(x, options) { 
    txt = hook_source(x, options) 
    # extend the default source hook 
    gsub('~', '\\\\mytilde', txt) 
}) 
@ 
<<results = "hide">>= 
lm(Sepal.Width ~ Sepal.Length, data = iris) 
@ 
\end{document} 

一般的な使用のために、\mytildeコマンドも定義します。例えば、Rコードのインラインの例: "in the form \texttt{response~\mytilde~predictors} ..."。

パッケージxspaceは厳密には必要ではありませんが(newcommandでxspaceを削除している限り)、コマンドを使いやすくしています。

+0

これはエコーされたコードでうまく機能しますが、チルダは結果ではまだ "醜い"です。 –

関連する問題