init.el で cask のエラーがでるので旧バージョンに戻す

Emacs の設定ファイルである init.el の読み込みに失敗するようになってしまいました。

Warning (initialization): An error occurred while loading ‘(略)/.emacs.d/init.el’:

error: Given parent class package-recipe is not a class

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.

原因は cask のアップデートらしい

init.el の中で原因を探したところ、cask という Emacs のパッケージマネージャーのアップデートによるものだったようです。

Cask — Cask 0.8.4 (cask の公式ドキュメント)

cask の設定ファイルは /usr/local/share/emacs/site-lisp/cask/cask.el にあり、その中の defclass の使い方に関連するところでエラーが出ているようです。 …というところまではわかったので(そして Emacs Lisp に詳しくないので…)、とりあえず急場しのぎ的ですが homebrew で cask のバージョンを1つ前に戻します。

homebrew で cask のバージョンを戻す

ローカルにある旧バージョンを消してしまったので()、homebrew の Formula で Git を1つ巻き戻してインストールし直します。 再びここを参照していろいろやってみます。

確かに、つい最近アップデートがあったようです。cask の ログを辿りたいので Formula の中の cask.rb を見てみます。

$ pwd
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
$ git log cask.rb
commit 9e8d64eb8fa735973ba58469072d72ad52bead1e
Author: Sam Brightman <sambrightman@users.noreply.github.com>
Date:   Fri May 11 03:10:45 2018 +0100

    cask 0.8.4 (#27715)

commit 1a9b379d15865c23176862e25d1d9b954656b76d
Author: ilovezfs <ilovezfs@icloud.com>
Date:   Wed Feb 21 00:02:46 2018 -0800

    cask 0.8.3 (#24378)

巻き戻します。

$ git checkout 1a9b379d15865c23176862e25d1d9b954656b76d cask.rb
$ brew unlink cask
Unlinking /usr/local/Cellar/cask/0.8.4... 2 symlinks removed
$ HOMEBREW_NO_AUTO_UPDATE=1 brew install cask
==> Downloading https://github.com/cask/cask/archive/v0.8.3.tar.gz
==> Downloading from https://codeload.github.com/cask/cask/tar.gz/v0.8.3
######################################################################## 100.0%
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/cask
==> Summary
🍺  /usr/local/Cellar/cask/0.8.3: 14 files, 167.0KB, built in 4 seconds
$ cask --version
0.8.3
$ git reset --hard
HEAD is now at bddf42a93 wrk-trello: update url

とりあえずはこれでバージョンも1つ前に戻り、うまく動くようになりました。

Coq のバージョンアップに対応する

Coq のバージョンが上がってしまい (Homebrew で 何も考えずに upgrade をかけてしまった) 、いざ Coq を書こうとしてRequire Import [ライブラリの名前] という行を読み込もうとしたら、

Error:
File /Users/(略).vo has bad
magic number 8700 (expected 8800). It is corrupted or was compiled with
another version of Coq.

というエラーが出てしまったのでどうにかしましょうね、という話です。

環境

  • macOS HighSierra 10.13.4
  • Emacs + Proof General
  • Coq version 8.7.2 → 8.8.0 (Homebrew)

proofgeneral.github.io

解決策① Coq を旧バージョンに戻す

Homebrew で Coq を入れているので、バージョンを戻せばなんとかなります。新しいバージョンを入れたばかりなら旧バージョンもローカルに残っていると思うので、とりあえず確認してみます。

$ brew info coq
coq: stable 8.8.0 (bottled), HEAD
Proof assistant for higher-order logic
https://coq.inria.fr/
/usr/local/Cellar/coq/8.7.2 (4,312 files, 217.9MB)
  Poured from bottle on 2018-02-19 at 13:33:15
/usr/local/Cellar/coq/8.8.0 (4,398 files, 220.6MB) *
  Poured from bottle on 2018-05-03 at 10:34:53
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/coq.rb
(…以下略)

8.7.2 と 8.8.0 の2バージョンあるのがわかります。また、現在使われているバージョンである 8.8.0 の方に*印が付いています。

すでに 8.8.0 にしてしまったものを 8.7.2 に戻すには、次のようにします。

$ brew switch coq 8.7.2
Cleaning /usr/local/Cellar/coq/8.8.0
Cleaning /usr/local/Cellar/coq/8.7.2
27 links created for /usr/local/Cellar/coq/8.7.2


下のサイトを参考にさせていただきました: qiita.com

解決策② 新バージョンでライブラリを make し直す

新バージョンで使っていくためには、(ライブラリがうまく対応していればという条件付きですが) 再度コンパイルし直せば大丈夫のようです。

ライブラリのあるディレクトリ(= Makefile が置いてあるディレクトリ) に移動して、

$ make clean

とすれば今までコンパイルされていたもの (主に拡張子が .vo のファイル) が削除されます。そして、新しいバージョンの Coq (今回なら 8.8.0) で

$ make

とします。これで新しいバージョンでのコンパイルがうまくいくはずです。

参考にさせていただきました: http://coq-club.inria.narkive.com/aFqstVbp/ynot

Emacs org-mode : 行の折り返し & 見出し折りたたみ

Emacs の org-mode は最近使い始めたのですが本当に便利ですね。数式を TeX で書けたり、エクスポート先がいろいろあったりするのが嬉しいところです。

行の折り返しの ON/OFF

折り返しの ON/OFF を切り替えたいときは次のようにします。

M-x toggle-truncate-lines

org-mode ではデフォルトでは行を画面の端で折り返さないようになっています。

下のミニバッファにTruncate long lines enabled と出たときは、長い文章は折り返さずに画面をはみ出します。一方、Truncate long lines disabled と出たら、長い文章は折り返されます。

参考にさせていただきました: emacs.rubikitch.com

見出しの折りたたみ

org-mode の便利な点の1つが、見出しで折り畳めるというところです。

文章全体の折りたたみ

C-u C-i

このコマンドを何度も押すと
OVERVIEWCONTENTSSHOW ALLOVERVIEW → …
というように切り替わります。OVERVIEW が大見出しのみ表示、CONTENTS が大見出し・小見出しの表示、 SHOW ALL が本文も含めた全体を表示、となっています。

カーソル位置の見出しの折りたたみ

C-i

現在のカーソル位置の見出しを折りたたみます。何度も同じコマンドを繰り返すことで、
FOLDEDCHILDRENSUBTREEFOLDED → …
と切り替わります。FOLDED は現在の見出し以下を全て折りたたみ、CHILDREN は自分以下の小見出しの表示、SUBTREE は現在の見出しを本文まで全て展開します。

参考にさせていただきました: emacs.rubikitch.com

macOS のクリーンインストール

macOS High Sierra のバックアップをとって macOS を再インストールしようとしたら

The recovery server could not be contacted.

と出たのですが、下の手順を踏んだら解決しました。(クリックするとウェブページに飛びます。)

gist.github.com

ツールバーにあるUtilityオプションからTerminalを選んで起動し、パソコンを Wi-Fi に繋いで、コマンドを実行しましょう。どうやら Apple のサーバーと時刻合わせをしているだけのようです。

LaTeX の日本語フォント切り替え

LaTeX、フォント切り替えが簡単にできたら最高ですよね。
日本語組版用のデフォルトはヒラギノに設定しておいて、游明朝や游ゴシックに pxchfon というパッケージで簡単に切り替えていくための備忘録。

前提:環境

このページを編集している現在の環境は、 BasicTeX 2017 @macOS HighSierra です。Sierra と HighSierra のTeX環境はだいぶ違うのでお気をつけください。そして Sierra から安易に HighSierra に乗り換えると LaTeX の設定をいろいろやり直さないといけなくなるのでご注意ください(自戒)。

HighSierra の設定については以前の投稿に書いてあります。 saphir-jaune.hatenablog.com

pxchfonとは

CTAN: Package pxchfon とは、日本語フォントを設定するためのパッケージ。
ウェブサイトに日本語のマニュアル ( http://mirror.hmc.edu/ctan/language/japanese/pxchfon/pxchfon.pdf )があるのでとってもありがたいです。
TeX Live から配信されているので、簡単にインストールできます。

$ sudo tlmgr install pxchfon

私が主に使っているのは、マニュアル5章の「プリセット指定」のあたりです。

このパッケージの元々の意図は、標準のフォントを普段使っているものと全く別の書体に変えることであったが、例えば「普段使う設定が複数ありそれを簡単に切り替えたい」という場合にも有用である。そこで、pTEX において広く行われている設定をパッケージ内に組み込んで、パッケージオプションでそれを呼び出すという機能を追加した。

だそうです。 5.2節の「多ウェイト用の設定」でフォント/OSごとに具体的に書いてあります。

TeX で使う日本語フォントのリンクがある場所

上述の"以前の投稿"の最後の方にちょろっとデフォルトフォントの設定方法をメモってあるのですが、そこでcjk-gs-integrateを使っています。その関係で、日本語フォント用のシンボリックリンクをまとめて保管する場所は、私の場合、

/usr/local/texlive/2017basic/texmf-local/fonts/opentype/cjk-gs-integrate

になっています。

シンボリックリンク云々

$ ln -s [実体ファイルの在処] [そのリンクを置く場所]
  • シンボリックリンクの参照先を調べるには ls -l コマンドで一発です。矢印->の先が実体ファイルです。試しにやって見るとこんな感じです。
$ ls -l
total 0
drwxr-xr-x 35 root wheel 1120  2 25 22:24 .
(略)
lrwxr-xr-x  1 root wheel   62 11 30 17:54 HiraginoSans-W0.ttc -> '/System/Library/Fonts/ヒラギノ角ゴシック W0.ttc'
lrwxr-xr-x  1 root wheel   62 11 30 17:54 HiraginoSans-W1.ttc -> '/System/Library/Fonts/ヒラギノ角ゴシック W1.ttc'
lrwxr-xr-x  1 root wheel   62 11 30 17:54 HiraginoSans-W2.ttc -> '/System/Library/Fonts/ヒラギノ角ゴシック W2.ttc'

もしくは Emacsディレクトリ情報をそのまま開いてもいいですが。それはそれで面倒ですね。

ヒラギノ

上述の"以前の投稿"の最後の方を参照されたし。

とりあえず動いている游ファミリーの設定用文言はこちら。これをプリアンブルに書けば使えます。

\usepackage[noalphabet,unicode]{pxchfon}
\setminchofont{YuMincho.ttc} % 游明朝体 ミディアム
\setgothicfont{YuGo-Medium.otf} % 游ゴシック体 ミディアム
\setboldgothicfont{YuGo-Bold.otf} % 游ゴシック体 ボールド 

游ゴシック

Sierra から乗り換えても 游ゴシックの名前は変わらなかったようで、cjk-gs-integrateで設定したときにとくにいじらなくてもうまく行った記憶があります。

(自分用メモとして一応ls -lの結果を載せておきます)

YuGo-Bold.otf -> /System/Library/Assets/com_apple_MobileAsset_Font4/[ハッシュ値的なもの].asset/AssetData/YuGothic-Bold.otf
YuGo-Medium.otf -> /System/Library/Assets/com_apple_MobileAsset_Font4/[ハッシュ値的なもの].asset/AssetData/YuGothic-Medium.otf

游明朝

以前YuMin-Mediumなどという名前で通っていましたが HighSierra では絶滅してリンクが切れてしまいました。のちのち似たようなことが起きたときのために何をしたかメモしておきます。

  • 游明朝らしきファイルを検索する
    游ゴシックが /System/Library/Assets にあることがわかったので、游明朝もその周辺に引っ越したのではないかと勝手に推測して検索してみますが…ただ、名前がYuMincho.ttcに変更されている上に、1つしかヒットしません。
$ find /System/Library/Assets -name "YuMin*"
Library/Assets/com_apple_MobileAsset_Font4/[ハッシュ値的なもの].asset/AssetData/YuMincho.ttc
  • FontBookで見てみる
    とりあえずFontBook (macOS標準搭載のアプリ) で開いて見てみます。どうやら、デミボールドや"游明朝体 + 36ポかな" などがひとまとめになって入っていたようです。

    f:id:saphir_jaune:20180226001632p:plain
    FontBook で YuMincho.ttc の中身を調べた結果

  • 游明朝ミディアムの設定をする
    明朝体用の設定を\setminchofont{YuMincho.ttc}としたところミディアムはうまく表示されるようになりました。

  • 游明朝ボールドの設定…?
    ボールド体も同じYuMincho.ttcを使うように設定すれば良いのではと思って試してみましたがまだうまくいっていません。

unicode オプション

游ファミリー用の設定用文言の1行目を

\usepackage[noalphabet]{pxchfon}

と書くと、

Character collection mismatched: 
Font: Adobe-Identity-0 
CMap: Adobe-Japan1-1 

dvipdfmx:fatal: Inconsistent CMap specified for this font.

というエラーが出てくるので、オプションにunicodeを入れてあげることで解決しました。

ここを参照させていただきました…!ありがとうございます。 d.hatena.ne.jp

BasicTeX 2017 のインストール @HighSierra

macOS を HighSierra にアップグレードしたらヒラギノを埋め込めなくなってしまったのでクリーンインストールしたという自分用メモ。
HighSierra へのアップグレードによるフォントの埋め込みの問題についてだけでしたら、一番最後の「ヒラギノフォントを扱えるようにする」を見ていただければと思います。

目次:

macTeX か BasicTeX か

GUI アプリケーションを使いたいなら macTeX ですが、そうでなければ BasicTeX で事足ります。Basic でも日本語がうまく使えるのか心配でしたが、BasicTeX - TeX Wiki によればうまく行くみたいなので これにしたがって Basic でインストールしていきます。
(次節の手順は奥村先生のページに同じです)

Homebrew で BasicTeX をインストール

まずは Homebrew — macOS 用パッケージマネージャー で basictex をインストールします。

$ brew cask install basictex

そのあと、Homebrew に gnupg (gpgとも) がインストールされているかどうか確認してください。brew search コマンドで調べてみてインストールされていなければ、インストールするのがよいでしょう。どうやら、tlmgrコマンドを実行したときに必要になるようです。参考: tlmgr で gnupg not available - memo.xight.org

ちなみに、このtlmgr( tlmgr - TeX Wiki ) というのは TeX Live 用のパッケージ管理ツールです。覚えにくい綴りですね。まあ、TeX Live Manager の子音を持ってきただけの名前と思えば納得ですが。
参考: http://www.tug.org/texlive/doc/tlmgr#NAME

$ brew search gpg
$ brew install gpg

あとは tlmgrコマンドで 必要な TeX のパッケージをインストールしていきます。以前に macTeX を使っていたときは 700 個くらいのパッケージをダウンロード (当然、かなり時間がかかりますね) していたのに basic は たったの 53 個で感動しています。

$ sudo tlmgr update --self --all

規定の出力用紙サイズを A4 に設定します。

$ sudo tlmgr paper a4

BasicTeX - TeX Wiki にもあるように

確かに 2015 以前では ptex をインストールすれば platex も使えるようになっていたのですが, 2016 以降では platexplatex パッケージに分離されました。 このため,ptex をインストールしただけでは platex が使えるようにはなりません。

日本語環境を構成するには,このページで解説しているように collection-langjapanese を インストールすることをおすすめします。

とのことなので、これから最新版をインストールしようとしているなら collection-langjapanese を使うのがよいみたいですね。

$ sudo tlmgr install collection-langjapanese

これで日本語環境は一通り揃いました。

必要なパッケージを tlmgr で個別にインストール

残りは、今まで PDF に組版できていたものを試しに動かしてみて、足りないパッケージがあれば手動でインストールしていきます。バックアップもあるにはあったんですが、何が本当に必要なのか知りたかったのでめんどくさいですが手動でやってみました。
tlmgr コマンド自体の使い方は、次節「tlmgr の使い方」を参照。

  • tlmgr でインストールされたパッケージ一覧をログファイルから確認
    ログファイルは、/usr/local/texlive/2017basic/texmf-var/web2c/tlmgr.log にあるはずです。

  • 個人的にとりあえず必要だったパッケージ一覧
    個々に見ていくとスペースを取りそうなのでログファイルの一部をコピペするだけにとどめます。それぞれの説明も別記事にできたらいいのですが。

[Tue Nov 28 15:47:35 2017] install: mdframed
[Tue Nov 28 16:08:40 2017] install: bussproofs
[Tue Nov 28 16:17:46 2017] install: needspace
[Tue Nov 28 16:58:12 2017] install: mathpazo
[Tue Nov 28 16:59:10 2017] install: fpl
[Tue Nov 28 16:59:56 2017] install: palatino
[Tue Nov 28 17:20:09 2017] install: courier
[Fri Dec  1 23:15:03 2017] install: flagderiv
[Mon Dec  4 15:57:18 2017] install: bxdpx-beamer

tlmgr の使い方

tlmgr の使い方はかなり簡単です。

公式ドキュメントに詳しく書いてあります→ http://www.tug.org/texlive/doc/tlmgr.html

  • tlmgr info [パッケージ名]:パッケージの情報を得られます。インストールされているかどうかもわかります。
    試しに mdframed の情報を見てみます。(mdframedは描画ツール TikZ に必要なパッケージです。)
    未インストールなのがわかります。
$ tlmgr info mdframed
package:     mdframed
category:    Package
shortdesc:   Framed environments that can split at page boundaries
longdesc:    The package develops the facilities of framed in providing breakable framed and coloured boxes. The user may instruct the package to perform its operations using default LaTeX commands, PStricks or TikZ.
installed:   No
sizes:       src: 285k, doc: 1881k, run: 217k
relocatable: Yes
cat-version: 1.9b
cat-date:    2016-06-24 19:18:15 +0200
cat-license: lppl
cat-topics:  boxing box-breaking decoration
cat-related: framed
collection:  collection-latexextra
  • tlmgr install [パッケージ名]:パッケージのインストール。
    実際に実行するときは sudo をつけないと動かないはず。
$ sudo tlmgr install mdframed
  • tlmgr updatetlmgrのアップデート。
    • --self オプション:tlmgr コマンド自体のアップデートを行います。
    • --all オプション:tlmgr で管理しているパッケージ全てのアップデートを行います。大抵、かなり時間がかかるので暇な時にやるのがよいです。

ヒラギノフォントを扱えるようにする

以下のサイトの手順を踏んでうまくいきました。

私の場合は BasicTeX を入れたので、上のページ内のjfontmaps/Makefileの1行目TEXMFに相当する部分はTEXMF = /usr/local/texlive/2017basic/texmf-localでした。

また、上のサイトの元になっている github リポジトリは以下。

TeXとフォント - TeX Wiki や、 TeX Live/Mac - TeX Wiki にもあるように、

$ sudo kanji-config-updmap-sys status

とすることで現在のフォント埋め込み設定を見ることができます。現在の様子は以下。HighSierra用のヒラギノに設定されています。

$ sudo kanji-config-updmap-sys status
updmap [WARNING]: resetting $HOME value (was (略)) to root's actual home (/var/root).
CURRENT family for ja: hiragino-highsierra-pron
Standby family : ipa
Standby family : ipaex
Standby family : ms-osx

Wunderlist のアクティビティの通知

2,3年前から、Wunderlist ( https://www.wunderlist.com/ja/ ) というTODOリストアプリを使っています。
同期も早くて使い勝手がいいのですが、別に他人とリストを共有したりはしていないのでぶっちゃけアクティビティの通知はちょっと煩わしく感じていました。

環境設定のパネルにもアクティビティ関連のものは見当たらなかったのでそういう設定はないのかなと思ってたのですが、ありました。 公式の解説ページに書いてあります。

macOS版の Wunderlist だと、リスト一覧の表示のところで、各リストを選択すると右端に鉛筆のマーク(編集ボタン)が出てきます。

f:id:saphir_jaune:20171127173711p:plain:w350

鉛筆マークをクリックするとそのリストの設定のパネルが出てくるので、「リストのオプション」をクリック。
そして「マナーモード」にチェックを入れれば完了。

f:id:saphir_jaune:20171127173715p:plain:w350

これで通知がうるさくなくなりました。