【问题标题】:GNUEmacs/ESS/Latex/Sweave: text displays differently when cursor is in latex code or in R codeGNUEmacs/ESS/Latex/Sweave:当光标在 Latex 代码或 R 代码中时,文本显示不同
【发布时间】:2011-12-14 22:42:40
【问题描述】:

当我使用乳胶和 R 滚动浏览 Sweave 文档 (Rnw) 时 代码,当模式在 Latex 和 ESS。这两种模式不同意文本应该如何换行。此外,我注意到当我这样做时

  1. M-x toggle-truncate-lines 启用截断长行,而 光标在乳胶代码中
  2. 将光标移至 R 代码
  3. 返回乳胶代码

截断长线模式不再开启。有没有人注意到这一点?有人解决了这个问题吗?

【问题讨论】:

  • 是的,我注意到了;它对 M-x longlines-mode 做同样的事情。我刚刚习惯了它,因为我对 emacs 了解不足,无法修复它。不过很想看到答案。
  • 致@csgillespie,我在这里对语法感到困惑,但我相信这是一个 Sweave 文档而不是a Sweave 文档。决定我们使用 a 还是 an 的是声音(辅音或元音)。见link
  • @jrm:分叉没什么问题,你提出了一个重要的point ;) 但是,我发现说“一个 Sweave”文档有点刺眼,并且仍然会选择“一个 Sweave”。
  • 感谢@csgillespie 的链接。现在我真的很想听听你的发音。 :)
  • 我总是说“ehs-weave”,所以“an”也适合我。你怎么说 Sweave,@csgillespie?

标签: r emacs latex sweave ess


【解决方案1】:

通过阅读 ess-help@r-project.org 邮件列表中的类似问题,我了解到了这一点。当我们滚动浏览 noweb 文件时,我们正在将主要模式从 ESS 切换到 LaTeX。大多数主要模式在初始化时会杀死所有局部变量,因此当我们只是在本地设置变量时,它会被覆盖。为了解决这个问题,我修改了一个我发现的钩子:

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

您可以为 longlines-mode 或 toggle-truncate-lines 等设置类似的钩子,以满足您的需求。此解决方案的缺点是您被挂钩中设置的变量的单个值卡住了。

【讨论】:

  • 谢谢,期待尝试。
  • 嗨,我发现你的讨论很有趣。有没有办法使用上面的代码在 Sweave 中启用轮廓次要模式?因为当我从 LaTeX(反之亦然)通过 ESS 时,所有轮廓部分都展开了。
  • @Riccardo,由于我的回答中的描述,我不确定如何解决大纲问题。也就是说,除非您破解主要模式以保留局部变量。我的解决方案有点小技巧,因此两种模式的填充列大小相同。
猜你喜欢
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多