我正在使用 StatWeave 从 LaTeX 文件中运行 SAS 代码。我希望能够在文本编辑器中打开文件,并使用 LaTeX 语法突出显示查看主 LaTeX 文档,以及使用 SAS 语法突出显示的嵌入式 SAS“代码块”。(“代码块”是真实的(工作的)代码,不仅仅是为了显示,所以我认为 LaTeX 列表包不会工作。)我确信一定有一种方法可以用 emacs 来做到这一点,但我不知道不知道那是什么...在这一点上,我愿意接受任何编辑器的任何解决方案。

2010 年 2 月 5 日更新:我认为最好的方法实际上是停止尝试使用 StatWeave 和 SAS,而是学习使用 Sweave 和 R。我对 Vim 中的 Sweave 突出显示感到满意,但我知道其他人对 ESS 非常满意,所以我将继续并接受这个答案,以便我们可以结束这个问题。

有帮助吗?

解决方案

也许解决方案之一是 多种模式 Emacs Wiki 上的页面提供了帮助。另外,该手册用于 挥舞Emacs 讲统计 可以处理 Sweave 文件,因此由于 StatWeave 看起来很相似,也许您也可以破解 ESS 来处理这些文件。ESS似乎已经支持SAS,因此所需的更改可能不会太大。

其他提示

难道是一个选项,不具有SAS文件直接在的代码,但使用“\输入” 代替?有一件事我经常做源的例子是 把它们放在一个子目录样品/然后用“亮点”,以创建可包含在主文件LaTeX文件。这样我可以执行的源文件每次他们都更改为检查它们是否正常工作。 (再)生成的代码TEX可以通过一个shell脚本或化妆来完成,如果它是一个更大的项目。在大多数情况下,一个简单的脚本generate_tex.sh,就足以让我的项目,我叫我改变我的任何样本后。它的内容可以是这样的

#!/bin/bash
highlight -L -f --wrap-simple *.css --outdir ../input/
highlight -L -f --wrap-simple *.html --outdir ../input/
highlight -L -f --wrap-simple *.php --outdir ../input/

对于web项目。在主TEX文件中使用包括然后将样品

\input{filename.css}

UltaEdit可能的工作,但你必须做的设置大量

如果您使用的是XEmacs中可以使用mmmmode句法亮点。我使用ESS与statweave这样你为什么不使用ESS到sybntax亮点和使用statweave做的工作的第一人回答。然而,我不使用SAS但在同一个文件中使用STATA和R,他们都用自己的语法高亮的工作。  (需要“MMM模式) (需要“MMM-VARS)  (setq MMM的全球模式“也许) (setq MMM的子模式装饰级别1)

(MMM-添加组   “乳胶统计   “((R-标签      :子模式R模式      :面对MMM-代码子模式脸      :定界符模式零      :前 “开始{RCODE}”      :背 “结束{RCODE}”      :背偏移(向后炭-1)      :插入((R R-标签零@ “\ BEGIN {RCODE}”?     @ “\ n” _ “\ n” @ “\ {端RCODE}” @))      )     (STA-标签      :子模式STA-模式      :面对MMM-代码子模式脸      :定界符模式零      :前 “开始{Statacode}”      :背 “结束{Statacode}”      :背偏移(向后炭-1)      :?插入((S STATA标签零@ “\ {开始} Statacode”     @ “\ n” _ “\ n” @ “\ {端} Statacode” @))      )))

(添加到列表“MMM模式-EXT类-ALIST        “(无 “-swv.tex” 胶乳提供的统计信息))

您只需要更改为SAS模式(我想如果这是它叫什么) 我有我的latex.el文件(载有在init.el拉姆达)以下 (本地组键  [   (对照F1)],点击  “(拉姆达()     (互动)     (如果(字符串匹配“\ .tex”缓冲文件名)  (progn这个     (让(文件名文件名1文件名,wihoutswv)       (setq文件名(缓冲文件名称))       (setq文件名1(文件名,非目录文件名))       (setq文件名称wihoutswv(更换-正则表达式,在字符串 “-swv” “”       文件名1))       (setq文件名称wihoutswv(更换-正则表达式,在字符串 “\ .tex” “”       文件名称wihoutswv))       (如果(字符串匹配“-swv \ .tex”缓冲文件名)    (找到文件,其他窗口(CONCAT文件名,wihoutswv“.tex”))  (找到文件,其他窗口(CONCAT文件名,wihoutswv“-swv.tex”))  )       )     )       (消息“你是乳胶模式,这既不是SWV也不TeX的文件。不能打开相应的特克斯或sweave文件”)  )))

(全局 - 组 - 键[F1],点击   “(拉姆达()      (互动)      (保存缓冲器)      (如果(字符串匹配“-swv \ .tex”缓冲文件名)   (progn这个     (互动)     (胶乳模式)     ;;(字体锁-fontify缓冲器)     (平衡视窗)     (mylatex-删除缩进)     (保存缓冲器)     (保存窗口冲程(运行电流statweave文件)) ; (mylatex清洁)     )        (如果(字符串匹配“\ .tex”缓冲文件名)     (progn这个       (互动)       (胶乳模式)       ;(字体锁-fontify缓冲器)       (平衡视窗)       (DO-PDF)  ; (mylatex清洁)       )   (消息“这不是非此即彼的TeX也不SWV文件,我不知道该怎么做以外的缓存保存到文件中。所以,我没有”)   ))      )

(defun定义运行电流statweave文件()   “在-swv.tex文件执行statweave并启动表示出查看输出”   (互动)   (让(文件名文件名1文件名,wihoutswv CMD1-STR CMD2-STR状态)   (setq文件名(缓冲文件名称))   (setq文件名1(文件名,非目录文件名))   (setq文件名称wihoutswv(更换-正则表达式,在字符串 “-swv \ .tex” “.PDF” 文件名1)) ;; (setq CMD1-STR(CONCAT “statweave” 文件名1 “&&表示出” 文件名-wihoutswv “&”))   (setq CMD1-STR(CONCAT “statweave” 文件名1))   (setq CMD2-STR(CONCAT “了Evince” 文件名-wihoutswv “&”)) ;; (壳命令CMD1-STR)   (setq输出缓冲器 “的 swvoutput ”)   (保存窗口冲程(setq状态(壳命令CMD1-STR输出缓冲器)))   ;;(消息状态) ;; (让(状态)((壳命令CMD1-STR输出缓冲器))))) ))

这看起来很恐怖,我不是口齿不清专家,所以我相信它有很多低效率的,但它的工作原理。

您可以尝试新的StatReport乳胶类的作用有点像Sweave,但在乳胶完全实现。

<强>工作流: 运行一次并获得SAS代码,再次运行在SAS的代码中,运行胶乳和得到包含进输出。

我认为它的颜色代码(使用SASnRdisplay类)如果记得右

请参阅纸这里: http://support.sas.com /resources/papers/proceedings12/324-2012.pdf 和CTAN的包文档的http://镜.switch.ch / FTP /镜/特克斯/宏/胶乳/了contrib / statrep / statrep.pdf

要dicuss Jean的响应: 我一直与ESS的问题是,没有足够的功能支持Windows(其中我运行SAS)。

因此Statweave尚未有用的我。

这几天有个SAS Linux版本的,所以我想像,能更好地工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top