3

LaTeX ファイル内から SAS コードを実行するために StatWeave を使用しています。テキスト エディターでファイルを開き、LaTeX 構文の強調表示を使用してメインの LaTeX ドキュメントを表示し、SAS 構文の強調表示を使用して埋め込まれた SAS「コード チャンク」を表示できるようにしたいと考えています。(「コード チャンク」は実際の (動作する) コードであり、表示用だけではないため、LaTeX リスト パッケージは機能しないと思います。) emacs でこれを行う方法があるに違いないと確信していますが、私はそうしません。それが何であるかわかりません... この時点で、私は任意のエディターを使用して任意のソリューションを受け入れることができます。

2010 年 2 月 5 日更新: 私は、StatWeave と SAS を使用するのをやめ、代わりに Sweave と R の使い方を学ぶことが最善の方法であると判断しました。Vim での Sweave の強調表示には満足していますが、 ESS には非常に満足しています。その回答を受け入れて、この質問を閉じることができます。

4

6 に答える 6

1

sas ファイルをコードに直接入れるのではなく、代わりに '\input' を使用するオプションはありますか? 私がソースの例でよく行うことの 1 つは、サンプルをサブディレクトリ samples/ に置き、「ハイライト」を使用して、メイン ファイルに含めることができる LaTeX ファイルを作成することです。そうすれば、ソース ファイルが変更されるたびに実行して、正しく動作するかどうかを確認できます。tex コードの (再) 生成は、シェル スクリプトによって、またはより大きなプロジェクトの場合は 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/

Web プロジェクト用。次に、メインのtexファイルに、次を使用してサンプルを含めます

\input{filename.css}
于 2009-07-19T19:00:29.200 に答える
1

おそらく、Emacs Wiki のMultipleModesページにある解決策の 1 つが役立つでしょう。また、Sweaveのマニュアルには、Emacs Speaks Statisticsは Sweave ファイルを処理できると書かれているので、StatWeave も同様のように見えるので、これらのファイルを処理するために ESS をハックすることもできるかもしれません。ESS はすでに SAS をサポートしているようなので、必要な変更はそれほど大きくないかもしれません。

于 2009-05-09T07:51:22.430 に答える
0

jean の回答について: 私が ESS でいつも抱えていた問題は、(私が SAS を実行している) Windows で十分な機能がサポートされていないことです。

その結果、Statweave は私にとってまったく役に立ちませんでした。

最近は SAS Linux バージョンがあるので、そのほうがうまくいくと思います。

于 2013-11-15T16:08:24.017 に答える
0

xemacs を使用している場合は、mmmmode を使用して構文を強調表示できます。私は Statweave で ESS を使用しているので、最初の人が ESS を使用して sybntax の強調表示を行い、statweave を使用して作業を行ってみませんか。ただし、私はSASを使用していませんが、同じファイルでstataとRを使用しており、どちらも独自の構文強調表示で機能します。(require 'mmm-mode) (require 'mmm-vars) (setq mmm-global-mode 'maybe) (setq mmm-submode-decoration-level 1)

(mmm-add-group 'latex-stats'((r-tag :submode r-mode :face mmm-code-submode-face :delimiter-mode nil :front "begin{Rcode}" :back "end{Rcode} " :back-offset (backward-char -1) :insert ((?R R-tag nil @ "\begin{Rcode}" @ "\n" _ "\n" @ "\end{Rcode}" @) ) ) (sta-tag :submode STA-mode :face mmm-code-submode-face :delimiter-mode nil :front "begin{Statacode}" :back "end{Statacode}" :back-offset (backward-char - 1) :insert ((?S STATA-tag nil @ "\begin{Statacode}" @ "\n" _ "\n" @ "\end{Statacode}" @)) )))

(リストに追加 'mmm-mode-ext-classes-alist'(nil "-swv.tex" latex-stats))

SASモードに変更するだけで(それが呼ばれていると思います)、latex.elファイル(init.elにラムダでロードされています)に次の(local-set-key [(コントロール f1)]
'(lambda () (interactive) (if (string-match "\.tex" buffer-file-name) (progn (let (file-name file-name1 file-name-wihoutswv) (setq ファイル名 (buffer- file-name)) (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 are in Latex-モードで、これは swv ファイルでも TeX ファイルでもありません。対応する tex ファイルまたは swave ファイルを開けません") )))

(global-set-key [f1]
'(lambda () (interactive) (save-buffer) (if (string-match "-swv\.tex" buffer-file-name)) (progn (interactive) (latex-mode) ) ;;(font-lock-fontify-buffer) (balance-windows) (mylatex-delete-indent) (save-buffer) (save-window-excursion (run-current-statweave-file)) ; (mylatex-clean ) ) (if (string-match "\.tex" buffer-file-name) (progn (interactive) (latex-mode) ;(font-lock-fontify-buffer) (バランスウィンドウ) (do-pdf) ; (mylatex-clean) ) (メッセージ「これは TeX ファイルでも SWV ファイルでもなく、バッファーをファイルに保存する以外に何をすべきかわかりません。だから私はそうしました」) )) )

)

) (save-window-excursion (setq status (shell-command cmd1-str output-buffer))) ;;(メッセージステータス) ;; (let (status) ((shell-command cmd1-str output-buffer))))) ))

見た目はひどいし、私はLispの専門家ではないので、非効率な点がたくさんあると確信していますが、うまくいきます。

于 2010-07-20T00:39:50.357 に答える
0

UltaEdit は機能するかもしれませんが、多くのセットアップを行う必要があります

于 2009-09-29T06:05:13.153 に答える
0

Sweave に少し似ていますが、完全に LaTeX で実装されている新しい StatReport LateX クラスを試すことができます。

ワークフロー: 1 回実行して 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

于 2013-11-15T16:04:07.267 に答える