Как я могу сохранить начальный пробел в строке при написании документации Rd?

В связи с попыткой найти для себя решение по этому вопросу, я обнаружил, что пытаюсь написать правильную разметку Rd. Я хочу добавить раздел с именем Raw Function Code и поместите код функции под ним. Я достиг ограниченного успеха в этом отношении, написав скрипт для изменения файлов Rd, чтобы включить

\section{Raw Function Code}{\code{
# some piece of R script will eventally provide this part of the text
}}

Однако, даже если я вручную правильно разместил текст в файле.Rd (используя пробелы или символы табуляции), начальный пробел каждой строки, кажется, удаляется, оставляя нежелательную функцию. Я заметил, что если я предоставлю начальный символ перед пробелом, пробел останется. Однако я не хотел указывать начальный символ, потому что хотел бы, чтобы люди могли копировать и вставлять их непосредственно из созданного PDF-файла.

Я просмотрел parseRd и знаю, что существует три типа текста LaTeX-подобный, R-подобный и дословный. Я попытался поместить свой код функции в \code и в \verb, и ни один из них не дал желаемых результатов. Что я могу сделать, чтобы удержать мой начальный пробел?

3 ответа

Решение

\section макрос содержит текст типа LaTeX, но так как вы хотите написать код, вы можете использовать \synopsis макрос, т.е.

\synopsis
# some piece of R script will eventally provide this part of the text
} 

Есть одна проблема с этим, хотя; Вы не можете дать имя этому разделу, он автоматически будет назван как другой раздел использования. То же самое может быть достигнуто с помощью \examples макрос, но теперь название раздела - "Примеры", что, вероятно, еще более сомнительно (не говоря уже о том, что у вас, вероятно, уже есть раздел "Примеры").

Это невозможно без изменения разделов использования или примеров вашего кода Rd. Смотрите ответ Hemmo для полезного обходного пути. Он производит текст в режиме дословного ввода, который является неоптимальным, но гораздо лучше, чем ничего.

(Этот ответ задается сообществом Wiki на случай, если ситуация изменится. Этот результат актуален по состоянию на R-2.15.1)

Если вы хотите супер хакерский способ сделать это, вы можете использовать \Sexpr сделать символы нулевой ширины и добавить пробелы между ними:

#' first line \cr
#'\Sexpr{"\u200B"} \Sexpr{"\u200B"} \Sexpr{"\u200B"} \Sexpr{"\u200B"} indented line

Предупреждение, однако, - ваш пакет будет работать нормально, но R CMD CHECK подойдет.

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