7

私は GNU/Linux ディストリビューション (該当する場合は Arch)、Emacs v23.2.1、ESS v5.9、AucTeX v11.86 を使用しています。

.Rnwファイルを認識するようにAucTeXをセットアップしたいので、.RnwファイルでLaTeXを実行し、 .dviファイルを自動的に取得できます。.emacs ファイルを編集することでかなり扱いやすいと思いますが、まだElispをしっかりと把握していません。C-c C-c

さらに別の問題は非常に厄介です-どういうわけか、LaTeXはプリアンブルで認識\usepackage{Sweave}しないため、実際にはSweave.styファイル(私の場合は にあります)を.Rnwファイルがある/usr/share/R/texmf/Sweave.styディレクトリにコピーする必要があります(そして、これは、Windows プラットフォームでよくあるバグです!)

私の質問は、次の 2 つの問題に要約されます。

  • LaTeXを認識させる方法(毎回「ホーム」フォルダー\usepackage{Sweave}にコピーせずに)[編集:なんとかこれを行うことができました。Dirkの回答後のコメントを参照してください]Sweave.sty
  • AucTeXをセットアップして.Rnwファイルを.dviにコンパイルする方法
4

2 に答える 2

6

それは2つの異なる質問です。

$RHOME/share/texmf/最初のものについて、私の Debian R パッケージは、ディレクトリから TeX ファイル システム ツリーへのソフト リンクがあることを確認します/usr/share/texmf/tex/latex/R

2 番目の質問: わかりません。すべての編集は Emacs で行っていますが、私は何年も前に作成した小さなシェル スクリプトを介して Sweave を実行する傾向があります。

編集、数か月後: AucTeX ではなく ESS を使用します。次にM-n s(つまり、Alt-n に続いて s)、Sweave ステップをM-n P実行し、必要に応じて Bibtex を呼び出して LaTeX コンパイルを実行します。

于 2010-05-31T00:04:32.850 に答える
5

簡潔で効率的なグーグル検索の後、このリンクを見つけました。一見、すべて問題ないように見えますが、Sweaving 後に pdf ファイルが文字化けしてしまいます...だから、この問題に別の方法で取り組みましここで入手可能な Dirk の Sweave bash スクリプトからエラー チェック機能を恥知らずに盗みました。基本的に、これは回避策です。.RnwファイルでR CMD Sweave実行されるため、 latexが入り、その後pdflatexが...

私のために仕事をするbashスクリプトを投稿します。私は高度な bash プログラマーではないことを述べなければなりません。さらに、職業上のプログラマーでさえないため、このスクリプトを適切に最適化/作成できる可能性は十分にあります。ここに行きます:

#!/bin/bash

FILEBASE=${1%.*}
FILEXT=${1##*.}
FILEPATH=${1%/*}

TEXFILE=$FILEBASE.tex
PDFFILE=$FILEBASE.pdf

# errorexit

function errorexit () {
    echo "Error: $1"
    exit 1
}

# check if file exists
if [ ! -f $1 ]; then
    errorexit "File $1 not found!"
else
# check for filename length
    if [ ${#1} -lt 1 ]; then
    errorexit "Need to specify argument file!"
    else
    # if filelength OK, check extension
    if [ $FILEXT != "Rnw" ]; then
        errorexit "You must pass Sweave (.Rnw) file!"
        # finally, run Sweave
    else
        cd $FILEPATH && R CMD Sweave $1
        # latex $TEXFILE
        pdflatex $TEXFILE
        # xdg-open $PDFFILE
    fi
    fi
fi

次に、このスクリプトを任意のフォルダーに保存/コピー/移動し(echo $PATH/usr/bin/場合は.

(global-set-key (kbd "C-c s")
        (lambda ()
          (interactive)
          (shell-command (concat "sweave " buffer-file-name))))

もちろん、必要に応じてキーバインディングを変更することもできます。また、スクリプト名を に配置して、sweave/usr/bin/を必ず変更してください。

これは答えではなく、回避策であることに注意してください。AucTeX/ESS/Sweave の統合に対処する方法を見つけた場合は、投稿してください。チェックマークを付けます。

この回避策の前に、M-n sSweaveを実行する必要がありました。その後C-c C-c、LaTeX ファイルのコンパイル用に AucTeX でデフォルトのキーバインドが行われました。生成されたファイルが間違っているので、bash で試してみる必要がありました。それは私にとってはうまくいきます。何か提案があれば教えてください。

よろしく、
aL3xa

編集:
挿入cd $FILEPATH

于 2010-05-31T22:03:17.957 に答える