2013-03-04 22 views
5

W związku z próbą znalezienia rozwiązania dla mnie w odniesieniu do this question, jestem pogrążony w próbach napisania prawidłowego znacznika Rd. Chciałbym dodać sekcję o nazwie Raw Function Code i umieścić pod nią kod funkcji. Mam osiągnięto ograniczone sukcesy w tym zakresie poprzez napisanie skryptu do modyfikowania plików Rd zawieraćJak mogę zachować początkowe białe spacje w linii podczas pisania dokumentacji Rd?

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

Jednak nawet jeśli ręcznie prawidłowo rozmieszczone tekst do pliku .Rd (stosując albo spacje lub zakładek), przy czym początkowa biała przestrzeń każdej linii wydaje się być rozebrana, pozostawiając niepożądaną funkcję patrzenia. Zauważyłem, że jeśli podaję znak początkowy przed białą spacją, zachowana zostaje biała przestrzeń. Nie chciałem jednak dostarczyć postaci początkowej, ponieważ chciałbym, aby ludzie mogli kopiować i wklejać bezpośrednio z wygenerowanego pliku PDF.

Sprawdziłem parseRd i wiem, że istnieją trzy rodzaje tekstu LaTeX- podobne, podobne do R i dosłowne. Próbowałem umieścić mój kod funkcji w \ code i \ verb i żaden z nich nie przyniósł pożądanych rezultatów. Co mogę zrobić, aby utrzymać moją początkową białą przestrzeń?

+0

Czy wypróbowałeś '\ begin {verbatim} ... \ end {verbatim}' –

+0

\ begin i \ end to nieznane makra podczas używania R CMD Rd2pdf. Być może muszę użyć Rdconv, a następnie dodać mój dodatkowy kod w lateksie zamiast Rd. Wydaje się dziwne, że nie byłoby sposobu na dodanie wcięć do kodu. – russellpierce

Odpowiedz

1

\section makro zawiera typ lateksu tekstu, ale jak chcesz napisać kod, można użyć \synopsis makro, tj

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

Jest jeden problem z tym mimo; nie możesz podać nazwy tej sekcji, jest ona automatycznie nazywana inną sekcją użytkowania. To samo można osiągnąć, używając makro \examples, ale teraz nazwa sekcji to Przykłady, co jest prawdopodobnie jeszcze bardziej wątpliwe (nie wspominając już o tym, że prawdopodobnie masz już sekcję Przykłady).

+0

Wow, co jest frustrujące. Makra '\ examples' i' \ usage' są dokładnie tym, czego chcę. Są w trybie R-like. '\ synopsis' jest w trybie dosłownym, który działa, ale jest podrzędny. Wygląda na to, że \ Sexpr powinien być w stanie zapewnić to, czego chcę, ale sekcję? == czasami ... więc kto wie, co to znaczy. – russellpierce

+1

Wygląda na to, że '\ Sexpr' może działać wewnątrz sekcji, a przy opcjach eval = FALSE, wyniki = rd i echo = TRUE to zrobiłoby dokładnie to, co chcesz, ale mógłbym sprawić, żeby działało poprawnie ... –

+0

Powinno działać w teoria. W praktyce nie mogę go uruchomić. Natknąłem się na opcje "etap" i "wyniki", ale nie znalazłem niezawodnej kombinacji. Nie mogę powiedzieć, czy mówisz, że byłeś lub nie byłeś w stanie sprawić, żeby działało. Jeśli tak, proszę podać kod .Rd jako odpowiedź. – russellpierce

1

Nie jest to możliwe bez modyfikacji sekcji użycia lub przykładów kodu Rd. Zobacz odpowiedź Hemmo na użyteczne obejście. Generuje tekst w trybie dosłownym, który jest mniej optymalny, ale znacznie lepszy niż nic.

(Ta odpowiedź jest ustawiony Wiki w przypadku tego stanu rzeczy zmian. Wynik ten jest obecny jako R-2.15.1)

0

Jeśli chcesz super hacky sposób to zrobić, można użyć \Sexpr aby zerowej szerokości znaków i dodać przestrzenie między nimi:

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

a jednak ostrzeżenie - pakiet zbuduje w porządku, ale R CMD KONTROLA rzuci dopasowanie.