2013-03-21 3 views
6

Я пытаюсь написать документацию для R-пакета в Markdown и преобразовать его в Rd-файл.Преобразование уценки в Rd или определение пользовательских правил преобразования уценок?

Я думаю, еще один способ смотреть на это, что я хочу структуру, которая распознает различные уценки конструкции и позволяет мне определить, как они должны быть оказаны, например:

  • `text in backticks` преобразуется в \code{text in backticks}
  • **text** превращается в \bold{text}
  • списки уценки преобразуются в \itemize{...}

и так далее.

Есть ли что-то, что позволит мне это сделать? Пакет pander в R (обертывание вокруг pandoc) выглядел многообещающим, но я не уверен, что могу указать правила преобразования (например, он конвертирует обратные ссылки с помощью \texttt, и я хочу \code), а также генерирует полный автономный документ, а не просто мой вводный фрагмент преобразован.

Пакет markdown для R, по-видимому, просто делает уценку -> HTML. Похоже на то мощи есть поддержка пользовательских рендеров, но я не знаю, как написать один (это похоже, что я должен написать код C?)

Я после того, как что-то вроде этого:

convertMarkdown(myTextSnippet, 
       backticks = function (txt) { 
        return(paste0('\\code{', txt, '}')) 
       }, 
       bold = function(txt) { 
        return(paste0('\\bold{', txt, '}')) 
       }, 
       unordered.list = function (items) { 
        itms <- paste('\\item', items, collapse='\n') 
        return(paste('\\itemize{', itms, '}', sep='\n')) 
       }, 
       # ... and so on 
) 

Существует ли такая вещь?

(Бонус: Я просто хочу, чтобы иметь возможность вставлять уценку в мои комментарии roxygen, так что думал о преобразовании частей комментариев от уценки к rd, а затем запускал roxygen на выходе).

+0

Почему бы не преобразовать все это, а затем прочитать и gsub, как вам хотелось бы.Pandoc делает практически все, что вам нужно, но 'gsub' out' \\ texttt {'для' \\ code {'и т. Д. Посмотрите [this] (https://github.com/trinker/reports/blob/master /R/QC.R) и украсть, как будто это твоя работа. –

+0

«Почему бы не преобразовать все это» - что вы имеете в виду? Вы имеете в виду просто использовать pandoc, чтобы сделать уценку -> латекс, а затем полагаться на gsub для преобразования латекса -> Rd? –

+0

Да, точно. Будет ли это работать? Просто любопытно, почему бы не «roxygen2»? –

ответ

4

Вы видели пакет maxygen от @ gabor-csardi?

https://github.com/gaborcsardi/maxygen

Это в основном позволяет писать roxygen заголовки в Markdown.

[UPDATE] Эти изменения были отнесены к пакету roxygen2 и выйдут с выпуском версии 6. От GitHub:

Большинство полей теперь могут быть написаны с использованием разметки Markdown вместо обычного Rd-языка . Вы можете включить Markdown глобально, добавив Roxygen: list (markdown = TRUE) в ОПИСАНИЕ. Знаки @md/@noMd включают разметку Markdown для включения/выключения для данного блока. Смотрите 'уценки' виньетка для получения более подробной информации (# 364, # 431, # 499, # 506, # 507), по @gaborcsardi

+0

Ooo, новый упаковка! Большое спасибо! Я буду ждать его на КРАН ... –

0

Вы можете использовать функцию md2rd предложенную Fabian Scheipl: см roclet-md2rd.R для деталей.

Смежные вопросы