裏 RjpWiki

文字通り,RjpWiki の裏を行きます
R プログラム コンピュータ・サイエンス 統計学

RStudio で日本語が使えなくなっていた

2018年09月30日 | ブログラミング

ご注意: 2021 年 2 月における R 4.0.4 での話ではありませんから。

RStudio Version 1.1.456 を立ち上げると,

During startup - Warning messages:
1: Setting LC_CTYPE failed, using "C"
2: Setting LC_COLLATE failed, using "C"
3: Setting LC_TIME failed, using "C"
4: Setting LC_MESSAGES failed, using "C"
5: Setting LC_MONETARY failed, using "C"

と出て,案の定,日本語を含むプログラムを読み込むと,文字化けしている。

もう,これは他のことで経験済みなので,慌てることなく

Sys.setlocale("LC_ALL", "ja_JP.UTF-8")

とやって,問題なし。

コメント

pythontex は,使えないな!

2018年09月04日 | RとLaTeX

pythontex は,望み薄かな?

実装が古いのと,日本語化の関連で,ちょっと面倒くさいというか無理っぽい。

 

やっぱ,R と Sweave の組み合わせが最強。

コメント

Pweave の入力と出力の区別

2018年09月04日 | RとLaTeX

そのまんまでは,入力と出力のフォーマットに全く違いがない。ので,まぎらわしい。

Sweave のようには行かず,インタラクティブモードのように,入力の前にプロンプトがつくようにはできないようだ。

そこで,LaTeX の listings を使う。

listings.sty と jlisting.sty を用意して,プリアンブルで以下を定義しておく。

\usepackage{listings,jlisting}
\lstset{%
  basicstyle={\ttfamily\normalsize},%
  frame={tbrl},
  numbers=left,%
  xleftmargin=3zw,%
  lineskip=-0.5ex%
}

これだけではだめで,

/usr/local/lib/python3.6/site-packages/pweave/formatters/tex.py

の,initformat の赤字部分を以下のように変更する。

    def initformat(self):
        self.formatdict = dict(codestart='\\begin{lstlisting}',
                               codeend='\\end{lstlisting}',
                               outputstart='\\begin{quote}\n\\begin{verbatim}',
                               outputend='\\end{verbatim}\n\\end{quote}',
                               figfmt='.pdf',
                               width='\\linewidth',
                               doctype='tex')

これで

<<>>=
x = 2
y = 4
print(x-y)
@

が,

のようなイメージで表示される。

すなわち,プログラム〔入力〕が行番号付きで,出力は行番号なしで出力される。

\color{} を使って,入力と出力を分けることもできるけど,色を使うのは避けたい。

コメント

Pweave のコードチャンク・オプション

2018年09月04日 | RとLaTeX
  • ネームなしのオプションは name または label
    すなわち,以下の 3 つ,name="aaa", label="aaa", aaa は同じもので,チャンクの名前を定義する
  • echo=True or (False)
    コードチャンクのエコー出力をするかどうか
  • evaluate=True or (False)
    コードチャンクを評価するかどうか
  • results="verbatim" or ("hidden")
    結果をテキスト出力("verbatim"),出力しない("hidden")
    "tex", "rst" は未実装?
  • term=False or (True)
    False のときは,結果はまとめて出力される
    True のときは,結果はその都度出力される
  • include=True or (False)
    True のときは,生成される図は自動的に文書に挿入される
    False のときは,図は生成されるが文書には挿入されない
  • fig=True or (False)
    True のときは,matplotlib plot で生成される図をファイルに書き出す
    このファイルは \includegraphics で文書に挿入できる
    figure 環境の caption は次の caption オプションで定義する
  • caption=""
    fig オプションと一緒に使い,figure 環境の caption を定義する
  • width
    文書に挿入される図の大きさ(任意の単位: cm, pt, linewidth など)
  • f_size=(8,6)
    保存される matplotlib の図の大きさ(単位はインチ)
    横幅,縦軸をタプルで指定
  • f_spines=True
    False のときは,matplot の図の右,上の spine を取り除く
  • f_env
    図の環境を追加する
  • f_pos="htbp"
    figure 環境の図の位置を指定する
  • wrap=True or (False, "code", "results")
    True ならば,長い行は 75 文字で折り返す
    "code","results" は指定されたものだけを折り返す
  • complete=True or (False)
  • source=ファイル名または Python モジュール・ファイル
    入力ソースをファイルやモジュール・ファイルにする

コメント

pythontex というのがあった

2018年09月01日 | ブログラミング

TeXShop の engines フォルダを見たら,pythontex というのがあった。

ちょっと,調べてみる。

なんとなれば,Psweave は 入力に対する出力はまとめられてしまうからなあ。

そのほかの不都合は前述の通り。

 

コメント

Pweave の TeXShop engine

2018年09月01日 | RとLaTeX

Sweave engine の最初の部分だけを以下のように変更して使う。

mp = function(file, makeindex=FALSE, silent=FALSE, deletePdfs=FALSE, deleteWorkfiles=FALSE, ...) {
  Sys.setlocale("LC_ALL", "ja_JP.UTF-8")
  if (grepl("\\.", file) == FALSE) {
    file = paste(file, "Rnw", sep=".")
  }
  cat("Input file:", file, "\n")
  cmd = sprintf("pweave -f tex %s", file)
  system(cmd)
  base = sub(".Rnw", "", file)
  :

 

コメント

Pweave --- Sweave for python

2018年09月01日 | RとLaTeX

R のための Sweave と同じような感じで,python のための Pweave(http://mpastell.com/pweave/) を使ってみる。

以下で,全角の <,> は,実際は半角で

TeXShop を使って,*.Pnw --> *.tex ---> *.pdf の操作を行うにあたって,大問題がある。

それは,TeXShop は .Pnw などという拡張子を認識しないということである(.Rnw は認識するのに)。

仕方ないから,.Rnw を流用することにするが,何とかならないか?

● チャンクの記述法

もう一つの問題点。

コマンドラインでは ```pythpn 〜 ``` が有効で,<<>>= 〜 @ はだめ。

TeXShop では全く逆。```pythpn 〜 ``` がだめで,<<>>= 〜 @ が有効。


次の 3 つの例は,だめ。

(1)

```python
a = 12
b = 34
print(a+b)
```

(2)

オプションを定義することもできる

```python, echo=False
a = 12
b = 34
print(a+b)
```

図を挿入する方法

```python
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi)
plt.plot(x, np.sin(x))
```

\bigskip

次の 2 つの例は有効。

<<fig = True, width = '12 cm', echo = True>>=
from pylab import *
plot(arange(10))
show()
@

<<>>=
x = 2
y = 4
print(x-y)
@


● インラインコード

コードをその場で評価する sqrt(8)= <% np.sqrt(8) %>
            8 の平方根を,この後へ挿入 sqrt(8)=2.8284271247461903


式を評価した結果を出力する sqrt(8)=<%= np.sqrt(8) %>
            8 の平方根を,この後へ挿入 sqrt(8)=2.8284271247461903

違いはないようにみえるのだが?

コメント