FreeBSD 11.4で動かしていたweeklyなバックアップシステムが起動しなくなりました。ポンコツのHDDをたくさん接続してzfsのraid-0で容量を稼いでバックアップする,という乱暴なことをしているのでHDDが1個でも死んだらシステムごと死にます。OSだけは100 GBのSATA接続のSSDにインストールしてデータ保存用のzpoolをマウントしてバックアップに使っています。
通常は,dailyバックアップサーバーは常時運転して深夜にバックアップをとっていますが,weeklyバックアップサーバーは日曜日の朝に別のサーバーからwolで叩き起こされて,自前のcrontabでdailyバックアップサーバーのバックアップデータをマウントしてから1週間分のバックアップをとって,その後,バックアップが終わったよ,というメールを送ってから自分でshutdownするというルーチンで二重のバックアップをとっていました。
しかし,年末の超絶忙しい時に,ふと,weeklyバックアップサーバーが起動していないことに気がつきました。サーバー室で様子をみると起動の途中でシェルに落ちていることがわかりました。バックアップデータを保存するzfsなHDDは7個の古いHDDをひとまとめにして使っています。もちろん容量はまちまちで2TB x 5個,1.5TB x 1個,750MB x 1個です。
起動中にシェルに落ちてしまっているのでシェルからzpool statusと叩くとどうやら750 MBのHDDが死んでzpoolがunavailableになっているようです。起動時のdmesgでも750MBのHDDは認識されていないようなので完全に死んでしまったようです。そのため,zpoolをマウントできずにシェルに落ちたのでした。
バックアップ用のディスクはzfsでファイルシステムを作っていますが,あえて,自動マウントではなく
zfs set mountpoint=legacy ZPOOL_NAME
と設定して,/etc/fstabにマウントポイントを指定してマウントする,という面倒なことをしていました。そのため,シェルに落ちてから/etc/fstabを編集してバックアップ用のディスクのマウントを指定している行をコメントアウトして再起動すればSSDから普通に立ち上がってきます。legacyに設定をしたうえでOSだけSSDにインストールしておいたのが功を奏しました。
raid-0なので当然ですが,どうあがいたって復旧はできません。zpoolを作り直して元のデータからバックアップをとりなおすしかありません。
そこでそこらへんに転がっているHDDに入れ替えたうえで,
zpool destroy ZPOOL_NAME
とやってzpoolを削除して新しいHDDを加えて改めてzpoolを作成すればOKです。その手順は,以前に書いたもののとおりです。
ただし,
zfs set compress=lz4 ZPOOL_NAME
については,圧縮率を優先してcompress=gzip-6としました。FreeBSD 13以降であれば,zstdを指定できるのですが,11.4の時代はまだzstdが実装されていないためgzipを設定しました。gzip-9が最大の圧縮率ですが,超絶遅くなるようなのでデフォルトのgzip-6を選んでいます。lz4よりは圧縮率が高いようなので良しとしました。
HDDの状態を知りたいと思ったのでSMARTを読めるようにしました。
cd /usr/ports/sysutils/smartmontools/
make
make install
でportsを使ってソースからコンパイルしてインストールしました。あまり依存関係がなければかなり古いバージョンのOSでもインストールできるようです。
/etc/rc.confに
smartd_enable="YES"
を追加して
smartctrl -a /dev/ada0
などとするとSMARTのデータがバラバラと表示されます。SMARTがdisableになっているとHDDの情報だけ表示されて終わります。出力されたメッセージの最後に書かれているように,
smartctrl -s on /dev/ada0
とやればenableになって改めてsmartctl -a /dev/ada0と叩くとちゃんと情報が表示されます。
こちらによると,SMARTの出力のなかで故障と相関の高い項目がいくつかあるようです。それは以下の5つの項目でいずれも値が1以上になると故障の可能性が非常に高くなるとのことです。
1 Raw_Read_Error_Rate
5 Reallocated_Sector_Ct
196 Reallocated_Event_Count
198 Offline_Uncorrectable
197 Current_Pending_Sector
デバイスの名前を1個しか指定できないので7個もHDDがあると超絶面倒なのですが,適当なシェルスクリプトを書いて異常値がでたらメールを送る,というようなことをすればよさそうです。やればできることはわかっているけどやっぱりめんどくさそうです。
そんなことを言っているからサーバーが死んでいても気がつかなかったりするんですよね。だめじゃん...。
Mac mini (2024)の設定(その6;emacsからwnn7を使う)
UNIXでの日本語変換はもう30年近く,wnnを使っています。オムロンが商用版としてリリースしたwnn7のライセンスを研究室の人が使えるだけ購入していました。研究室にLinuxを使っている人はたくさんいますが,誰もwnn7なんて知りません。結局,私一人だけで使っています。emacsからwnn7の変換サーバーであるjserverに接続するためにwnn7egg (ななたまご)を20年以上使っていますが,ななたまごのコードが古いためにemacsのバージョンが上がるたびにlispのコマンドが対応しなくなってトラブルが発生し続けています。
しかし,世の中にはとても偉い人がいてwnnが使えるように,それもFreeBSDで使えるようにメンテをしてくださっている方がいらっしゃいます。FreeBSDにおけるWnn 8というページは私にとっては神ページです。もう拝んでしまうレベルです。
FreeBSDにwnn7をインストールしてjserverは動いています。Mac mini M4のemacsからリモートのjserverにwnn7eggで接続したい,というのがここでの目標です。emacsはQuartzに対応した29.4-1をインストールしました。
上記の神ページはFreeBSDでemacsにwnn7eggを入れてWnn8を使う,という話になっているので,wnn7eggのインストールはportsを使う前提になっています。したがって,FreeBSDのwnn7eggのソースにFreeBSDむけのパッチをあてて,さらに,新しいバージョンのemacsに対応させるために配布されているパッチをあてるという手順が想定されています。
もはやソースを読む気力がないので,FreeBSD上でパッチをあててportsからインストールしたwnn7eggのemacs lispを丸ごとコピーしてきてmac mini M4に移植しました。このあたりはemacs lispで書かれているので実行環境のことを考えなくてよいというメリットがあります。FreeBSD上で
cd /usr/local/share/emacs/site-lisp/
tar zcvf /tmp/wnn7egg.tgz wnn7egg/
としてemacs lispを丸ごとコピーしたtgzファイルを作ってしまいます。このファイルをmac miniの適当なディレクトリにコピーをして,mac mini上で
cd /opt/homebrew/share/emacs/site-lisp/
tar zxvf (somewhere)/wnn7.egg.tgz
として展開します。いったん動くemacs lispができていればどこにでも持っていける,というのはとても便利です。あとは~/.emacs.d/init.elに以下を追記します。
(setq load-path (append '("/opt/homebrew/share/emacs/site-lisp/wnn7egg") load-path))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; for wnn7egg (ななたまご)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(global-set-key "\C-\\" 'toggle-input-method)
(load "wnn7egg-leim")
(set-language-info "Japanese" 'input-method "japanese-egg-wnn7")
(setq enable-double-n-syntax t)
(setq use-kuten-for-period t)
(setq use-touten-for-comma nil)
;;(setq wnn7-server-name "puccini:0")
(setq wnn7-server-name "wagner:0")
;; 句読点の設定
;; "."を押すと"."にする設定
;(setq its-hira-period ".")
;; ","を押すと","にする設定
(setq its-hira-comma ",")
(setq its-enable-fullwidth-alphabet nil)
(setq wnn7-set-boin-kabusoku nil)
wnn7-server-nameのあとのwagnerというのはjserverが動いているサーバーの名前です。これで特に問題なく日本語変換ができるようになりました。
オリジナルのwnn7eggではどうにも動きませんし,とても自分ではそれを解決できません。パッチを公開してくださっているのは本当にありがたいことです。
というわけで,これでなんとかMac Mini (2024)の設定ができて仕事に使えるようになったような気がします。環境構築はやはりたいへんです。もう,新しいコンピュータを買おうという気力がでません...。
しかし,世の中にはとても偉い人がいてwnnが使えるように,それもFreeBSDで使えるようにメンテをしてくださっている方がいらっしゃいます。FreeBSDにおけるWnn 8というページは私にとっては神ページです。もう拝んでしまうレベルです。
FreeBSDにwnn7をインストールしてjserverは動いています。Mac mini M4のemacsからリモートのjserverにwnn7eggで接続したい,というのがここでの目標です。emacsはQuartzに対応した29.4-1をインストールしました。
上記の神ページはFreeBSDでemacsにwnn7eggを入れてWnn8を使う,という話になっているので,wnn7eggのインストールはportsを使う前提になっています。したがって,FreeBSDのwnn7eggのソースにFreeBSDむけのパッチをあてて,さらに,新しいバージョンのemacsに対応させるために配布されているパッチをあてるという手順が想定されています。
もはやソースを読む気力がないので,FreeBSD上でパッチをあててportsからインストールしたwnn7eggのemacs lispを丸ごとコピーしてきてmac mini M4に移植しました。このあたりはemacs lispで書かれているので実行環境のことを考えなくてよいというメリットがあります。FreeBSD上で
cd /usr/local/share/emacs/site-lisp/
tar zcvf /tmp/wnn7egg.tgz wnn7egg/
としてemacs lispを丸ごとコピーしたtgzファイルを作ってしまいます。このファイルをmac miniの適当なディレクトリにコピーをして,mac mini上で
cd /opt/homebrew/share/emacs/site-lisp/
tar zxvf (somewhere)/wnn7.egg.tgz
として展開します。いったん動くemacs lispができていればどこにでも持っていける,というのはとても便利です。あとは~/.emacs.d/init.elに以下を追記します。
(setq load-path (append '("/opt/homebrew/share/emacs/site-lisp/wnn7egg") load-path))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; for wnn7egg (ななたまご)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(global-set-key "\C-\\" 'toggle-input-method)
(load "wnn7egg-leim")
(set-language-info "Japanese" 'input-method "japanese-egg-wnn7")
(setq enable-double-n-syntax t)
(setq use-kuten-for-period t)
(setq use-touten-for-comma nil)
;;(setq wnn7-server-name "puccini:0")
(setq wnn7-server-name "wagner:0")
;; 句読点の設定
;; "."を押すと"."にする設定
;(setq its-hira-period ".")
;; ","を押すと","にする設定
(setq its-hira-comma ",")
(setq its-enable-fullwidth-alphabet nil)
(setq wnn7-set-boin-kabusoku nil)
wnn7-server-nameのあとのwagnerというのはjserverが動いているサーバーの名前です。これで特に問題なく日本語変換ができるようになりました。
オリジナルのwnn7eggではどうにも動きませんし,とても自分ではそれを解決できません。パッチを公開してくださっているのは本当にありがたいことです。
というわけで,これでなんとかMac Mini (2024)の設定ができて仕事に使えるようになったような気がします。環境構築はやはりたいへんです。もう,新しいコンピュータを買おうという気力がでません...。
Mac mini (2024)の設定(その5;アプリのインストール 続きの続き)
日常生活再開への道は遠く,まだまだインストールが続きます。
1. LiveTexのインストール
日常でもっともよく使うであろう,TeXをインストールします。以前にメモした通り,brewからインストールすることにします。既に,HomebrewとXcodeはインストール済みですので,いきなりインストールをはじめます。ただし,Xcodeはインストール後に一度起動してライセンスに同意しておかなくてはなりません。
brew install --cask mactex
でHomebrew経由でMacTeXをインストールします。ファイルが巨大なのでダウンロードにとても長い時間がかかります。インストール時点(2025年12月)ではTeXLive 2025ベースのMacTeXがインストールされました。
私がシェルとしてtcshを使っているからダメなのかもしれませんが,TeX関連の実行ファイルへのパスが通っていません。bashを前提として自動処理がされているのかもしれませんが,ないものはないので,.cshrcのパスに
/usr/local/texlive/2024/bin/universal-darwin
を追加します。さらに,環境変数として
setenv TEXMFLOCAL /usr/local/texlive/texmf-local
setenv TEXMFHOME ~/Library/texmf
も設定しておきます。.cshrcを保存したらターミナルのホームディレクトリでsource .cshrcを走らせてrehashをしてから以下のコマンドでシステムのアップデートと紙のサイズを指定します。
sudo tlmgr update --self --all
それなりに時間がかかりますが,なんとか最後まで終わります。なんかエラーがあるから/usr/local/texlive/2025/texmf-var/web2c/のtlmgr.logとtlmgr-commands.logを読め,と言われますがよくわからないので放置してしまいました。ええんか?
MacTeXやベースとなっているTeX Liveは文字コードはUTF-8がデフォルトになっているようですが,私自身は遠い昔(20世紀)からFreeBSDを使ってきたのでこれまで作った日本語ファイルの文字コードはすべてEUCです。そのためふつうにコンパイルをすると全部文字化けで使えないということになっていました。しかし,HomebrewでインストールしたMacTeXは文字コードを自動判別するようで,platexでコンパイルをすると,文字コードはEUC-JPらしい,と勝手に判断しているメッセージが表示されてできたdviファイルをdvipdfmxでpdfに変換するとちゃんと文字化けしないで表示されます。また用紙サイズもA4になっていました。
xdviで直接dviファイルを表示しようとするとフォントがないといって日本語の文字だけ表示されません。また,pdfLaTexもEUCには対応できないようで正しくコンパイルできませんでした。とりあえず,platex + dvipdfmxが使えれば個人的にはOKです。
なお,Elsevierの論文用LaTeXクラスファイルはpLaTeXでは動かないのでpdfLaTexを使わねばならないようです。しかしpdfLaTexは日本語の処理は少し難易度が高そうです。Elsevierのジャーナルなので英語で書くに決まっていてASCII文字だけ使えばよいので論文をかくうえでは問題はないのですが,今後,pdfLaTeXを使わねばならないとなるともはやEUCはどうしようもない,ということになりそうです。新しい環境についていけなくなっているので,これから先が思いやられます。
2. emacs-lispのインストール
2.0 init.elに初期設定
emacsは起動時に~/.emacs.d/init.elを見に行くので初期設定をこのファイルに書き込んでおきます。.emacs.dディレクトリがなければ作ります。一度でもemacsを起動したことがあれば勝手に作られていると思います。
日本語はEUCをデフォルトにしているのでその設定をしておきます。~/.emacs.d/init.elに以下を書いておきます。
(add-to-list 'load-path "/opt/homebrew/share/emacs/site-lisp")
;;
(set-language-environment "Japanese")
;;(prefer-coding-system 'euc-jp) ;; UTF-8を使うなら不要
2.1 packageの設定
~/.emacs.d/init.elに以下を追記。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; package
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives
'("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
を書きます。これでmelpaからパッケージを読み込むことができるようになります。,
emacsを起動して,
M-x package-list-packages
とすると,インストール可能なパッケージのリストが表示されます。
2.2 YaTeXのインストール
M-x package-install
として,インストールしたいパッケージの名前を聞かれたら,yatexと叩くと勝手にインストールをします。何かあれこれ文句を言ってきますが,気にしないことにします。兎に角,インストールできた,というメッセージは表示されるのでOKなのだと思います。インストールができたら,~/.emacs.d/init.elに以下を追記します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; YaTeX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist
(cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
(setq tex-command "platex")
(setq dvi2-command "dvipdfmx")
;;;(setq dviprint-command-format "dvips %f %t %s")
(setq dviprint-command-format "open -a preview %s.pdf")
(setq dviprint-from-format "-p %b")
(setq dviprint-to-format "-l %e")
tex-commandなどのコマンド名は実際にインストールするLaTeXのパッケージの名前にあわせて編集します。
dvi2-commandはこれまでxdviを使っていましたが,TeXLiveをインストールするとxdviに日本語を表示するのはワナが多いので,すっぱりあきらめてdvipdfmxを使ってしまいます。C-c t lとやるとdviprint-command-formatに指定したコマンドが実行されるので,previewでpdfファイルを表示するように設定しています。
C-c t jでplatex hoge
C-c t pでdvipdfmx hoge
C-c t lでopen -a preview hoge.pdf
という具合に実行されます。
2.3 yahtml
yatexをインストールするとyahtmlもインストールされます。手動でyahtmlを起動するには,
M-x yahtml-mode
とすればOKです。~/.emacs.d/init.elに
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; YaHTML
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist
(cons (cons "\\.html$" 'yahtml-mode) auto-mode-alist))
(autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t)
;;;(setq yahtml-www-browser "mozilla")
;;;(setq yahtml-kanji-code 3) ; 1: Shift_JIS, 2: ISO-2022-JP, 3: EUC
を書いておけばhtmlファイルを開くとyahtmlが勝手に起動します。
2.4 migemoのインストール
既にHomebrewでcmigemoはインストールしているので,migemoをmelpaからインストールします。
M-x package-install
として,migemoと叩けば勝手にインストールされます。
~/.emacs.d/init.elに以下を追加します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Migemo
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'migemo)
(setq migemo-command "/usr/local/bin/cmigemo")
(setq migemo-options '("-q" "--emacs"))
;;(setq migemo-dictionary "/opt/homebrew/Cellar/cmigemo/20110227/share/migemo/utf-8/migemo-dict")
(setq migemo-dictionary "/opt/homebrew/Cellar/cmigemo/20110227/share/migemo/euc-jp/migemo-dict")
(setq migemo-user-dictionary nil)
;;(setq migemo-coding-system 'utf-8-unix)
(setq migemo-coding-system 'euc-jp-unix)
(setq migemo-regex-dictionary nil)
(load-library "migemo")
(migemo-init)
これでなんとなく動いているようです。utf-8かeuc-jpかは文字コードによって選べばよさそうです。
2.5 スペルチェックのインストール
スペルチェックはaspellを使います。Homebrewでaspellはインストールしているので設定だけすればOKです。
ホームディレクトリで
cat > ~/.aspell.conf
lang en_US
^D
と叩いてaspellの設定ファイルを作って英語だけスペルチェックするように設定します。
続いて~/.emacs.d/init.elに以下の設定を追加します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; aspell
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
(setq-default ispell-program-name "/opt/homebrew/bin/aspell")
(with-eval-after-load "ispell"
(setq ispell-local-dictionary "en_US")
'(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))
ispell-program-nameの設定値はaspellだけでよさそうなのですが,aspellというファイルが見つからない,というエラーがでるのでフルパスを指定しています。
2.6 flyspellモードの設定
書いている文書のスペルミスをリアルタイムにみつけて赤い波線をつける機能がemacsにはデフォルトでついています(知らなかった...)。TeXで文書を作っている時だけ使う,ということで,~/.emacs.d/init.elに以下を追記します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; flyspell mode during yatex mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package flyspell
:hook (yatex-mode . flyspell-mode))
4. ggplot2のインストール
R用のグラフィック用パッケージです。あまりごちゃごちゃ言わずにインストールしておけ,というようなものだと勝手に思っています。
コンソールでRと叩いてRを起動して,
install.packages("ggplot2")
とたたきます。すると,
--- このセッションで使うために、CRAN のミラーサイトを選んでください ---
Secure CRAN mirrors
と表示されるので,国内のサイトの番号を選ぶとあとは延々とメッセージを表示しながらインストールが進みます。特にエラーがでなければ完了です。
1. LiveTexのインストール
日常でもっともよく使うであろう,TeXをインストールします。以前にメモした通り,brewからインストールすることにします。既に,HomebrewとXcodeはインストール済みですので,いきなりインストールをはじめます。ただし,Xcodeはインストール後に一度起動してライセンスに同意しておかなくてはなりません。
brew install --cask mactex
でHomebrew経由でMacTeXをインストールします。ファイルが巨大なのでダウンロードにとても長い時間がかかります。インストール時点(2025年12月)ではTeXLive 2025ベースのMacTeXがインストールされました。
私がシェルとしてtcshを使っているからダメなのかもしれませんが,TeX関連の実行ファイルへのパスが通っていません。bashを前提として自動処理がされているのかもしれませんが,ないものはないので,.cshrcのパスに
/usr/local/texlive/2024/bin/universal-darwin
を追加します。さらに,環境変数として
setenv TEXMFLOCAL /usr/local/texlive/texmf-local
setenv TEXMFHOME ~/Library/texmf
も設定しておきます。.cshrcを保存したらターミナルのホームディレクトリでsource .cshrcを走らせてrehashをしてから以下のコマンドでシステムのアップデートと紙のサイズを指定します。
sudo tlmgr update --self --all
それなりに時間がかかりますが,なんとか最後まで終わります。なんかエラーがあるから/usr/local/texlive/2025/texmf-var/web2c/のtlmgr.logとtlmgr-commands.logを読め,と言われますがよくわからないので放置してしまいました。ええんか?
MacTeXやベースとなっているTeX Liveは文字コードはUTF-8がデフォルトになっているようですが,私自身は遠い昔(20世紀)からFreeBSDを使ってきたのでこれまで作った日本語ファイルの文字コードはすべてEUCです。そのためふつうにコンパイルをすると全部文字化けで使えないということになっていました。しかし,HomebrewでインストールしたMacTeXは文字コードを自動判別するようで,platexでコンパイルをすると,文字コードはEUC-JPらしい,と勝手に判断しているメッセージが表示されてできたdviファイルをdvipdfmxでpdfに変換するとちゃんと文字化けしないで表示されます。また用紙サイズもA4になっていました。
xdviで直接dviファイルを表示しようとするとフォントがないといって日本語の文字だけ表示されません。また,pdfLaTexもEUCには対応できないようで正しくコンパイルできませんでした。とりあえず,platex + dvipdfmxが使えれば個人的にはOKです。
なお,Elsevierの論文用LaTeXクラスファイルはpLaTeXでは動かないのでpdfLaTexを使わねばならないようです。しかしpdfLaTexは日本語の処理は少し難易度が高そうです。Elsevierのジャーナルなので英語で書くに決まっていてASCII文字だけ使えばよいので論文をかくうえでは問題はないのですが,今後,pdfLaTeXを使わねばならないとなるともはやEUCはどうしようもない,ということになりそうです。新しい環境についていけなくなっているので,これから先が思いやられます。
2. emacs-lispのインストール
2.0 init.elに初期設定
emacsは起動時に~/.emacs.d/init.elを見に行くので初期設定をこのファイルに書き込んでおきます。.emacs.dディレクトリがなければ作ります。一度でもemacsを起動したことがあれば勝手に作られていると思います。
日本語はEUCをデフォルトにしているのでその設定をしておきます。~/.emacs.d/init.elに以下を書いておきます。
(add-to-list 'load-path "/opt/homebrew/share/emacs/site-lisp")
;;
(set-language-environment "Japanese")
;;(prefer-coding-system 'euc-jp) ;; UTF-8を使うなら不要
2.1 packageの設定
~/.emacs.d/init.elに以下を追記。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; package
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives
'("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
を書きます。これでmelpaからパッケージを読み込むことができるようになります。,
emacsを起動して,
M-x package-list-packages
とすると,インストール可能なパッケージのリストが表示されます。
2.2 YaTeXのインストール
M-x package-install
として,インストールしたいパッケージの名前を聞かれたら,yatexと叩くと勝手にインストールをします。何かあれこれ文句を言ってきますが,気にしないことにします。兎に角,インストールできた,というメッセージは表示されるのでOKなのだと思います。インストールができたら,~/.emacs.d/init.elに以下を追記します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; YaTeX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist
(cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
(setq tex-command "platex")
(setq dvi2-command "dvipdfmx")
;;;(setq dviprint-command-format "dvips %f %t %s")
(setq dviprint-command-format "open -a preview %s.pdf")
(setq dviprint-from-format "-p %b")
(setq dviprint-to-format "-l %e")
tex-commandなどのコマンド名は実際にインストールするLaTeXのパッケージの名前にあわせて編集します。
dvi2-commandはこれまでxdviを使っていましたが,TeXLiveをインストールするとxdviに日本語を表示するのはワナが多いので,すっぱりあきらめてdvipdfmxを使ってしまいます。C-c t lとやるとdviprint-command-formatに指定したコマンドが実行されるので,previewでpdfファイルを表示するように設定しています。
C-c t jでplatex hoge
C-c t pでdvipdfmx hoge
C-c t lでopen -a preview hoge.pdf
という具合に実行されます。
2.3 yahtml
yatexをインストールするとyahtmlもインストールされます。手動でyahtmlを起動するには,
M-x yahtml-mode
とすればOKです。~/.emacs.d/init.elに
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; YaHTML
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist
(cons (cons "\\.html$" 'yahtml-mode) auto-mode-alist))
(autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t)
;;;(setq yahtml-www-browser "mozilla")
;;;(setq yahtml-kanji-code 3) ; 1: Shift_JIS, 2: ISO-2022-JP, 3: EUC
を書いておけばhtmlファイルを開くとyahtmlが勝手に起動します。
2.4 migemoのインストール
既にHomebrewでcmigemoはインストールしているので,migemoをmelpaからインストールします。
M-x package-install
として,migemoと叩けば勝手にインストールされます。
~/.emacs.d/init.elに以下を追加します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Migemo
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'migemo)
(setq migemo-command "/usr/local/bin/cmigemo")
(setq migemo-options '("-q" "--emacs"))
;;(setq migemo-dictionary "/opt/homebrew/Cellar/cmigemo/20110227/share/migemo/utf-8/migemo-dict")
(setq migemo-dictionary "/opt/homebrew/Cellar/cmigemo/20110227/share/migemo/euc-jp/migemo-dict")
(setq migemo-user-dictionary nil)
;;(setq migemo-coding-system 'utf-8-unix)
(setq migemo-coding-system 'euc-jp-unix)
(setq migemo-regex-dictionary nil)
(load-library "migemo")
(migemo-init)
これでなんとなく動いているようです。utf-8かeuc-jpかは文字コードによって選べばよさそうです。
2.5 スペルチェックのインストール
スペルチェックはaspellを使います。Homebrewでaspellはインストールしているので設定だけすればOKです。
ホームディレクトリで
cat > ~/.aspell.conf
lang en_US
^D
と叩いてaspellの設定ファイルを作って英語だけスペルチェックするように設定します。
続いて~/.emacs.d/init.elに以下の設定を追加します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; aspell
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
(setq-default ispell-program-name "/opt/homebrew/bin/aspell")
(with-eval-after-load "ispell"
(setq ispell-local-dictionary "en_US")
'(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))
ispell-program-nameの設定値はaspellだけでよさそうなのですが,aspellというファイルが見つからない,というエラーがでるのでフルパスを指定しています。
2.6 flyspellモードの設定
書いている文書のスペルミスをリアルタイムにみつけて赤い波線をつける機能がemacsにはデフォルトでついています(知らなかった...)。TeXで文書を作っている時だけ使う,ということで,~/.emacs.d/init.elに以下を追記します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; flyspell mode during yatex mode
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package flyspell
:hook (yatex-mode . flyspell-mode))
4. ggplot2のインストール
R用のグラフィック用パッケージです。あまりごちゃごちゃ言わずにインストールしておけ,というようなものだと勝手に思っています。
コンソールでRと叩いてRを起動して,
install.packages("ggplot2")
とたたきます。すると,
--- このセッションで使うために、CRAN のミラーサイトを選んでください ---
Secure CRAN mirrors
と表示されるので,国内のサイトの番号を選ぶとあとは延々とメッセージを表示しながらインストールが進みます。特にエラーがでなければ完了です。