この質問はconsistent code html inline and in chunks with knitrに似ています。 .Rhtmlドキュメントの代わりに、R MarkdownドキュメントのインラインRコードを強調表示したいとします。たとえば`r "plot(cars, main = 'A scatterplot.')"`
をrmarkdownでコンパイルした後、plot
のようなトークンを強調表示する必要があります。デフォルトでは、Rコードチャンクはシンタックスハイライトされていますが、インラインRコードをハイライト表示する方法はありません。R MarkdownのインラインRコードをシンタックスする方法を教えてください。
答えて
development versionhighrパッケージ(devtools::install_github('yihui/highr')
)を使用する1つのソリューションがあります。基本的には、独自のLaTeXコマンドを定義してトークンを強調表示するだけです。 highr:::cmd_pandoc_latex
は、Pandocが構文ハイライトを行うために使用するLaTeXコマンドのデータフレームです。
head(highr:::cmd_pandoc_latex)
## cmd1 cmd2
## COMMENT \\CommentTok{ }
## FUNCTION \\NormalTok{ }
## IF \\NormalTok{ }
## ELSE \\NormalTok{ }
## WHILE \\NormalTok{ }
## FOR \\NormalTok{ }
その後、knitrのinline
フック再定義することができます。
---
output:
pdf_document:
keep_tex: yes
---
```{r include=FALSE}
local({
hi_pandoc = function(code) {
if (knitr:::pandoc_to() != 'latex') return(code)
if (packageVersion('highr') < '0.6.1') stop('highr >= 0.6.1 is required')
res = highr::hi_latex(code, markup = highr:::cmd_pandoc_latex)
sprintf('\\texttt{%s}', res)
}
hook_inline = knitr::knit_hooks$get('inline')
knitr::knit_hooks$set(inline = function(x) {
if (is.character(x) && inherits(x, 'AsIs')) hi_pandoc(x) else hook_inline(x)
})
})
```
Test inline R code: `r I("plot(cars, main = 'A scatterplot.')")`.
Normal inline code `r pi`.
A code block:
```r
plot(cars, main = 'A scatterplot.')
1 + 2 # a comment
```
を私は構文する文字列を伝えるために便利なマーカーとしてI()
を使用し、通常の文字列から強調しました。それは単なる任意の選択です。 PDF出力:
これはしかし、完璧なソリューションではありません。場合によってはそれを微調整する必要があります。たとえば、ほとんどの特殊なLaTeX文字はエスケープされません(~
など)。 hi_pandoc()
によって返されたLaTeXコードをgsub()
で処理する必要があるかもしれません。
個人的に私はインライン出力が気に散るので、それを強調表示しませんが、これは完全に個人的な味です。
これは、同様の方法でテキスト内で構文の強調表示を行うのではなく、灰色の背景色を簡単に実装することができます。私はしばしば、インラインコードでテキストを読む学生は、フォントが似ているので、実際にはRコードが何であるかを選ぶことが難しいと感じることがよくあります。灰色の背景を持つと、より明確になります。同様に、githubの答えのようなhtml出力に似ています。 – jamieRowen
ニースのソリューション!私がインラインコード 'i %% 5'をどのように強調表示できるかの提案はありますか?パーセンテージ記号はエスケープされず、エラーをスローします( '#Comment'のようなコメントを強調表示することもできません)。 –
- 1. R Markdownのコードをデバッグ
- 2. ジェンキンズを「ピップインストール」する方法を教えてください。
- 3. Rの2番目のhoverinfoをプロットする方法を教えてください。
- 4. Rに特定のクラスのオブジェクトをプロットする方法を教えてください。
- 5. ブックダウン - インラインRコード
- 6. C#でコードのRenderTransformを適用する方法を教えてください。
- 7. 私のコードで//コメントをインデントする方法を教えてください。
- 8. ionicでe2eテストのコードを書く方法を教えてください。
- 9. Rマークダウンからコンパクトタイトルをラテックスに変換する方法を教えてください。
- 10. StreamReader.ReadLine()は "\ r \ n"と "\ n"を区別する方法を教えてください。
- 11. ポイントから消える方法を教えてください。
- 12. コードをリアルタイムで最終決定する方法を教えてください。
- 13. EmacsでCコードを自動インデントする方法を教えてください。
- 14. レガシーColdFusionコードをフレームワークに変換する方法を教えてください。
- 15. QRコードと1Dバーコードをスキャンする方法を教えてください。
- 16. タブローを定義する方法を教えてください
- 17. ストリームフィルタをエコーする方法を教えてください。
- 18. オブジェクトをガベージコレクションする方法を教えてください。
- 19. ForeignKeyをモデル化する方法を教えてください。
- 20. Android - アイコンをタッチする方法を教えてください。
- 21. Eclipseプラグインをアンパックする方法を教えてください。
- 22. ImageViewCellをクリックする方法を教えてください。
- 23. Androidアプリをフリーズする方法を教えてください。
- 24. Edge.Funcを固定する方法を教えてください。
- 25. ImageView Androidをトリミングする方法を教えてください。
- 26. UIWindowをキーウィンドウにする方法を教えてください。
- 27. メソッドをオーバーライドする方法を教えてください。
- 28. コードをinfinteループに入れる方法を教えてください。
- 29. タッチスクリーンのボタンを押す方法を教えてください。
- 30. これを解決する方法...教えてください
も参照してください。http://stackoverflow.com/questions/16405536/knitr-inline-chunk-options-no-evaluation-or-just-render-highlighted-code/16406120#16406120 – baptiste