同一文件中多种语言的语法突出显示:StatWeave/SAS/LaTeX
-
20-08-2019 - |
题
我正在使用 StatWeave 从 LaTeX 文件中运行 SAS 代码。我希望能够在文本编辑器中打开文件,并使用 LaTeX 语法突出显示查看主 LaTeX 文档,以及使用 SAS 语法突出显示的嵌入式 SAS“代码块”。(“代码块”是真实的(工作的)代码,不仅仅是为了显示,所以我认为 LaTeX 列表包不会工作。)我确信一定有一种方法可以用 emacs 来做到这一点,但我不知道不知道那是什么...在这一点上,我愿意接受任何编辑器的任何解决方案。
2010 年 2 月 5 日更新:我认为最好的方法实际上是停止尝试使用 StatWeave 和 SAS,而是学习使用 Sweave 和 R。我对 Vim 中的 Sweave 突出显示感到满意,但我知道其他人对 ESS 非常满意,所以我将继续并接受这个答案,以便我们可以结束这个问题。
其他提示
难道是一个选项,不具有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版本的,所以我想像,能更好地工作。