我一直在玩各种用Python编写文字的方法.我喜欢noweb,但我有两个主要问题:首先,很难在Windows上构建,我花费了大约一半的开发时间; 第二,它要求我缩进每个代码块,因为它将在最终的程序中 - 我写的时候不一定知道.我不想使用Leo,因为我非常依赖Emacs.
是否有一个很好的文字编程工具:
谢谢!
更正:noweb 不会让我以后缩进---我误读了我就可以找到的文件.
默认情况下,
notangle在扩展块时保留空格并保持缩进.因此,它可以与Miranda和Haskell等语言一起使用,其中缩进很重要
这让我只有"Windows上的运行"问题.
R在.Rnw文档中使用代码块时,emacs缓冲区会自动检测到光标位于代码块内(即内部<<>>和@),并切换到ESS模式 - 这非常有价值,因为可以在内部进行基于ESS的代码格式化代码块,更有用的是,可以将代码行/区域发送到下级*R*进程缓冲区.
如何在R代码块中的组织模式文件中(即#+begin_src R和之间#+end_src)获得相同的功能- 我希望emacs能够在R代码块中自动识别它,并打开ESS模式以便我可以发送片段代码的*R*过程.我知道我可以做Ctl-C '并切换到不同的ESS模式缓冲区,在那里我可以编辑代码并获得所有其他ESS模式的便利(包括发送代码R).不过,我想没有要做到这一点,即我希望能够从R代码块发送代码片段在同一组织模式缓冲区.
假设我有一个.Rnw包含通常的LaTex与R代码块混合的文件.(我对转换.Rnw幻灯片文档特别感兴趣,但这个问题适用于任何.Rnw文档).现在我想将其转换为包含所有R代码的文件,以及通常由LaTex生成的所有文本,作为R注释.换句话说,我想要的功能类似于什么Stangle(),但我也希望LaTex的所有文本部分转换为在生成的.R文件中注释掉的纯文本.
这将是一种非常方便的方法,可以自动生成一个注释的R文件,该文件很容易在您最喜欢的语法高亮编辑器(例如emacs)中查看.对于一篇只有一点R代码的长篇文章来说,这听起来可能不是一个好主意,但是当.Rnw文档实际上是幻灯片演示文稿(例如使用beamer)时它开始看起来很吸引人- 然后是文本部分的文本部分.幻灯片可以为R代码做出完美的评论.
任何人对如何做到这一点都有任何想法?提前致谢.
我正在使用noweb来记录我的C++和C代码.在pdf文件中(在编织和使用pdflatex之后生成),一些代码略微偏离:
>>并<<转为适当的开启和关闭guillemets;-- 变成了一个短划线.我的编织命令是:
noweave -latex -delay -x foo.nw > foo.tex
Run Code Online (Sandbox Code Playgroud)
编辑:所以我可能需要使用一个漂亮的打印机.可用的那些做得太多了.我将调查它,如果我找到一个直接的解决方案,我将分享它.
有没有人在大型Java项目中使用noweb文字编程工具,必须在不同的子目录中生成多个源代码文件?你是怎么用noweb来管理的?那里有资源和/或最佳实践吗?
我正在努力寻找一个好的文字编程工具.我们只是说这不是一个简单的决定.(通用的太通用了,具体的太具体了:))
在其他方面,我已经noweb起步并运行,但我很难获得像我期望的输出.在noweb 维基百科页面有与正确建立一个小例子,
noweave -index -latex hello.noweb > hello.tex && pdflatex hello && pdflatex hello
Run Code Online (Sandbox Code Playgroud)
但每个块的末尾没有交叉引用.例如,CWEB有指针,例如"此代码在第12节中使用".和"另见第5和第7节".这个功能是否完全缺失,noweb或者我是否错过了编译中的一个步骤?
在noweb模式下,我想让doc块和代码块更容易区分.我已经在使用font-lock-mode,但是它将相同的面应用于R中的字符串和tex中的字符串,因此不能很好地区分代码和doc块.
例如,代码块的背景颜色略有不同.
一种可能性是为代码块的次要模式定义新的面,但是当在该模式下编辑缓冲区时,该面也将适用.
另一种可能性是为代码块创建叠加层.
此外,有些相关的组织模式可以配置为使用不同的背景颜色作为源块.
更新:我现在使用polymode来实现这个目标.
我正在使用带有大型LaTeX Sweave文档的cacheSweave.而不是放
<<cache=true>>=
...snip...
@
Run Code Online (Sandbox Code Playgroud)
在我几乎所有的代码块中,我宁愿cache=true成为默认代码,也可以使用
<<cache=false>>=
...snip...
@
Run Code Online (Sandbox Code Playgroud)
当我不想要缓存代码块时.如何为代码块设置此默认参数?
我目前正在使用以下代码来编译Sweave文档:
library(cacheSweave)
Sweave(infile, driver = cacheSweaveDriver)
Run Code Online (Sandbox Code Playgroud) 在文档Stangle上使用时Sweave,输出包含一个给出块名称的注释.这在教学环境中非常有用,可以让学生在剪切和粘贴时对代码进行定位.但是,当我用来从a knitr生成.R代码时.Rnw,不包括块名称(至少我可以看到):
knit('example.Rnw',tangle=TRUE)
Run Code Online (Sandbox Code Playgroud)
我可以运行Stangle一个写入的文档,knitr除了块参数中存在不兼容性,导致运行Stangle没有错误.
有没有办法强制knitr在纠结的R代码中生成注释,包括像本机一样的块名(和/或数字)Stangle?
从emacs-ess运行Sweave时,会提供错误代码块号.是否有一种简单的方法可以按编号在代码块之间导航?否则,他们很难识别.