GNUEmacs / ESS / Latex / Sweave: текст отображается по-разному, когда курсор находится в латексном коде или в R-коде

Когда я прокручиваю документ Sweave (Rnw) с латексом и кодом R, текст перескакивает при смене режима с Latex на ESS. Эти два режима не согласны с тем, как следует переносить текст. Более того, я заметил, что когда я

  1. M-x toggle-truncate-lines для включения усечения длинных строк, когда курсор находится в латексном коде
  2. переместите курсор к коду R
  3. вернуться к коду латекса

режим усеченных длинных строк больше не включен. Кто-нибудь заметил это? Кто-нибудь решил эту проблему?


person jrm    schedule 14.12.2011    source источник
comment
Да, я это заметил; то же самое происходит с режимом яруса M-x. Я просто привык к этому, так как недостаточно знаю о emacs, чтобы это исправить. Хотел бы увидеть ответ.   -  person Aaron left Stack Overflow    schedule 15.12.2011
comment
Что касается @csgillespie, я тут не разбираюсь в грамматике, но я считаю, что это документ Sweave, а не документ Sweave. Звук (согласный или гласный) определяет, используем ли мы a или an. См. ссылку.   -  person jrm    schedule 19.12.2011
comment
@jrm: Нет ничего плохого в том, чтобы расщеплять волосы, вы поднимаете важный point;) Тем не менее, я считаю, что использование Sweave-документа немного раздражает, и я бы все равно выбрал Sweave.   -  person csgillespie    schedule 20.12.2011
comment
Спасибо за ссылку @csgillespie. Теперь я очень хочу услышать ваше произношение. :)   -  person jrm    schedule 20.12.2011
comment
Я всегда говорю ehs-weave, так что мне тоже подходит. @Csgillespie, как сказать?   -  person Aaron left Stack Overflow    schedule 21.12.2011


Ответы (1)


Прочитав аналогичный вопрос в списке рассылки [email protected], я понял это. Когда мы прокручиваем файл noweb, мы переключаем основные режимы с ESS на LaTeX. Большинство основных режимов уничтожают все локальные переменные как часть их инициализации, поэтому, когда мы просто устанавливаем переменную локально, она перезаписывается. Чтобы решить эту проблему, я изменил найденный хук:

(add-hook 'LaTeX-mode-hook '(lambda () (if (string-match "\\.Rnw\\'" buffer-file-name) (setq fill-column 80))))

Вы можете установить аналогичный крючок для режима яруса или переключения-усечения и т. Д. В соответствии с вашими потребностями. Обратной стороной этого решения является то, что вы застряли с одним значением для переменной, установленной в хуке.

person jrm    schedule 15.12.2011
comment
Спасибо, я с нетерпением жду возможности попробовать. - person Aaron left Stack Overflow; 15.12.2011
comment
Привет, я нашел ваше обсуждение очень интересным. Есть ли способ использовать приведенный выше код для включения второстепенного режима структуры в Sweave? Потому что, когда я перехожу через ESS из LaTeX (и наоборот), вся намеченная часть разворачивается. - person Riccardo; 26.02.2012
comment
@Riccardo, я не уверен, как решить проблему схемы из-за описания в моем ответе. То есть, если вы не взломаете основные режимы для сохранения локальных переменных. Мое решение было чем-то вроде взлома, поэтому размеры столбцов заполнения были одинаковыми для обоих режимов. - person jrm; 26.02.2012