Визуализация уравнений в виде изображений и включение их в выходные документы Word/PowerPoint с помощью R Markdown

Я безвозмездно выкладываю это со страницы сообщества R Studio, так как это немного эзотерично.

Можно ли попросить Knitr преобразовать мои уравнения из R Markdown в изображения, а затем вставить полученные изображения в мой окончательный документ? Случай использования, который я имею в виду, - это преодоление некоторых недостатков редактора уравнений MSFT при вязании в Word/PowerPoint. Если бы уравнение было просто изображением, то я мог бы иметь в своем MSFT-документах уравнения качества LaTeX, что было бы невероятно!

Самая близкая вещь, которую я нашел, используетlatex2exp и добавление фрагмента кода R, который создает фигуру, которая на самом деле представляет собой формулу LaTeX. Мне нравится этот вид взлома, но latex2exp имеет некоторые ограничения.

1 ответ

Как уже упоминалось в комментариях, Webtex является простым решением. Pandoc-х --webtex Переключатель не действует при нацеливании на docx. Однако фильтр Lua можно использовать для того же эффекта.

local mediabag = require 'pandoc.mediabag'
local utils = require 'pandoc.utils'

local function url_encode(str)
  local encode_char = function(c)
    return ("%%%02X"):format(string.byte(c))
  end
  return str
    :gsub("\n", "\r\n")
    :gsub("([^%w%-%_%.%~])", encode_char)
end

local function webtex_url(formula)
  return 'https://latex.codecogs.com/png.latex?' .. url_encode(formula)
end

function Math(el)
  local filename = utils.sha1(el.text) .. '.png'
  local mime, contents = mediabag.fetch(webtex_url(el.text), '.')
  mediabag.insert(filename, mt, contents)
  local img = pandoc.Image({}, filename)
  return el.mathtype == 'DisplayMath'
    and {pandoc.LineBreak(), img, pandoc.LineBreak()}
    or img
end

Сохраните это в файл и передайте файл в pandoc через --lua-filter вариант. Он преобразует все уравнения в изображения PNG через Webtex.

Другие вопросы по тегам