裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

LaTeX で \item の記号を変更する

2024年10月03日 | RとLaTeX

LaTeX で \item の記号を変更するには、enumitem パッケージを使用するのが便利です。以下のように設定することで、リスト内の記号をカスタマイズできます。

label オプションに任意の記号を指定できます。例えば、$\star$ 以外にも $\bullet$-- などを使って、リストの記号をカスタマイズできます。

\usepackage{enumitem}

\begin{document}

\begin{itemize}[label=$\star$]  % ここで記号をカスタマイズ
    \item 項目1
    \item 項目2
\end{itemize}

\end{document}

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

pythontex は,使えないな!

2018年09月04日 | RとLaTeX

pythontex は,望み薄かな?

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

 

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

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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{} を使って,入力と出力を分けることもできるけど,色を使うのは避けたい。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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 モジュール・ファイル
    入力ソースをファイルやモジュール・ファイルにする

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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)
  :

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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

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

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

TeXShop で Sweave

2018年08月20日 | RとLaTeX

TeXShop で用意されている engine に Sweave 用のものがないので,作ってみた。

基本的には,以下のようであるが,肝は Sweave 関数の前に,Sys.setlocale("LC_ALL", "ja_JP.UTF-8") を置くこと。これがないと locale が "C" になっているので,日本語が正しく処理されない。

このファイルを Sweave.engine と名付けて,Engines フォルダに放り込んでおく。選択肢に "Sweave" が加わる。

#!/usr/local/bin/Rscript --vanilla --default-packages=methods,datasets,utils,grDevices,graphics,stats
file = sub("\\.Rnw", "", commandArgs(TRUE)[1])
Sys.setlocale("LC_ALL", "ja_JP.UTF-8")
Sweave(file, encoding="utf-8")
system(sprintf("/Library/TeX/texbin/uplatex %s.tex", file))
system(sprintf("/Library/TeX/texbin/dvipdfmx %s.dvi", file))

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave.sty

2018年07月29日 | RとLaTeX

Sweave で,

<<>>==
ans <- lm(Petal.Length ~ ., data=iris)
logLik(ans)
@

のようなチャンクを含む *.Rnw を

Sweave ==> uplatex ==> dvipdfmx すると,*.dvi ファイルを *.pdf ファイルにする際に

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 tcrm1000
mktexpk: Cannot find mktex.opt; check your installation.
kpathsea: Appending font creation commands to missfont.log.

dvipdfmx:warning: Could not locate a virtual/physical font for TFM "tcrm1000".
dvipdfmx:warning: >> There are no valid font mapping entry for this font.
dvipdfmx:warning: >> Font file name "tcrm1000" was assumed but failed to locate that font.
dvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...

Output file removed.

なるエラーメッセージを吐いてとまってしまう。

R コンソールでは,直前のエラーメッセージが赤字で目立つのだが,その前に本当のエラーが暗示されている。

LaTeX Font Warning: Font shape `TS1/aett/m/n' undefined
(Font)              using `TS1/cmr/m/n' instead
(Font)              for symbol `textquotesingle' on input line 31.

ドツボにはまっていたのだが,`textquotesingle' だの,aett だのと書かれているのがポイント。

確かに,件のチャンクの出力は,

'log Lik.' -9.283269 (df=7)

と,シングルクオートを含む。さらに,そういえば Sweave.sty で ae が悪さをすることがあるというのを思い出した。

Sweave.sty の 8 行目,

\setboolean{Sweave@ae}{true}

\setboolean{Sweave@ae}{false}

にすることで,問題解決...したのかな?



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pumpkin Helmet

2014年10月07日 | RとLaTeX

R の次のバージョンのコードネームは Pumpkin Helmet だそうだ。

いつものように,Snoopy と Charlie Brown ゆかりのもの。

http://dvd.netflix.com/Movie/You-re-a-Good-Sport-Charlie-Brown/70111491

最初の絵の説明中には,以前のコードネーム Good Sport(R 3.0.1) や Masked Marvel(R 3.0.0) も出ている。

http://en.wikipedia.org/wiki/You%27re_a_Good_Sport,_Charlie_Brown も参照。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-13

2011年12月15日 | RとLaTeX

Sweave-12 で書いた ae フォントを使うかどうかの件

やはり,困るという人もいるようで,マニュアルにちゃんと記載がある。

‘Sweave.sty’ also supports the [noae] option, which suppresses the use of the ae package, the use of which may interfere with certain encoding and typeface selections. If you have problems in the rendering of certain character sets, try this option.

マニュアル,ちゃんと読め > オレ

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-12

2011年12月07日 | RとLaTeX

Sweave で作った pdf と,LaTeX だけで作った pdf を比べて,前者と後者のフォントの大きさ(当然ながら,版面の大きさとか行当たりの文字数など)が異なることに気づいた。
LaTeX のソースに \usepackage{Sweave} を加えるだけで,変になることがわかった。

消去法で突き止めた原因は,Sweave.sty にある
\newboolean{Sweave@ae}
\setboolean{Sweave@ae}{true}
が元凶のようだ。このようになっていると
\RequirePackage[T1]{fontenc} というfontを使うようになるようだ。そこで,
\setboolean{Sweave@ae}{false}
とすると,おかしなことはなくなった。

もっとも,そのほうがいいか,元のままがいいかは,個人の好みなんだろうなあ。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-11

2011年10月17日 | RとLaTeX

\include に対応するものはないけど \input に対しては,\SweaveInput がある。

\includeonly ができないのだけど,やむを得ない。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-10

2011年10月14日 | RとLaTeX

xtable と print.xtable の組み合わせで表を書くというのも,長ったらしいオプションであるとか,標準と違うデフォルトとかいうことで,これもまたラッパー関数を書くしかないかなと言うことで以下のようなものを作る。

ytable <- function(x, caption, label, align=NULL, digits=NULL, display=NULL,
                         table.placement="htbp", caption.placement="top",
                         math.style.negative=TRUE )
{
    library(xtable)
    xtable:::print.xtable(xtable(x, caption=caption, label=label, align=align, digits=digits, display=display),
                         table.placement=table.placement, caption.placement=caption.placement,
                         math.style.negative=math.style.negative)
}

.Rnw で

ytable(iris[1:10,], "iris data", "sss")

とか

x <- 1:10
y <- rnorm(10)
ytable(lm(y~x), caption="aaaaa", label="qqq")

caption と label は必須。もし,print.xtable の引数でデフォルトにしたいあるいはデフォルト値を変えたいものがあれば,この関数で定義しておく。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-9

2011年10月14日 | RとLaTeX

図をフロートにする方法はSweave-3 に書いたが,\begin{figure} から始まる一連の指示を毎回書くのは面倒くさい。

表は xtable でそのままフロートになるのだから xtable のような関数を書いてやればよい。

xfigure <- function(fn, caption, label, location="htbp")
{
    cat(sprintf("\\begin{figure}[%s]\n", location))
    cat("\t\\centering\n")
    cat(sprintf("\t\\includegraphics{%s}\n", sub(".(pdf|PDF)", "", fn)))
    cat(sprintf("\t\\caption{%s}\n", caption))
    cat(sprintf("\t\\label{%s}\n", label))
    cat("\\end{figure}\n")
}

これを .Rnw で以下のように使う。

<<results=tex, echo=false>>=
fn <- "test.pdf"
pdf(fn, width=3, height=2, onefile=FALSE)
hist(rnorm(10000))
invisible(dev.off()) # invisible にするか,結果を何かに代入するかしないと余計な文字列が出力される
xfigure(fn, "ヒストグラム", "lab1")
@

毎回 invisible(dev.off()) と書くのが面倒なら,dev.off2 <- function invisible(dev.off()) とでもしておく。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sweave-8

2011年10月13日 | RとLaTeX

fig=TRUE を使うとき,悪さをする ctable.sty を使わないことを前提として,余計な処理をしないラッパー関数。エンコーディングも euc-jp であると決める。

ms <- function(file)
{
    Sweave(file, encoding="euc-jp")
    file <- sub(".(R|S)nw", ".tex", file)
    repeat {
        system(sprintf("/Applications/UpTeX.app/teTeX/bin/platex -kanji=euc %s", file))
        con <- file(sub(".tex", ".log", file), open="r", encoding="euc-jp")
        log <- readLines(con)
        close(con)
        if (sum(grepl("Rerun to get", log)) == 0) break
    }
    system(sprintf("/Applications/UpTeX.app/teTeX/bin/dvipdfmx %s", sub(".tex", ".dvi", file)))
}

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村