изменить рендерер mathjax в блокнотах R (с «self_contained: false») - PullRequest
1 голос
/ 09 февраля 2020

Я создаю блокноты R, содержащие уравнения. Я использую RStudio 1.2.5033 на Windows 10, R 3.5.1 и rmarkdown 2.1. Когда мои записные книжки R отображаются как HTML, MathJax (v2.7.2) использует выходной процессор «HTML - CSS» для отображения уравнений. Но я думаю, что выходной сигнал выходного процессора "Common HTML" выглядит лучше. Поэтому я хочу включить в мои ноутбуки R директиву, которая заставляет MathJax использовать выходной процессор Common HTML. Как я могу это сделать?

Если бы я рендерил обычный документ R Markdown с выходным форматом html_document, я мог бы решить эту проблему с помощью опции mathjax в заголовке YAML. Например, когда следующий файл отображается в HTML, MathJax будет использовать выходной процессор Common HTML:

---
title: "Trouble with MathJax"
output: 
  html_document:
    mathjax: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML.js"
    self_contained: false    
---

\begin{equation}
  R_3 = \alpha
\end{equation}

Но это решение не работает, когда я изменяю формат output от html_document до html_notebook. В этом случае я получаю вывод, который выглядит следующим образом:

screenshot showing problem with html_notebook rendering

Уравнение отображается с помощью Common HTML, но в нем много ошибок в верхней части страницы (обратите внимание на четыре пункта), и стандартная записная книжка R CSS, похоже, не реализована.

Проблема, как представляется, общая при отображении записных книжек R с self_contained: FALSE , как предложено в , записные книжки R не отображаются должным образом, когда «self_contained» равно FALSE, потому что каталог «files» удаляется после рендеринга . Но я не вижу хорошего обходного пути для этой проблемы.


Dead Ends

Документация MathJax , кажется, указывает на то, что я можно указать выходной процессор, добавив массив jax в вызове к MathJax.Hub.Config(). Но когда я это сделал, мои уравнения все еще отображаются через выходной процессор HTML - CSS. Вот минимальный пример документа R Markdown, в котором обнаружена проблема:

---
title: 'Trouble with MathJax'
output: html_notebook
---

<script type="text/x-mathjax-config"> 
  MathJax.Hub.Config({ 
    jax: ["input/TeX", "output/CommonHTML"],
  });
</script>

\begin{equation}
  R_3 = \alpha
\end{equation}

Кажется, что вызов MathJax.Hub.Config() здесь ничего не делает. И в Chrome, и в Edge уравнение отображается через HTML - CSS, а не Common HTML. Как я могу изменить рендеринг на Общий HTML?


Похожие сообщения

1 Ответ

0 голосов
/ 12 февраля 2020

Решение состоит в том, чтобы просто пропустить строку self_contained в заголовке YAML или, что эквивалентно, установить self_contained в true. Вот минимальный пример записной книжки R, для которой пользователь выбрал рендерер mathjax:

---
title: "Self-contained notebook with non-default Mathjax config"
output:
  html_notebook:
    mathjax: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML.js"
---

$R_3 = 2$.

Когда файл отображается в HTML, уравнение отображается с помощью Common HTML, а не с HTML - CSS. И сценарий Mathjax содержится в создаваемом файле «nb. html».

Я был удивлен, что это работает, потому что документация для rmarkdown::html_document() говорит, что «даже для автономных документов MathJax по-прежнему загружается извне (это необходимо из-за его размера). " Но Раздел 3.1.8 книги R Markdown указывает, что ограничение применяется только тогда, когда Mathjax загружается из локального файла. Так что, возможно, это не должно быть сюрпризом.

Примечание: стандартная конфигурация Mathjax, используемая пакетом rmarkdown, задается rmarkdown:::mathjax_config(). Начиная с rmarkdown v2.1, функция возвращает «MathJax. js? Config = TeX-AMS-MML_HTMLorMML».

...