windows の LyX で otf

前回, TeXworks で otf パッケージの使い方を説明した.

LyXの場合, pdfplatex_msmingoth.bat の中身を参考にして, 次のような設定したらうまくいった.

スクリーンショット 2013-11-14 00.21.56

これで埋め込みフォントが使える. 別のフォントにしたければ, それに対応したバッチファイルをもとに変更すればよい. pdfplatex_yu.bat があるので, Windows 8 で, おそらく, 游フォントが埋め込めるのだろう.

windows で otf

platex にotf パッケージがある. 宮「﨑」あおいや内田百「閒」など, 第二水準にない漢字もPDFにうめこんでくれるパッケージである. mac ではヒラギノが埋め込まれて, 実行してくれる. windows では, 以下を参考してもうまく導入できなかった.
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?OTF

mac にあるヒラギノを移植しようとも考えたが, 最近, w32tex をあべのりインストーラーでインストールして, 実行ファイルのフォルダ (c:\w32tex\bin) をながめると, pdfplatex_msmingoth.bat となるものをみつけた. TeXworks において, これを  pdfplatex 実行ファイルに指定すれば, 簡単にMS明朝とMSゴシックを埋め込んでくれた. ほかにもpdfplatex_yu.bat があるので, 游フォントもうまくいくのだろう. わたしはまだwindows 8.1 を入れていないので確かめていない.

スクリーンショット 2013-11-12 13.27.56

なお,  xelatex では, otfを導入しなくても, 普通に入力できる.

LyX で Sweave 出力

前回、RstudioでSweave出力の方法を説明した。LyXも同様に、実行する。 どうように英語の場合と日本語使用の場合にわけて解説する。

英語のみ

英語のみの場合、lyxのみでpdfを直接つくることが可能である。 「文書=>モジュール」で「Sweave」を追加する。 注意することはpdflatexを使用するので、「文書=>文書クラス」で「article」にして、グラフィックドライバを「規定値」にする必要がある。

Screenshot_from_2013-06-18 21:59:57

そしてRコードの導入方法であるが、例えば、「挿入=>Texコード」で

<<>>=
1+1
x <- runif(7)
x
@

などと入力すると、Rコードで1+1の演算結果と、一様分布にしたがう乱数を7つ作り出す。 値の平均値を計算するには、

The mean of  $x$ is

と入力して、「挿入=>任意設定差込枠=>S/R表現」として、

mean(x)

とすればよい。

こうして作ったファイルを通常のLyXファイルと同じように「PDF (pdflatex)」を出力か表示させることができる。

ただ、LyXからの出力の場合、うまくコマンドが正しく入力されなければ、上手く出力されない。RStudio のときのように、Sweaveファイルを作成しながら、このコマンドが正しいのかを実行することは難しい。確かめたい場合、「ファイル=>書き出し=>Sweave」として、RStudioで読みこめばよい。もしLyXで修正をして再度書きだした際に、Rstudioでタブを切り替え直せば、ファイルを再度開くことなく、ファイルが更新させる。

日本語使用

一方、日本語の場合、直接LyXから出力することは現状、難しい。どうしてもpdflatexを実行するようである。そこでtexファイルを出力して、auctexやtexworkからPDFを出力するようにする。もちろん、「文書=>設定=>モジュール」で「Sweave」を追加する。また、「文書=>設定=>文書クラス」で「article (Japanese New)」にして、グラフィックドライバを「DVIPDFMx」にする必要がある。また「文書=>設定=>LaTeXプリアンブル」に

\usepackage{mediabb}

をつけくわえる。

そして、「ファイル=>書き出し=>LaTeX (plain)」として、texファイルを出力する。それをTexworksで開いてコンパイルすればよい。

もちろん、英語の時のと同様に、「ファイル=>書き出し=>Sweave」として、RStudioで読みこむ。コンソール画面上で、

> Sweave("sweave0", encoding="utf8")

と入力して、texファイルを生成すればよい。

Screenshot_from_2013-06-18 22:56:29

DvorakJ と Happy Hacking Keyboard

Dvorak 配列というのがある。キー入力を快適にするために配列されたようだが、昔、挑戦して、挫折。なぜなら、Emacsのキーバインドのコントロールキーの組み合わせと相性が悪いからである。

このDvorakをエミュレートしてくれるソフトがDvorakJである。
http://blechmusik.xii.jp/dvorakj/

このソフト、Dvorak 配列のエミュレートでなく、スペースキーをシフトキーのように用いる「SandS」が可能となる。この機能はSKKを用いているのならかなり重宝するはず。なお英語キーボードを使っている場合はもう一つチェックする必要がある。

dvorakJ-1

さらに、Happy Hacking Keyboard のためにある機能は、左右のWinキーの設定である。WindowsでHHKBを使うと、コマンドキーは左右のWindowsキーとなる。Winキーが左右にあるのはどうも無駄で、Altと切り替えるひとも多い。このDvorakJは左右Winキーの設定が可能になる。わたしは、右のWinキーを漢字変換の切り替えに使っている。こうすると、MacでKeyRemap4MacBookで左右のコマンドキーを変換無変換のように扱うことができる。

dvorakJ

なお、英語キーボードなので、ASCII配列版に変更しておく必要がある。

dvorakJ-3

こうした設定をUSBキーになど持ち込んで起動することによって、他のパソコンでも設定もこのように使えるはずである。

Gnupack の Emacs に ESS

ESS は Emacs Speaks Statistics の略である。つまり、Rなどの統計環境をEmacsから操作することが可能になる。
現在、RStudio という非常に良くできたRの統合開発環境があるので、初心者はそちらのほういいかもしれないが、Emacsのキーバインド使い続けたいひとは、是非導入すればよい。

すでにRが導入されているとする。ヴァージョン3.0.1で64ビット版のバイナリをインストールしているとする。

Gnupack をルートに導入しているのなら、C:\gnupack_basic-11.00のconfig.iniに

PATH = %PATH%;C:/Program Files (x86)/Aspell/bin

これでGnupackのEmacsから実行できるようになる。ただCygwin上で実施する際には単に「R」でなく、

R --vanilla

とする必要がある。

ELPAにあるの「list-packages」で「ESS」を選んで導入する。「~/.emacs.s/init.el」には次を記入しておく。

(setq inferior-R-args "--vanilla")
(require 'ess-site)

終了時に、コマンドから「q()」と打つだけエラーメッセージがでる。本質的な影響はないと考えられるが、気持ちが悪いのなら、「C-c C-q」で終わるようにする。

ESSの使い方は、本家のドキュメンテーション
http://ess.r-project.org/index.php?Section=documentation&subSection=manuals
を読むか、日本語なら
http://www.okada.jp.org/RWiki/?ESS
http://d.hatena.ne.jp/a_bicky/20120415/1334490586
http://d.hatena.ne.jp/a_bicky/20120422/1335086814
などを読む。ところどころ古い記事がある。

また、ELPAで「autocomplete.el」を導入済みなら、Rstudioと同様に単語補完が可能になる。さらにstr()やsummary()の内容をポップアップするためには、ELPAから 「ess-R-object-popup.el」 を導入して、「~/.emacs.s/init.el」に

(require 'ess-R-object-popup)
(define-key ess-mode-map "\C-c\C-g" 'ess-R-object-popup)

を書き加える。また、Rstudioとおなじようなオブジェクトをみるのには、内蔵のRdiredだけでなく、「ess-R-data-view.el」も使える。後者はELPAから導入すればよい。
特にinit.elに付け加えることはないが、使い方は
http://sheephead.homelinux.org/2013/05/10/7019/
を参考にすればよい。

すでに「auctex」を導入済みなら、

;; Linking ESS with AucTex
(add-hook 'Rnw-mode-hook
(lambda ()
(add-to-list 'TeX-command-list
'("Sweave" "R CMD Sweave %s --encoding=UTF-8"
TeX-run-command nil t :help "Run Sweave") t)
(setq TeX-command-default "Sweave")))

を「~/.emacs.s/init.el」に付け加えておく。

なおRstudioはSweaveが内蔵のpdflatexを使うため、日本語に対応していない。もしかしたら「Xelatex」でやる方法があるのかもしれないが、私はしらない。EmacsのESSとAuctexを併用して使えば、日本語でのSweaveが可能になる。やり方はまた別の機会に紹介する。

Gnupack の Emacs に Auctex

Gnupack の Emacs上でlatexを操作できるようにする。以前に紹介したように、auctexが主流である。

すでに、w32texを導入済みとする。

w32texは、パスや環境変数などを自分で行う必要がない。さらにtexworksも導入してくれる。付け加えたのは、以前、

sputnik と texlive2012

で、UbuntuやMacでの設定を説明したが、texmf.cnf を編集して、Dropbox に styファイルやbibファイルなどをおいて共有するようにする。「extractbb」などは既に導入されているので、パスの設定だけする。texmf.cnfはデフォルト通り導入していれば、”c:\w32tex\share\texmf-dist\web2c” にあるはずである。

Gnupack をルートに導入しているのなら、C:\gnupack_basic-11.00のconfig.iniに

    PATH           = %PATH%;C:\w32tex\bin;C:\w32tex\dviout

これでGnupackのEmacsから実行できるようになる。

Emacs24以上なら「M-x list-packages」が使えるようであるので、これで「auctex」を導入すれば良い。
導入の際に気がついたのだが、「auctex-latexmk」というパッケージも見つけたのでこれも一緒にダウンロードする。
設定のために

http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?AUCTeX#w81a725c

を参考にしてみたが、結構、いい加減である。

GnupackでEmacsを導入すると言っているのに、設定ファイルの前に「W32TeX の場合は latexmk の実行には Strawberry Perl が必要です」と書いてある。GnupackのCygwinでPerlは導入されるので、latexmkは Strawberry Perl がなくても利用可能である。さらに設定ファイルのなかで、

(setq TeX-view-program-list '(("TeXworks" "texworks %o")
                              ("SumatraPDF" "start SumatraPDF -reuse-instance %o -forward-search \"%b\" %n")
                              ("fwdsumatrapdf" "fwdsumatrapdf %o \"%b\" %n")
                              ("Firefox" "start firefox -new-window %o")
                              ("Chrome" "powershell -Command \"\"")
                              ("pdfopen" "pdfopen --rxi --file %o")))

と「start」がSumatraPDFやFirefoxで使われているが、

http://www.snowelm.com/~t/doc/tips/20020114.ja.html

にあるように、CygwinつまりGnupackからは「start」は使えない。

そうしたことを鑑みて、新しいパッケージを全面的につかった、私の設定を以下に書きます。

まず、「~/.latexmkrc」に

# .latexmkrc starts
$kanji  = "-kanji=$ENV{\"LATEXENC\"}" if defined $ENV{"LATEXENC"};
= "platex -interaction=nonstopmode kanji";
$bibtex = 'pbibtex $kanji';
$dvipdf = 'perl -e "exec(\'dvipdfmx\', \$ARGV[0])"';
# .latexmkrc ends

とする。一部文字化けしているので画像では
WS000004
となります。

そして、「~/.emacs.d/init.el」に

;; auctex
(setq TeX-default-mode 'japanese-latex-mode)
(setq japanese-LaTeX-command-default "LatexMk")
(setq japanese-LaTeX-default-style "jsarticle")

(setq TeX-view-program-list '(("TeXworks" "texworks %o")
                              ("SumatraPDF" "cygstart SumatraPDF -reuse-instance %o -forward-search \"%b\" %n")
                              ("pdfopen" "pdfopen --rxi --file %o")))
(setq TeX-view-program-selection '((output-pdf "SumatraPDF")))
(setq preview-image-type 'dvipng)
(setq TeX-source-correlate-method 'synctex)
(setq TeX-source-correlate-start-server t)
(add-hook 'LaTeX-mode-hook 'TeX-source-correlate-mode)
(add-hook 'LaTeX-mode-hook 'TeX-PDF-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
;; latexmk
(require 'auctex-latexmk)
(auctex-latexmk-setup)
;; auto-revert
(add-hook 'latex-mode-hook 'auto-revert-mode)
(add-hook 'LaTeX-mode-hook 'auto-revert-mode)

とします。

http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?AUCTeX#w81a725c

との主な違いは、「Tex-Command-List」を一切使わず、「start」となっているのを「cygstart」に変えたのと、パッケージから導入した「auctex-latexmk」を呼び出すようにしていることである。あと、最後の「auto-revert」は、ファイルが更新されると開いているバッファも自動的に更新されるようになるモードである。これはあとで「org-export」や「Sweave」のExportの際に非常に便利になる。

使い方は「C-c C-c LatexMk」でコンパイル。「C-c C-c View」でPDF表示。現状は「SumatraPDF」をビューアーにつかっている。Acrobat Readerだと、ファイルを開いたまま更新してくれない。

このやり方は「Mac」や「Ubuntu」でも同様に有効であろう。

Gnupack の Emacs に lookup.el

以前、emacs の lookup.el の導入で、

mac の emacs に lookup.el

ubuntu の emacs に lookup.el

と紹介してきた。

Gnupack の Emacs にも導入したので、紹介する。
1) eblookの導入
Kazuhiro’s blog (http://ikazuhiro.s206.xrea.com/) に行き、Win64用のバイナリ(現時点では、eblook-1.6.1+media-20110801-ebu-4.4.3-20110801-win64.exe )を入手。名前を「eblook.exe」に変更して適当な実行フォルダ(ここではc:\app)に移動。
Gnupack をルートに導入しているのなら、C:\gnupack_basic-11.00のconfig.iniに

PATH           = %PATH%;C:\app

これでGnupackのEmacsから実行できるようになる。

2) lookupの導入。
Kazuhiro’s blog (http://ikazuhiro.s206.xrea.com/) に行き、「lookup-1.4+media-20121129.tar.gz」を入手する。解凍して、Cygwinを起動させ、解凍したフォルダに移動して、ターミナル上で

emacs -batch -l install.el 'c:/Users/miyazakikenji/.emacs.d/lisp/lookup' 'c:/Users/miyazakikenji/.emacs.d/info'

とする。ユーザー名はここでは「miyazakikenji」だが自分のに変更する必要がある。新たにフォルダが作られることを許可して、実行。これで、ホームディレクトリに導入される。

3) すでに、「c:\Users\miyazakikenji\dict」にepwing形式の辞書が導入されているとして、「c:\Users\miyazakikenji\.emacs.d\init.el」に次のように書く。

(add-to-list 'load-path "~/.emacs.d/lisp/lookup")
(setq lookup-enable-splash nil)
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)
(global-set-key (kbd "C-x l") 'lookup-pattern)
(global-set-key (kbd "C-x C-l") 'lookup-region)
(setq lookup-default-dictionary-options
'((:stemmer . stem-english)))
(setq lookup-use-kakasi nil)

(setq lookup-search-agents '(
(ndeb "~/dict/Cobuild1")
(ndeb "~/dict/Longman4")
(ndeb "~/dict/OALD8")
(ndeb "~/dict/経済・金融英和実用辞典")
(ndeb "~/dict/経済・金融和英実用辞典")
(ndeb "~/dict/有斐閣 経済学辞典")
(ndeb "~/dict/三省堂 新明解国語辞典 第五版")
))

とする。前と違ってキーバインドを「C-x l」と「C-x C-l」に変更している。これでEmacs上で辞書引きが可能になる。

4) せっかくなのでlookup.el の info ファイルを読めるようにする。「c:\Users\miyazakikenji\inifo\dir」を開いて「GNU Emacs Lisp」のセクションに

* lookup: (lookup).     Lookup, a Search Interface.
* lookup-guide: (lookup-guide).	The Lookup User's guide.

を付け加えておく。先にSKKを導入していればこのファイルは生成されれているはずである。

スクリーンショット (16)

Gnupack の Emacs に SKK

以前に

emacs に skk パート1

emacs に skk パート2

で、Ubuntuでの導入方法を紹介した。
今回は、Gnupack の Emacs にもSKK を導入する。
同じようにファイルを

http://openlab.ring.gr.jp/skk/maintrunk/

から入手し、解凍する。ここではたとえば
「C:\Users\kenjimyzk\Downloads\ddskk-15.1」に解凍されたとする。

さらに、

http://www.ring.gr.jp/archives/elisp/skk/dic/

から「SKK-JISYO.L.gz」を入手し、これも解凍して、辞書フォルダ(C:\Users\miyazakikenji\Downloads\ddskk-15.1\dic)に移動させておく。

「SKK-CFG」ファイルの最後に

;;; SKK-CFG ends here
(setq SKK_DATADIR "c:/Users/miyazakikenji/.emacs.d/etc/skk")
(setq SKK_INFODIR "c:/Users/miyazakikenji/.emacs.d/info")
(setq SKK_LISPDIR "c:/Users/miyazakikenji/.emacs.d/lisp/skk")
(setq SKK_SET_JISYO t)

を加える。

「makeit.bat」ファイルの104行あたりに

set PREFIX=
set EMACS=C:\gnupack_basic-11.00\app\emacs\emacs\bin\emacs.exe
set LISPDIR=
set DEFAULT_MAKE_ARG=

とする。なお

set EMACS=C:\gnupack_basic-11.00\emacs.exe

ではうまくいかない。

「C:\Users\miyazakikenji\Downloads\ddskk-15.1」でコマンドプロンプトを開いて、

makeit what-where

を入力し、移動先等が正しく指定されていることを確認して、

makeit install

を実行する。

あとは以前のように設定すれば良い。

Gnupack の Emacs で スペルチェック

以前、

emacsでスペルチェック

でスペルチェックのことを話したが、Windows の Gnupack の Emacs で導入するには一工夫必要である。

まず、

http://aspell.net/win32/

より、Aspell を英語辞書とともに入手する。次に、Gnupackをインストールしたフォルダを開いたところにある「config.ini」を開き、

PATH           = %PATH%;C:/Program Files (x86)/Aspell/bin

を付け加える。Surface は64ビットOSなので、上記にインストールされているが、そうでなければ (x86)はない。

そうして、「~/.emacs.d/init.el」に次を入力する。

;; Aspell
(setq-default ispell-program-name "aspell")
(eval-after-load "ispell"
 '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))
;;
(global-set-key (kbd "C-M-$") 'ispell-complete-word)

これで、「M-$」で該当単語のスペル確認と、「M-x ispell-buffer」でバッファ全体のスペルチェックが可能になる。

しかしながら、「C-M-$」で単語補完はエラーになる。このエラーは

http://www.an.econ.kobe-u.ac.jp/~namba/meadow/setup_08.html

に書いてあるように、Cygwin上に「/usr/dict/wrods」がないからである。わたしは自分のUbuntuからwordsファイルをもって来た。Ubuntuを持っていないひとは、上のサイトにリンク先があり、そこから取ってくればよい。置き先は、Gnupackを「C:\」にインストールしたなら、「C:\gnupack_basic-11.00\app\cygwin\cygwin\usr」でdictというフォルダをつくって、wordsを置けばよい。

あと、以前にも書いたが、、日本語まじりの英文をスペルチェックをするためには、「~/.aspell.conf」というファイルを作って、そこに

lang en_US

と一行だけ書き込む必要がある。

「M-x flyspell-mode」と打てば、Microsoft Wordのように、画面上にミススペルが映し出される。

Surface に Gnupackを導入

以前、

Surface Pro で導入したアプリを列挙したが、そこでGnupackでの私の環境を紹介する。

まず、Gnupackは、アーカイブ解凍でCygwinとEmacsやGvimが使える環境のソフトで
http://gnupack.sourceforge.jp/docs/latest/UsersGuide.html
にある。あまりにも手軽さなため重宝している。

今年の1月にバージョン11が公開され、そのemacsのバージョンは24.2で今後更新されるかどうかは不明である。現在、単体では24.3がコンパイルされているのが
http://sourceforge.jp/projects/gnupack/releases/
で公開されているようである。

ところでEmacsはバージョンがあがると過去に使えた関数がバッサリ使えなくなり、個人的に愛用していたソフトがいろいろ使えなくなり、困ってしまう。たとえば24.3にしたとたん、SKKが使えなくなった。またPackageでバイトコンパイル中にこの関数は古いので置き換えろという警告も出てくる。一面、emacs-lispを覚えるきっかけが、バージョンを対応させるための簡単なソースコードの修正で自分のファイルにしていくことなので、結果的にスキル向上になるのかもしれない。

閑話休題。さて、Gnupackの導入はとても簡単。ダウンロードして解凍先を指定するだけでよい。私はルート「c:\」に置いている。フォルダ内の「config.ini」で設定を書き換え、実行ファイルをデスクトップにショートカット作成する。バージョンアップの際は、いろいろCygwin内に追加していない限り「config.ini」を移せばよい。

「config.ini」は主に、ホームディレクトリを指定したり、cygwinやemacsで実行させるファイルのパスを指定する。例えば、自分のユーザー名が「miyazakikenji」なら、「c:/Users/miyazakikenji」に指定している。Dropboxを「c:/Users/miyazakikenji/Dropbox」にして、他のパソコンと整合的にしている。

設定ファイルは「(Gnupack)/home」ディレクトリの設定を自分のホームディレクトリにコピーしておく。emacsの設定フェイル「init.el」はこれをもとに随時に追加していくのだが、

http://yohshiy.blog.fc2.com/blog-entry-169.html

でもいっているように、マウスでスクロールすると固まるので該当箇所をコメントアウトして、漢字変換キーなどをとコメントアウトしている。

なお、GnupackのemacsはUbuntuやMacにくらべて重めで、漢字変換がうまく効かないことがある。漢字変換は、SKKを導入するほうがよいだあろう。また、migemoがあらかじめ導入されているのはありがたいが、これもローマ字がうまくいかないことがあり、migemo取り消しの「C-e」をよく使うことになるだろう。先のサイトでcmigemoでの導入方法が紹介されてる。cmigmemoのバイナリがwindowsには存在するのでそちらを導入してもよいかもしれない。

次回以降、Gnupack でのEmacs環境について紹介したい。予定としては

  1. スペルチェック
  2. SKK
  3. lookup.el
  4. auctex
  5. ESS

を考えている。

更新:そのリンク先をつけくわえました。