Визуализация уравнений в виде изображений и включение их в выходные документы 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.