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




latex knitr (2)

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

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 का उपयोग कर रहा हूं।


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

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" जोड़ते हैं, तो इस चंक द्वारा उत्पन्न सभी आउटपुट उस तरह से प्रिंट किए जाएंगे।

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