отправить пакет R с зависимостями CTAN в CRAN - PullRequest
2 голосов
/ 25 мая 2019

В настоящее время я работаю над пакетом 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 собирался принять это представление.Насколько я могу судить, есть четыре варианта

  1. отправить пакет как есть и добавить инструкции по установке через документацию и поле SystemRequirements файла DESCRIPTION.
  2. включите все необходимые латексные пакеты в мой пакет R и каким-то образом сделайте их доступными клиентскому латексному компилятору
  3. добавьте зависимость к tinytex , который может автоматически устанавливать пакеты CTAN
  4. Бросьтеошибка при установке, если зависимости не встречаются

До сих пор я использовал 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

1 Ответ

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

Я достаточно хорошо знаком с политикой репозитория CRAN , и, как правило, нет условий для внешних зависимостей от CRAN и т. Д.

Тем не менее, я немного растянул CRANпутем загрузки готовых библиотек с GitHub по мере необходимости.После этого вы можете смоделировать свой пакет.

Но я действительно думаю, что вы должны сделать это ... подготовить свою pdf-виньетку локально, а затем сделать так, чтобы пакет R "внедрил" его как есть.Как это сделать, объясняется, например, в этом посте Марком , и я просто конвертировал свой пакет RcppAnnoy , чтобы сделать именно это.Конечно, YMMV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...