web-dev-qa-db-ja.com

knitrおよびlatexを使用したRmarkdownのコードチャンクフォントサイズ

Knitrでは、サイズオプションは_.Rnw_ファイルで正常に機能し、次のコードが生成されます。

_\documentclass{article}

\begin{document}

<<chunk1, size="huge">>=
summary(mtcars)
@


\end{document}
_

rnw

ただし、Rmarkdownで動作させることはできません。次のコードは、_.rnw_ファイルのようにフォントサイズを変更しません。 opts_chunk$set(size="huge")でオプションを設定しようとすると同じことが起こります。

これは予想される動作ですか?チャンクコードのフォントサイズをどのように変更しますか? (コードの前に_\huge_を追加するのではなく、knitrオプションを使用することを意味します)

_---
title: "Untitled"
output: pdf_document
---

```{r, size="huge"}
summary(mtcars)
```
_

enter image description here

RStudioバージョン0.98.987、knitr 1.6、およびrmarkdown 0.2.68を使用しています。

38
Carlos Cinelli

Knitrフックを変更するというアイデアを採用すると、次のことができます。

def.chunk.hook  <- knitr::knit_hooks$get("chunk")
knitr::knit_hooks$set(chunk = function(x, options) {
  x <- def.chunk.hook(x, options)
  ifelse(options$size != "normalsize", paste0("\\", options$size,"\n\n", x, "\n\n \\normalsize"), x)
})

このスニペットは、デフォルトのチャンクフックを変更します。チャンクオプションのサイズがデフォルト(normalsize)と等しくないかどうかを確認し、そうであれば、コードチャンク(ソースを含む!)の出力にoptions$sizeの値を追加し、追加します\\normalsizeで切り替えます。

したがって、size="tiny"をチャンクに追加すると、このチャンクによって生成されたすべての出力がそのように印刷されます。

必要なことは、このスニペットをドキュメントの先頭に含めることだけです。

22

この要点 ごとに、cssを使用してフォントサイズを定義する必要があります。

<style type="text/css">
body, td {
   font-size: 14px;
}
code.r{
  font-size: 20px;
}
pre {
  font-size: 20px
}
</style>

code.rは、コードチャンクからエコーされるRコードのフォントサイズを制御し、preは、コードからのR結果出力に適用されます。

完全に機能する.Rmdファイルは次のようになります。

---
title: "FontTest"
author: "Thomas Hopper"
date: "January 13,2016"
output: html_document
---

<style type="text/css">

body, td {
   font-size: 14px;
}
code.r{
  font-size: 20px;
}
pre {
  font-size: 20px
}
</style>

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

```{r cars}
summary(cars)
```

結果のHTMLは次のようにレンダリングされます。

screenshot showing 20pt R code and 20pt R output

10
Tom

パッケージから次の関数に基づいて何かをエクスポートすることにより、独自のドキュメント形式を定義できますmy_package

my_report <- function(...) {

  fmt <- rmarkdown::pdf_document(...)

  fmt$knitr$knit_hooks$size = function(before, options, envir) {
    if (before) return(paste0("\n \\", options$size, "\n\n"))
    else return("\n\n \\normalsize \n")
  }

  return(fmt)
}

これは、適切なlatexコマンドをチャンクの前に置くknitrチャンクフックsizeを定義し、\normalsizeチャンクの後。

とにかく、次のRマークダウンを使用すると、機能しているかどうかを確認できます。

---
output: my_package::my_report
---

Test text for comparison

```{r}
print(1)
```
The next code chunk has `size = 'tiny'` in the chunk options.

```{r, size = 'tiny'}
print(1)
```

`markdown :: render()から次の結果が得られます。

enter image description here

Githubで開いた問題も参照してください。

https://github.com/yihui/knitr/issues/1296

6
Johannes Ranke
\tiny

```{r}
summary(mtcars)
```
\normalsize

サイズの降順で利用可能なオプションは次のとおりです。
HugehugeLARGELargelargenormalsizesmallfootnotesizescriptsizetiny

1