2009-05-08 5 views
3

Я использую StatWeave для запуска кода SAS из файлов LaTeX. Я хотел бы иметь возможность открыть файл в текстовом редакторе и просмотреть основной документ LaTeX с подсветкой синтаксиса LaTeX и встроенными фрагментами кода SAS с подсветкой синтаксиса SAS. («Кодовые фрагменты» являются реальным (рабочим) кодом, а не только для отображения, поэтому я не думаю, что пакет объявлений LaTeX будет работать.) Я уверен, что с emacs должен быть способ сделать это, но я не знаю Не знаю, что это такое ... На данный момент я открыт для любого решения с любым редактором.Подсветка синтаксиса для нескольких языков в одном файле: StatWeave/SAS/LaTeX

Обновление за 5 февраля 2010 года. Я решил, что лучший подход - это прекратить попытки использовать StatWeave и SAS, а вместо этого научиться использовать Sweave и R. Я доволен подсветкой Sweave в Vim, но я знаю другие люди, которые очень довольны ESS, поэтому я пойду дальше и приму этот ответ, чтобы мы могли закрыть этот вопрос.

ответ

1

Возможно, одним из решений на странице MultipleModes на Emacs Wiki помогает. Кроме того, в руководстве для Sweave говорится, что Emacs Speaks Statistics может обрабатывать файлы Sweave, так как StatWeave кажется схожим, возможно, вы могли бы взломать ESS для обработки этих файлов. ESS, похоже, уже поддерживает SAS, поэтому требуемые изменения могут быть не слишком большими.

1

Будет ли вариант не иметь файлы sas непосредственно в коде, а вместо этого использовать '\ input' ? Одна вещь, которую я часто делаю с исходными примерами, - , помещает их в образцы подкаталога /, а затем использует «подсветку» для создания файлов LaTeX, которые могут быть включены в основной файл. Таким образом, я могу выполнять исходные файлы каждый раз, когда они меняются, чтобы проверить, правильно ли они работают. Генерация кода tex (re) может выполняться с помощью сценария оболочки или из make, если это более крупный проект. В большинстве случаев достаточно простого скрипта 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/ 

для веб-проекта. В главном файле текс затем включают образцы с использованием

\input{filename.css} 
+0

Спасибо. Я хочу иметь файлы sas непосредственно в документе LaTeX в этом случае, но хорошо знать об этом другом варианте - –

0

UltaEdit может работать, но вы должны сделать большую установку

0

Если вы используете XEmacs вы можете использовать mmmmode для подсветки синтаксиса. Я использую ESS с statweave, так как первый отвечает, почему бы вам не использовать ESS для выделения sybntax и использовать statweave для выполнения этой работы. Однако я не использую SAS, но использовал stata и R в том же файле, и они оба работают со своей подсветкой синтаксиса. (требуется 'ммм-режим) (требуется' ммм-вары) (SETQ ммм-глобальный режим «может быть) (SETQ ммм-подрежим-украшение уровня 1)

(ттт-надстройку группа 'латекс-статистика ' ((г-тег : подрежим г-режим : лицо ттт-код-подрежим-лицо : разделитель-режим ноль : фронт "начать {RCODE}" : назад «конец {RCODE} " : back-offset (backward-char -1) : insert ((? R R-tag nil @" \ begin {Rcode} " @" \ n "_" \ n "@" \ end {Rcode} "@)) ) (STA-тег : подрежим СТО-режим : лицо ттт-код-подрежим-лицо : разделитель-режим ноля : перед "начать {Statacode}" : назад "конец {Statacode}" : назад смещение (назад-char -1) : insert ((?S STATA-тег ноль @ "\ начать {Statacode}" @ "\ п" _ "\ п" @ "\ конец {Statacode}" @)) )))

(добавить к списку ' ммм-режим-Ext-классы-ALIST «(Ноль„-swv.tex“латекс-статистика))

Вам просто нужно изменить в SAS-режиме (я думаю, если это то, что она называется) и у меня есть в моем latex.el файл (загружается с лямбда в init.el) следующие (местного установить ключ [ (контроль f1)]
«(лямбда() (интерактивный) (если (string-match "\ .tex" buffer-fi le-name) (progn (имя файла file-name1 file-name-wihoutswv) (setq имя-файла (имя-буфер-имя)) (setq file-name1 (file-name-nondirectory file -name)) (setq file-name-wihoutswv (replace-regexp-in-string "-swv" "" file-name1)) (setq file-name-wihoutswv (replace-regexp-in-string "\ .tex "" " file-name-wihoutswv)) (if (string-match" -swv \ .tex "buffer-file-name) (find-file-other-window (concat file-name-wihoutswv" .tex ")) (find-file-other-window (concat file-name-wihoutswv" -swv.tex ")) )) ) (сообщение" You ar e в латексном режиме, и это не файл swv и TeX. Не удается открыть соответствующий текс или sweave файл ") )))

и

(глобального установить ключ [f1]
«(лямбда() (интерактивный) (копи-буфер) (если (строка-матч "-swv \ .tex" буфер-имя-файла) (progn (интерактивный) (латекс-режим) ;; (шрифт-замок-раскрасить-буфер) (баланс-окна) (mylatex-delete-indent) (save-buffer) (save-window-excur sion (файл run-current-statweave-файл)) ; (Mylatex-чистый) ) (если (строка-матч "\ .tex" буфер-имя-файла) (progn (интерактивный) (латекс-режим) ; (шрифт-замок-раскрасить-буфер) (баланс-окна) (do-pdf) ; (mylatex-clean) )) (сообщение «это не TeX или SWV-файл, и я не знаю, что делать, кроме сохранения буфера в файл. Так что я сделал ") )) )

)

(DEFUN вводного тока statw eave-file() «Выполнение statweave в файле -swv.tex и запуск evince для просмотра вывода» (интерактивный) (let (имя файла file-name1 имя-имя-wihoutswv cmd1-str cmd2-str status) (setq имя-файла (имя-файла-буфера)) (setq file-name1 (имя файла-имя-имя файла)) (setq file-name-wihoutswv (replace-regexp-in-string "-swv \ .tex "".«Файл-name1)) ;; (SETQ cmd1-ул (CONCAT "statweave" файл-name1 "&" имя-файла-wihoutswv "&")) (SETQ cmd1-ул ( CONCAT "файл PDF & Evince statweave" -name1)) (SETQ cmd2-ул (CONCAT "Evince" имя-файла-wihoutswv "& ")) ;; (оболочка-команда cmd1-ул) (SETQ выходного буфера" swvoutput") (save-window-excursion (setq status (shell-command cmd1-str output-buffer)) ;; (статус сообщения) ;; (let (status) ((shell-command cmd1-str output-buffer))))) ))

Это выглядит ужасно, и я не эксперт по lisp, поэтому я уверен, что у него много неэффективности, но он работает.

0

Вы можете попробовать новый класс StatReport LateX, который немного похож на Sweave, но полностью реализован в LaTeX.

Workflow: Выполнить один раз и получить код SAS, беги этот код в SAS, запустите LATEX снова и получить выход включен.

Я думаю, что это цвет кода (с использованием класса SASnRdisplay), если я правильно помню.

Смотрите статью здесь: http://support.sas.com/resources/papers/proceedings12/324-2012.pdf И CTAN для документации пакета http://mirror.switch.ch/ftp/mirror/tex/macros/latex/contrib/statrep/statrep.pdf

0

Чтобы dicuss ответ Джины: Проблема, которую я всегда имел с ESS, что недостаточно функциональность поддерживается на Windows (где я бегу SAS).

Следовательно, Statweave не был мне полезен вообще.

В настоящее время существует версия SAS Linux, поэтому я думаю, что это может работать лучше.