7

LaTeX でうまく表示したいコード チャンクに線形モデルがあります。モデル呼び出しはチルダ ~ を使った標準形式をとりますが、これは LaTeX では恐ろしくタイプセットされます。

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

コードは編まれknitr::knit(mwe.Rnw)、PDFLaTeX で実行されます。

素敵なチルダを LaTeX で作成するのは非常に煩わしく、knitr でチルダを作成するのは簡単ではないように思えます。によって生成された .tex ファイルを調べるknitと、コードが 3 つの環境に配置されていることがわかります\begin{alltt} ... \end{alltt}。そのうちの 1 つが興味深いものです。しかし、このパッケージallttには、特殊文字の特殊な組版に対する簡単な修正は含まれていません。

4

1 に答える 1

8

このソリューションは、フックに関する yihui の例この投稿、および私の仲間の 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は厳密には必要ありませんが ( xspacenewcommand で を削除する限り)、コマンドをより使いやすくします。

于 2013-02-05T15:00:42.893 に答える