2012-03-26 6 views
13

Podczas edycji dokumentu Sweave w LaTeX (przy użyciu trybu Noweb), Emacs wie, aby "zignorować" kod, który jest w < < >> = bloki. Jednak w przypadku bloków pełnoekranowych \ Sexpr {} nie ma to miejsca. Biorąc pod uwagę, że odniesienia R od kolumn poprzez „$” i LaTeX używa $ do potrącenia równania te \ Sexpr {} blokuje często złamać podświetlanie składni, tak:

Emacs highlighting issue when using Sweave

Mam bardzo podstawową wiedzę elisp & Podświetlanie składni Emacsa, ale mam nadzieję, że możliwe będzie dodanie czegoś do .emacs, który wyłączy jakiekolwiek detekowanie parsowania/$ w obrębie \ Sexpr {}.

+0

Zakładam, że korzystasz z AUCTeX. W domyślnym trybie LaTeX, który jest dostarczany w pakiecie z Emacsem, ten problem jest mniej poważny, ponieważ podświetlanie $ ... $ stosowane jest tylko w przypadku krótkich (jednoliniowych) wyrażeń matematycznych, więc nigdy nie "krwawi" jak w migawce. IOW raport błędów do autorów AUCTeX jest w porządku. – Stefan

Odpowiedz

8

Myślałem, że emacs z ESS ma poprawne podświetlanie składni dla Sweave?

W każdym razie, najłatwiejszą "poprawką" jest po prostu nie używać operatora $, lecz zamiast tego [[. Na przykład:

foo$p.value 
foo[['p.value']] 

Powinien dać taki sam wynik. Myślę foo$p.value jest po prostu skrót od foo[["p.value",exact=FALSE]]

5

nie mam dobrej odpowiedzi dla Ciebie, jak nie jestem hakerem Emacs, więc zazwyczaj zrobić jedną z dwóch rzeczy:

  • Albo dodać prosty % $ komentarzu na linii do „blisko” wyrażenie matematyczne z $ do $,

  • Albo przepisać wyrażenie nie używać $ opartych podrzędnego:
    round(as.numeric(chisq.test(someVar)["p.value"]), 2).

7

nie mam poprawkę albo, ale będę przechodzić wzdłuż mojego obejście, które ma nigdy (dobrze, rzadko) zrobić dowolną obróbkę w \Sexpr kawałki ale zamiast do przechowywania rzeczy Chcę używać w \Sexpr w zmiennych, a do tego w tym samym fragmencie robię główne obliczenia w.

<<echo=FALSE, results=hide>>= 
t1 <- chisq.test(someVar) 
p1 <- formatC(t1$p.value, format="%f", digits=2) 
@ 

\dots with a $p$-value of \Sexpr{p1}. 

Chociaż istnieją pewne wady do tego, uważam, że to pomaga mi lepiej śledzić, co Chcę przedstawić i jak chcę to przedstawić.

Odłożyć na bok, należy rozważyć użycie formatC zamiast round, ponieważ może zachować znaczące zera (tj. 0.10 zamiast 0,1).

+1

Dobrze na boku! Nie wiedziałem o rzeczach formatC. To zawsze doprowadzało mnie do szału, jak R zrzuca znaczące zera. –

+1

To podejście pomaga również w przypadku czegoś takiego jak '\ Sexpr {sprintf"%. 2f ", my.float)}' gdzie emacs następnie traktuje wszystko po symbolu procentu jako komentarz, który następnie łamie dopasowanie nawiasów, z różnymi rodzajami związanej z nimi brzydoty. – mac

Powiązane problemy