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 の使い方は、(homebrewをある程度使ったことがあれば)かなり簡単です。

公式ドキュメントに詳しく書いてあります→ 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

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

Aquamacs 立ち上げても init.el が読み込まれないんですが

f:id:saphir_jaune:20171115131142p:plain:h80

Aquamacs っていうのは Emacs の親戚

Aquamacs: Emacs for Mac OS X というのは、macOS 向けの Emacs です。ほぼ Emacs と思って大丈夫。違うのは牛の顔がちょっとかわいいかもしれない(Aquamacs)か、全然可愛くない(Emacs)かぐらいです。

Emacs を使っているとどうしても自分用にカスタマイズをしたいと思うわけで、そうなると ~/.emacs~/.emacs.d/init.el などに設定を書き込むことになると思います。私は後者の init.el に設定を書く派(?)です。

それはさておき、この Aquamacs が Emacs の親戚ということで、勝手に Emacs 用設定ファイルを読み込んでくれるものと思い込んでいたのですがどうも違うようです。

Q1. Aquamacs はどの設定ファイルを読み込むのか

本家 EmacsWiki: Init File で調べてみたところ、

  • GnuEmacs (注: この記事で言うところの Emacs ) では、初期設定ファイルは ~/.emacs, ~/.emacs.el, ~/.emacs.d/init.el のいずれかになります。この3つのファイル名のうちどれを選んでも構いません。~/ というのはホームディレクトリを差します。
  • AquamacsEmacs (注: この記事で言うところの Aquamacs ) では、初期設定ファイルは ~/.emacs もしくは ~/Library/Preferences/Aquamacs Emacs/Preferences.el となります。

とあります。

ここまでくると、「~/.emacs だけに設定を書いておけばよいのでは…?」という気持ちになります。おそらく~/.emacs をもともと使っている方ならそれでうまく読み込まれると思います。
しかし私は init.el を使っているのでそうはいかないようです。

Q2. じゃあ init.el 派はどうしたらいいのか

上の設定ファイルの説明には、

ファイル名はどれを選んでも構いません

と書いてありますが、実はここに罠があって、
設定ファイルはこの順に探され、一番最初に見つかったもののみ読み込まれる
のです…。つまり何が起きるかというと、
もし Aquamacs 用に ~/.emacs を書くと、Emacs では ~/.emacs.d/init.el は読み込まれない
ということです。

というわけで、Aquamacs の民は ~/Library/Preferences/Aquamacs\ Emacs/Preferences.el に設定を書けばよいということになります。

気をつけるべきこと

晴れて設定ファイルは Preferences.el に書けばよいということがわかりました。しかしそのとき、似たような名前に騙されないようにしてください。

$ pwd
~/Library/Preferences/Aquamacs Emacs
$ ls
 Packages        'Recent Files.el'   customizations.el    minibuffer-history.el
 Preferences.el   auto-save-list     frame-positions.el   places.el

編集していいのは Preferences.el だけです。

なんか customizations.el っていうのがありますね。つい編集したくなってしまいますが、このファイルは Aquamacs で Options メニューからオプションを選択したときに自動的に書きかわるファイルです。ご注意を。

参考サイト

C++ ブックマーク

C++ 初心者がいろいろ調べながらプログラム書くために参照したサイト. 随時更新します.
一言まとめ+URL みたいな構成で, 詳しくはサイトを参照してくださいという格好です. うまく要約できなくて引用している場合もありますが.

以下、だらだらと長くなりそうなので目次をつけました

困った時に参照したい

コンパイル

  • C++11の機能を使いたければ-std=c++11オプションをつける.
    処理系 - cpprefjp C++日本語リファレンス

  • 汎用変数(っていう言い方でいいのかわからないが), つまり template variables を使いたければ -std=c++14 を使う.

カテゴリ別

文字列

イテレータ

クラスの書き方

ぬるぽ

ポインタとその周辺

例外処理

読み物

これから読む

普通に楽しかった

  • タイトル通り, いわゆる"おまじない"を徹底的に解説.
    個人的には最後らへんに書いてある return 0 の処理の話がとてもありがたかった.
    ハローワールド徹底解説 - Qiita

Emacs コマンドまとめ

よく使うコマンドたちの備忘録。

コマンドの基本的な打ち方

  • C-uなどと書くと、Controlキーと"u"を一緒に押します。
  • C-u 0となっているときは、一度C-uを押してから指を離して、"0"だけ押します。
  • M-xなどと書くと、「メタエックス」などと呼ばれ、alt (option) キーと"x"を一緒に押します。
  • とにかくコマンドを中止したいときはC-gを押しておけばOK。下のミニバッファにQuitと表示される。

カーソル移動

  • C-u 0 C-l : 現在のカーソルの位置が画面の一番上に来るようにする
  • C-u -1 C-l : 現在のカーソルの位置が画面の一番下に来るようにする
  • C-l : 現在のカーソル位置が画面の中央に来るようにする
  • C-v : 次の画面に進む(スクロールする)
  • M-v : 前の画面に進む(スクロールする)

検索

  • C-s : いわゆる"i-search forward"。現在のカーソルの位置から順番に検索する。次の候補を探したいときはもう一度C-sを押せばいい。C-sしまくっていると2巡目に入る("wrapped i-search")。ウィンドウをクリックすると検索は終了する。検索を中止して元の位置に戻りたいときはC-gでよい。
  • C-r : "i-search backward"。現在のカーソル位置から逆順に検索する。詳細は上に同じ。
    • とても便利なことに、C-s をなんども押して検索している途中で C-r を押すと一つ前の検索結果にヒットするし、C-r で該当するものを探している時に C-s を押しても大丈夫。

置換

  • M-% : 検索でヒットした全ての場所で置換するか問われるので置換するならy、しないならn、置換をやめるならqと答える。M-x query-replaceでもよい。M-x queくらいまで打ってからTABを押すとあとは補完してくれる。検索する文字列を入力してRET、置換したい文字列を入力してRETと打てばよい。
  • M-x replace-string : 現在のカーソル位置以降で検索にヒットするものを問答無用で全部置換する。"replace all"みたいな気持ち。
  • M-x replace-regexp : 入力は正規表現を受け付ける。これの何が嬉しいかというと、「行頭の"a"だけ消したい」とか「全ての行末に"!"を追加したい」とか「TABを一気に別の文字に変換したい」のような、不可視文字に対する操作だって楽々できるところ。
    TODO: 正規表現の各コマンドをメモしておく
  • M-x untabify : 選択した範囲内のタブを全てスペースで置き換える。タブ幅などの見た目は変わらないのでとてもよい。
    参考: タブをスペースに変換する(untabify) - かわちょ日記

行数の表示

  • M-x linum : 画面の左側に行番号を表示する

ウィンドウ分割

  • C-x 2 : 縦に2分割
  • C-x 3 : 横に2分割
  • C-x 0 : 分割をやめる

バッファ

  • C-x k : バッファを削除する

qiita.com

ghostscript - gs_init.ps がないと言われた

gs_init.ps がない

ps2pdf (https://webkaru.net/linux/pdf2ps-ps2pdf-command/) を使おうとしたら、

GPL Ghostscript 9.19: Can't find initialization file gs_init.ps.

と言われてしまったのでいろいろ解決策を探してみました。
Ghostscript: Ghostscript は私は Homebrew — macOS 用パッケージマネージャー で入れているのですが、どうやらうまくリンクが貼れていない様子でした。

qiita.com これを参考にさせていただいて解決しました。

以下、雑なメモです

ghostscript のバージョン

2017年10月18日時点だと(ちゃんとbrew upgradeしてあるので)バージョン9.22が最新のはずですが9.19のまま。ちゃんとリンクが貼れていない模様。

$ gs -v
GPL Ghostscript 9.19 (2016-03-23)
Copyright (C) 2016 Artifex Software, Inc.  All rights reserved.

現在の ghostscript はどこにいるのか

$ ls -al $(which gs)
(略) 2017 /usr/local/bin/gs -> /usr/local/bin/gs-X11

マシンにインストールしてあるバージョンを調べる

Homebrewでインストールしたのであれば Cellar の中にあるはずです。

$ ls /usr/local/Cellar/ghostscript/
9.20  9.21_3  9.21_4  9.22

9.22が今のところ一番新しいっぽいのでそれに乗り換えることにします。
ちなみに、最新版以外のディレクトリを削除したいと思ったら、

$ brew cleanup

をすると、最新版以外は削除されるのですっきりします。私は久々にやってみたら 4.2GB も掃除できました。

乗り換える

$ ln -s /usr/local/Cellar/ghostscript/9.22/bin/gs /usr/local/bin/gs
$ gs -v
GPL Ghostscript 9.22 (2017-10-04)
Copyright (C) 2017 Artifex Software, Inc.  All rights reserved.

うまくいったみたいです! このあとちゃんと ps2pdf も動きました。

mac で mts 形式を連結して mp4 に変換するまで

iMovie とかは使わずに、ターミナルを立ち上げてフリーソフトをインストールしてコマンドで変換します。

そもそも

mts 形式って、ビデオカメラで撮影した時の動画の拡張子です。いろいろあるんですね。

mts ファイルの連結

ビデオカメラで撮影したファイルがいくつかに分かれていたのでまずはつなげます。
cat コマンドで繋げたいファイルを列挙して、出力先ファイルを > の後に書きます。

cat file1.mts file2.mts file3.mts > connected.mts

catコマンドは mts ファイルに限らず、他の拡張子でも連結できます。テキストファイルとか。
で、ファイルを連結したのはいいんですがなぜか Quick Time Player だと「不明なエラー(1718449215)」とかいうのが出てきて再生できないんですよね。 Official Download of VLC media player for Mac OS X - VideoLAN (あの三角コーンのアイコンのアプリ) なら再生できるので、とりあえずよしとしておきましょう笑

mts を mp4 に変換

FFmpeg というツールを使います。Homebrew — macOS 用パッケージマネージャー をつかっているなら

brew install ffmpeg

でインストールできて、

ffmpeg -i file1.mts -s 1280x720 converted.mp4

これで変換できます。「file1.mts というファイルを、1280x720 のサイズで converted.mp4 というファイルに変換して出力する」という感じです。-i が入力ファイルの設定で、-s が出力サイズの設定ですね。サイズ指定の時は、[幅][小文字のエックス][高さ]で指定できます。
オプションの詳しいところは FFmpeg - Wikipediaffmpeg Documentation (英語) をご覧ください。

動画サイズは自分で好きなように設定できるとはいえ、一般的な動画サイズの方がよさげですね。mts形式だったらビデオカメラで撮っているはずなので元サイズはおそらく 1440x1080 のはず (HDV 1080i というやつ) です。詳しくは以下をどうぞ。

bindcamp.digitalstage.jp