कोड चंक्स फॉन्ट साइज़ Rmarkdown में निट्र और लेटेक्स के साथ




latex knitr (3)

Knitr में, आकार विकल्प एक .Rnw फ़ाइल में ठीक काम करता है, निम्न कोड उत्पन्न करता है:

\documentclass{article}

\begin{document}

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


\end{document}

हालाँकि, मैं इसे रमार्कडाउन में काम नहीं कर सकता। निम्न कोड फ़ॉन्ट आकार को नहीं बदलता है, जैसा कि उसने .rnw फ़ाइल में किया था। यही बात तब होती है जब opts_chunk$set(size="huge") साथ विकल्प सेट करने का प्रयास किया जाता है।

क्या यह अपेक्षित व्यवहार है? कैसे एक चंक कोड फ़ॉन्ट आकार बदलता है? (मेरा मतलब है कि निट के विकल्पों का उपयोग करके, कोड से पहले \huge जोड़कर नहीं)

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

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

मैं RStudio संस्करण 0.98.987, knitr 1.6 और rmarkdown 0.2.68 का उपयोग कर रहा हूं।


इस Gist के अनुसार , आपको css का उपयोग करके फ़ॉन्ट आकार को परिभाषित करना है:

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

code.r कोड code.r से code.r आर कोड के लिए फ़ॉन्ट आकार को नियंत्रित करेगा, जबकि pre कोड से किसी भी आर परिणाम आउटपुट पर लागू होगा।

एक पूर्ण काम कर रहा है। आरएमडी फ़ाइल की तरह लग सकता है:

---
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 रेंडरर्स:


आप अपने पैकेज 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)
}

यह एक knitr chunk हुक size को परिभाषित करेगा जो chunk से पहले उपयुक्त लेटेक्स कमांड को \normalsize , और \normalsize बाद \normalsize करेगा।

वैसे भी, निम्न आर मार्केड के साथ आप जांच सकते हैं कि यह काम कर रहा है:

---
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)
```

मुझे निम्न परिणाम प्राप्त हुए हैं 'मार्कडाउन :: रेंडर ():

मैंने यह मुद्दा भी देखा कि मैंने जीथब पर खोला:

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


एक नाइट हुक को बदलने के लिए विचार उठाते हुए हम निम्नलिखित कर सकते हैं:

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 के options$size का मूल्य normalsize (स्रोत सहित!) और स्विच करने के लिए \\normalsize को जोड़ता है। वापस।

इसलिए यदि आप किसी चंक का size="tiny" जोड़ते हैं, तो इस चंक द्वारा उत्पन्न सभी आउटपुट उस तरह से प्रिंट किए जाएंगे।

आपको बस इस स्निपेट को अपने दस्तावेज़ की शुरुआत में शामिल करना है।