В настоящее время я работаю над пакетом R, который будет представлен CRAN в течение нескольких недель.Для запуска пакета нужны некоторые латексные пакеты.Эти латексные пакеты доступны в CTAN и вводятся в преамбуле документов RMarkdown через rmarkdown::latex_dependency()
.
. Это концепция моего фактического метода knit_print .
#' @export
knit_print.my_class <- function(obj, ...) {
knitr::raw_latex(
to_latex(obj),
meta = list(
rmakrdown::latex_dependency(
"ragged2e"
)
)
)
}
* 1008.*
Мой вопрос заключается в том, как эти зависимости могут быть определены таким образом, чтобы CRAN собирался принять это представление.Насколько я могу судить, есть четыре варианта
- отправить пакет как есть и добавить инструкции по установке через документацию и поле
SystemRequirements
файла DESCRIPTION. - включите все необходимые латексные пакеты в мой пакет R и каким-то образом сделайте их доступными клиентскому латексному компилятору
- добавьте зависимость к tinytex , который может автоматически устанавливать пакеты CTAN
- Бросьтеошибка при установке, если зависимости не встречаются
До сих пор я использовал option (1).
Моя конфигурация для travis (ubuntu 14.04):
apt install texlive-latex-extra
tlmgr install standalone
Для appveyor (Windows Server 2012 R2 x64) я распаковываю miktex-portable.exe
и добавляю его в PATH.Затем я получаю следующие пакеты:
mpm --install=standalone
mpm --install=ms
mpm --install=pbox
mpm --install=xcolor
mpm --install=colortbl
mpm --install=mptopdf
То, что я обнаружил до сих пор
- , используя Google для поиска внешних зависимостей и CRAN-допусков, только дало информацию о C иЗависимости C ++, которые не помогли мне.
- Глядя на некоторый исходный код, мы обнаружили, что
rticles
включает некоторые .sty
файлы непосредственно в inst/
, что заставляет меня поверить, что (2) являетсяправильный ответ.Однако rticles
определяет пользовательские форматы вывода, и им не нужно «устанавливать» латексные пакеты, поскольку файлы .sty
копируются в каталог рендеринга как часть шаблона. - magick использует файл конфигурации, который предотвращает установку в случае, если (системные) зависимости не встречаются.Он также генерирует информативное сообщение об ошибке, которое инструктирует клиента, как можно удовлетворить зависимости.
- пакет tinytex не выполнял никаких тестов компиляции на CRAN, когда он был представлен.Я также не могу заставить tinytex работать на appveyor