Латексное уравнение в сюжете - PullRequest
1 голос
/ 20 мая 2019

Я пишу в rmarkdown для создания html_document, я хочу написать уравнение латекса в заголовках осей.Есть ли способ?

x <- c(0,1,1,1,2,2,2,3)
Fn <- ecdf(x)
plot(Fn , lwd = 2, main="",ylab = "$F(x)$",xlab="$x$",yaxt="n")

Ответы [ 3 ]

2 голосов
/ 20 мая 2019

Как указал @MrFlick, для математических аннотаций существует определенный синтаксис. Иногда этого может быть недостаточно из-за сложных формул или определенных символов.

Обход, позволяющий избежать рендеринга графика PDF (созданного с помощью tikz) в средстве просмотра PDF внутри документа HTML, заключается в преобразовании его в другой формат.

Здесь я изменяю заговор графика, чтобы преобразовать pik-график tikz в png и включаю его, используя оригинальный заговор графика.

---
title: "Test"
output: html_document
---

```{r, include=F}
library(pdftools)
library(png)
library(knitr)
oldHook <- knit_hooks$get("plot")
knit_hooks$set(plot = function(x, options) {
  fname  <- gsub("pdf", "png", x)
  bitmap <- pdf_render_page(x, page = 1, dpi = 300)
  png::writePNG(bitmap, fname)
  oldHook(fname, options)
})
```


```{r, dev='tikz'}
x <- c(0,1,1,1,2,2,2,3)
Fn <- ecdf(x)
plot(Fn , lwd = 2, main="",ylab = "$F(x)$",xlab="$x$",yaxt="n")
```

enter image description here

1 голос
/ 20 мая 2019

Редактировать: Извините, ответ ниже для вывода PDF. Вероятно, можно сделать что-то подобное для вывода HTML, обработав рисунок tikz в файл PNG или SVG и включив его, но я не проработал детали.

Вы можете попробовать пакет tikzDevice. Этот пример основан на предложении Yihui здесь: https://github.com/daqana/tikzDevice/issues/60.

---
output:  
  pdf_document
header-includes:  
 - \usepackage{tikz}
---

```{r setup}
library(knitr)
knit_hooks$set(plot = function(x, options) {
  if ('tikz' %in% options$dev && !options$external) {
    hook_plot_tex(x, options)
  } else hook_plot_md(x, options)
})
```

Text.

```{r test, dev='tikz', external=FALSE}
x <- c(0,1,1,1,2,2,2,3)
Fn <- ecdf(x)
plot(Fn , lwd = 2, main="",ylab = "$F(x)$",xlab="$x$",yaxt="n")
```

Вот вывод:

enter image description here

1 голос
/ 20 мая 2019

Вы можете использовать latex2exp

library(latex2exp)
plot(Fn , lwd = 2, main="",
     ylab = latex2exp("$F(x)$"),
     xlab=latex2exp("$x$"),yaxt="n")

Или в R Base

plot(Fn , lwd = 2, main="",
     ylab = expression("F(x)"),
     xlab=expression("x"),
     yaxt="n")
...