MacBook Pro 設定メモ(2)

設定の続き。ところで、シャットダウンしていたのに、MacBookのディスプレイを開いた途端、自動起動し始めたのには驚いた。検索したところ、自動起動を止めることも可能らしい。今のところ、自動起動でも良いから、このままにしておくけど、止めたくなったときのためにメモ。自動起動を止めるには、ターミナルで、

sudo nvram AutoBoot=%00

とする。逆に、自動起動を有効にするには、

sudo nvram AutoBoot=%03

とすれば良いらしい。

あと、これも変更するか迷っているのが、コンピューターの名前。最初の設定のとき、Apple IDを入れると、コンピューターの名前は自分の本名になった。別に不都合はないのだが、例えば、本名が仮に「山田太郎」として、アカウント名として foo という名称を選んだとしよう。そうすると、ターミナルからShellを起動したとき、foo@taroyamada と、本名のローマ字表記がプロンプトの前に常に表示されるのだ。これは鬱陶しい。幸い、ここを変更するのは簡単なようだ。(ちなみに、アカウント名を変えるのは少し面倒らしい。) システム環境設定からユーザーとグループを選び、鍵を開いたあと、自分のアカウントを右クリックして詳細に進む。そうすると、フルネームという項目があるので、ここを変えれば良い。ちなみに、アカウント名はグレーになっていて変更できない。他にも、ログインシェルという項目がある。デフォルトでは、/bin/zsh となっているが、ここを /bin/bash にすれば、以前のように、bashをデフォルトのシェルにできるのだと思う。

ということで、フルネームは変更した。ログインシェルは、どうするか様子見。

[追記]フルネームを変更したが、変化はなかった。調べた結果、ユーザーとグループではなく、共有の設定を変えるべきだった。システム環境設定から共有に進むと、一番上に、コンピューター名という項目がある。ここに「誰それ(本名)のMacBook Pro」などと書かれているのだった。これを変更したら、ファインダーのサイドバーも、シェルでの文字列も変更された。

MacBook Pro 設定メモ (1)

昨日の土曜日、新しいMacBook Pro 13インチが届いた。画面もレティーナで綺麗だし、メモリー16GB、SSD512GBと言うことはない。USB-C端子も4個あるので、1個を電源に取られても、大丈夫だと思う。

ということで、ハード面では文句ないのだが、仕事で使えるように以前の環境と同じにするのが、一苦労だ。実は、Safari開いて、自分のサイトのWordPressダッシュボードに来たのが、最初の作業なのだが、日本語変換がライブ変換とかいうのになっていて、なんじゃこれは〜という位に以前とは違っている。すごい技術なのかもだが、うーむ。どうしようかな。ちょっと鬱陶しい感じもする。変換候補がタッチバー?だっけ、それに表示されるのも、ちょっと驚いた。iPhoneみたいだな。

前振りが長くなった。とりあえず、スクロールの向きから何とかせねば。

  • スクロールの向きを慣れているものにする。すなわち、Appleの言うナチュラルの逆にする。システム環境設定からマウスを選んで、スクロールの向きで、ナチュラルのチェックを外す。
  • ファインダーの環境設定から、サイドバーにファイルシステムのルートや自分のHOMEが表示されるようにする。また、ファイルの拡張子を表示させるようにする。
  • ファインダーから所謂不可視ファイルが見えるようにする。これをやっとかないと、UNIXのログイン設定の、.profile とか、Emacsの設定とかが見えなくなってしまう。以前は、確か、ターミナルから特殊なコマンドを入力してたと思うが(過去の日記の該当箇所)、いま検索してみたら、Sierra以降のMac OSXでは「Command+Shift+ピリオド」により、トグル式に不可視ファイルを見えるように出来るらしい。実際に試してみたが、なるほど、これはこれで良いかもしれない。ということで、例の
    defaults write com.apple.finder AppleShowAllFiles TRUE
    killall Finder
    

    は、とりあえずはしないでおくことにした。

  • 自分のHOMEにおいて、Finderの表示メニューから、表示のオプションに進み、「ライブラリーを表示」にチェックを入れる。ついでに、表示項目で、作成日、更新日にチェックを入れる。他のフォルダーでも同様にしたいので、これをデフォルトにするにチェックを入れる。
  • 今、どの階層に居るか分からないと精神衛生上よろしくない。ということで、ファインダーに現在のPathを表示させるようにしたい。UNIXのpwdコマンドの代わりね。以前の自分の日記に、そのものズバリがあった。ターミナルを開き、
    defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

    として、ファインダーを再起動、あるいは同じことだが、ターミナルで上記に続いて、

    killall Finder

    とする。これで、ファインダー上部に現在のフルパスが表示される。いやあ、安心だ。どうして最初から表示しないんだろうか。そうそう、ほぼ同じことが、ファインダーの表示から「パスバーを表示」を選んでもできる。この場合、ファインダーの一番下に、現在のパスが表示される。こちらの方が便利な所は、パスの適当な所をクリックすると、その場所に移動できるところだ。

  • システム環境設定から、Bluetoothに進み、「メニューバーにBluetoothを表示」にチェックを入れる。これがあると、マウスのバッテリー状況とか分かって便利なんだよね。
  • ファインダー上で、その場所でターミナルを開きたいことが多々ある。フォルダーを選び、右クリックからターミナルを開くことも可能なのだが、Go2Shellというアプリがあり、便利なので、導入したい。と、ここまで書いてからMac App Storeで探したのだが、何と!新しいMacBook Proに入っているMac OSX 10.15.4 Catalina では動作しないらしい。残念。
    検索して、似たような機能をもつ ShellHere というのを発見。disk imageをダウンロードして、Applicationフォルダーに入れる。右クリックして開くを押すのだが、セキュリティーが厳しくて、なかなか開けない。何度かやって、許可を2回ほど押して、ようやく開けた。そこで、コマンドキーを押しながら、ファインダーのツールバーへドラッグする。これをクリックすれば、その場でターミナルが開く。うん、これで、Go2Shellと全く同じだ。と、ここで、びっくり。ターミナルのShellがzshになってる・・・bashじゃないんだ・・・。

とりあえず、ここでひと区切り。

Snow Leopard から El Capitan へ

復活したMacBook Airは,いまだ Mac OS X 10.9.5 (Mavericks)のままなのだが,DropboxやBox Syncのサポートが切れてしまい,いよいよアップデートしなくちゃならんなあ,という状況。ただ,/usr/local/ 以下にインストールしているTeXLiveがどうなるのか,とか心配で,踏み切れずにいる。

そこで,まず,古い予備機のMacBook Pro (mid 2009) を,Snow Leopard (10.6.8) からEl Capitan (10.11) に移行することにした。ちなみに,この機種は,ここまでしかアップデートできないらしい。ファイルのバックアップはしてあるので,El Capitan のインストール用pkgをAppleからダウンロードして,起動させて,あとは指示に従う。

インストーラーはあっさりと終了したので,あれ?と思ったが,インストール・プログラムをApplicationフォルダーに作っただけだった。それを起動させる。けっこう時間掛かったが,何とか無事に移行できたようだ。そうそう,クリーン・インストールと迷ったが,今回は上書きでEl Capitanをインストールした。

例によって,初期設定が使いにくいので,ファインダーの設定を変えたり,いろいろ。一番肝心なTeXシステムだが,何と,/usr/texbin が消えていた!ただし,これは /usr/local/texlive/2019/bin/universal-darwin のシンボリック・リンクなので,新たに作ればよいのだが,どうも,/usr/ 以下は,セキュリティ強化の関係で,自由に書き込めないらしい。(詳しくはわからないのだが。) ただし,/usr/local/ 以下はOKらしく,TeXLive本体も無事だった。このあたり,正確なことがわからないのだが。

実害としては/usr/texbinだけなので,これを最近のTeXShopデフォルト?の /Library/TeX/texbin に変更すれば大丈夫だろうと思う。

ということで,しばらく実験して大丈夫そうだったら,MacBook Airの方も,El Capitan あるいは Sierra にアップデートしようかなと思う。

MacBook Airの修理

先日,突然 Mac が起動しなくなった。MacBook Air 11インチ (mid 2011) である。そろそろ買い替えすればと言われつつ,まだまだ快適に使っていた。症状は,電源入れると ジャーン という例のFシャープ(だっけ?)メージャーの起動和音が4秒間隔で繰り返し,いっこうにブートしないというもの。検索すると,ロジックボードの故障らしい。あちゃー。これは重症だ。

丸の内のアップルストアに持ち込んだのだが,何とサポート期限を過ぎている機種のため,どうしようもないという。データー保存のために,内蔵のSSDを取り出しましょうか?と親切な申し出あるのみ。いやいや,バックアップは取っているので,それは必要ない。仕方ないので,そのまま帰宅。

あれこれ検索して,問い合わせしてみる。よくある症状らしく,CPUあるいはチップセットのハンダにクラックが生じることによる接触不良が原因であることが多いらしい。その場合,修理といってもロジックボードの交換になるというショップが多かった。アップルでも部品がないというくらいだから,中古のロジックボードなのだろう。在庫がないときは,米国から輸入するので,1,2ヶ月かかるとか。迷ったが,もうすこし調べることにした。

その中で,修理してくれるところを見つけた。CPUとチップセットのハンダを付け直す,リボールという高度な技術を必要とする作業らしい。今回,それを依頼して,無事に復活して戻ってきた。ついでにバッテリー交換もお願いできたのは,ラッキーだった。

それにしても,技術があるって素晴らしいなあと,つくづく感じた。

UbuntuでTeX環境を整備するメモ

[備忘録]まったく同じには出来ないが,Mac上で整備したTeX環境とほぼ同じものをUbuntuでも使いたい。またやることになると思うので,メモ。

カスタマイズする内容は,自前のスタイルファイル,日本語フォント。なお,Ubuntuは16.04LTSであり,TeXLive 2017がインストールされている。

スタイルファイルの追加は簡単。TeXLive本体に追加すると,アップデートしたときに,また同じことをする羽目になりそうだから,別の場所に入れる。TEXMFLOCAL でも良いのかもしれないが,TEXMFHOME に入れることにした。
kpsewhich -var-value TEXMFHOME とすると,/home/hoge/texmf (hogeの部分は自分のアカウント) と出るので,ここに追加する。/home/hoge/texmf/tex/platex 以下にスタイルファイル群を入れて,texhash して終了。
ちなみに,TEXMFHOMEは自動的に決まるのではなく,/usr/local/texlive/2017/texmf-dist/web2c/texmf.cnf というファイルで指定されている。

フォントは面倒。TEXMFHOME/fonts/ 以下に,enc, map, tfm ,vf, type1, truetype, いろいろ設置する。これらを認識させるためには,updmap-sys でmapファイルを読み込んで,設定させることになる。updmap-sys が読むファイルとして,TEXMFHOME/texmf/web2c/updmap.cfg というファイルを新たに作り,そこに,例えば,KanjiMap tashotai.map などと書き込む。そして,updmap-sys とすればよい。今回は,Macからコピーした。中身は,

jaEmbed hiragino-pron
jaVariant -04

KanjiMap tashotai.map
Map MinionPro.map

なのだが,最初の2行は自分で書いた記憶がない。大丈夫なのだろうか。まあ,しかし,これで updmap-sys したところ,ちゃんとフォントも埋め込まれたので,良しとしよう。

[追記]TEXMF/texmf/web2c/updmap.cfg は,以前にMacでtexlive2017を入れたときは,kanji-config-updmap-sys –jis2004 hiragino-pron というスクリプトで生成されたものだったようだ。それに自分で,tashotai.map と MinionPro.map の行を追加したらしい。記憶が曖昧だが。

TextMate2メモ(4) LaTeX Bundleの変更(別バージョン)

TextMateのLaTeX bundleで,LaTeXの実行を指示している箇所が texmate.py にあるので,そこを直接修正することで uplatex での組版ができるようにした。具体的には,pdflatexが選択されているときは,これをptex2pdfで置き換え,また,latexが選択されているときは,これをuplatexで置き換えた。また,latexのあとは,dviをpdfに変換するのだが,dvi2psとps2pdfの組合せの代わりに,dvipdfmxを使うように変更した。具体的は変更は以下の通り。

編集するファイルは,
~/Library/Application Support/TextMate/Managed/Bundles/latex.tmbundle/Support/bin/texmate.py
補助的な関数の定義のあと,914行目からメインのルーティンが始まる。command の種類によって,様々な処理を行うようになっているが,メインは command が latex の場合。そこで,途中の
elif command == 'latex':
以下のブロック(1044行目あたり以降)を次のように書き換えた。

    elif command == 'latex':
        engine_options = construct_engine_options(typesetting_directives,
                                                  tm_engine_options, synctex)
        if engine == 'latex':
            engine = 'uplatex'
            engine_options = "-shell-escape -synctex=1 -interaction=nonstopmode"
        elif engine == 'pdflatex':
            engine = 'ptex2pdf'
            engine_options = "-u -l -ot \"-interaction=nonstopmode -synctex=1 -file-line-error -shell-escape\" "

        command = "{} {}".format(engine, engine_options)
        status = run_latex(command, filename, cache_filename, verbose)
        tex_status, fatal_error, number_errors, number_warnings = status
        number_runs = 1

        if engine == 'latex':
        #    call("dvips {0}.dvi -o '{0}.ps'".format(file_without_suffix),
        #         shell=True)
        #    call("ps2pdf '{}.ps'".format(file_without_suffix), shell=True)
            call("dvipdfmx {0}.dvi", shell=True)
        if tm_autoview and number_errors < 1 and not suppress_viewer:
            viewer_status = run_viewer(
                viewer, filepath, pdffile_path,
                number_errors > 1 or number_warnings > 0 and
                tm_preferences['latexKeepLogWin'],
                'pdfsync' in packages or synctex, line_number)

TextMate2メモ(3) LaTeX Bundleの変更(簡易版)

TextMateのLaTeX bundleは,platex, uplatexをサポートしていない。また,デフォルトはpdflatexとなっている。自分が使いたいのは,uplatexなので,最小限の手間でこれが使えるようにした。実際には,ptex2pdf を使うことにした。これが uplatex, dvipdfmx を順に呼び出してPDFを作るので,pdflatexと同じというわけだ。

~/Library/Application Support/TextMate/Managed/Bundles/latex.tmbundle/Support/lib/Python/tmprefs.py を編集する。36行目からの

        self.default_values = {
            'latexAutoView': True,
            'latexEngine': "pdflatex",
            'latexEngineOptions': "",
            'latexVerbose': False,
            'latexUselatexmk': True,
            'latexViewer': "TextMate",
            'latexKeepLogWin': True,
            'latexDebug': False,
        }

を次のように書き換えた。

        self.default_values = {
            'latexAutoView': True,
            'latexEngine': "ptex2pdf",
            'latexEngineOptions': '-u -l -ot "-synctex=1 -file-line-error -shell-escape"',
            'latexVerbose': True,
            'latexUselatexmk': False,
            'latexViewer': "TextMate",
            'latexKeepLogWin': True,
            'latexDebug': False,
        }

ポイントは,デフォルトのlatexEngineをptex2pdfにして,デフォルトのlatexEngineOptionsを-u -l -ot “-synctex=1 -file-line-error -shell-escape” にしたこと。これで,とりあえずコンパイルできる。ただし,コンソールを見ると,冒頭部分に,
Multiple filename arguments? OK, I’ll take the latter one.
と出力されるので,良きに計らってはくれているものの,パラメーターが正しく渡されていないようだ。

TextMate2メモ(2)

TextMateのLaTeX bundleに変更を施すことにした。これはGitHubで公開されている。GitHubのLaTeX Bundleサイト によれば,TextMateでインストールしたものを一旦アンインストールし,しかるのちに,Git Cloneすべし,とのこと。

そこで,まず,アンインストール。そして,~/Library/Application Support/TextMate/Managed/Bundles/ に行って,ターミナルを開き(あるいは,ターミナルから,

cd ~/Library/Application Support/TextMate/Managed/Bundles/

として) そこで,git clone する。つまり,

git clone https://github.com/textmate/latex.tmbundle.git

とする。拡張子 tmbundleはファインダーから見ると1個のファイルのようだが,実はこれはディレクトリー。ターミナルからls -alするとわかる。そこで,中に入っていくと,いろんなファイルを見ることができる。

ということで,GitHubから落としてきたものに対して変更を加えることにする。

TextMate2メモ(1)

そういえば TextMate というプログラマー御用達のエディターがあったなあ,と検索。以前は日本語が使えなかったと思うが,最新のTextMate2 では普通に日本語が使えるらしい。LaTeX Bundleもあるが,デフォルトがpdflatexで,platex, uplatexは選べない。

ちょっと工夫すれば,uplatex でのコンパイルも出来るようだ。以下,メモ。

一番お手軽なのは,TeX文書の冒頭に,

%!TEX TS-program = ptex2pdf
%!TEX TS-options = -u -l

と,UNIXのshebang的な指示を加えること。ただし,これはエディターによって形式が異なり,TextMateのものは,TeXShopやSublime Textのものとは少し異なっているようだ。できれば,これじゃなく,LaTeX Bundleに手を加えてみたい。

Sublime Text 3でのAsymptote Syntax Highlighting 改訂版

ちょっと要領が分かってきたので,Emacs版のAsymptote Syntax Highlighting に近づけるように改訂版を作ってみた。

ATOM版のSyntaxの元になっているのは,asy -l > asy.list で生成される asy.list というファイル。これに,変数やら関数やらの一覧が載っている。ところで,Asymptoteをビルドするための本家の一式を見ると,Makefileに,次のような箇所がある。

asy-keywords.el: asy
        @echo Creating $@;
        $(ASY) -l > asy.list
        ls $(addsuffix /*.asy,$(KEYWORDS)) | grep -v plain\* | \
          grep -v three_\* | grep -v featpost3D | xargs $(ASY) -l >> asy.list
        perl ./asy-list.pl asy.list 2.09svn

これを見ると,asy -l で生成された asy.list にさらに幾つかのキーワードが追加されているようだ。そして,こうして出来た asy.list を用いて,Emacs用の keywords.el が作られている。そこで,ATOM版の作成スクリプトに変更を加えて,増補されたasy.listを使って,Asymptote.csonを生成するようにした。あとは前回と同様にして,JSONに変換したのち,JSON-tmLanguage にして,最終的に tmLanguage に変換した。そのままだと,syntaxファイルとして認識できない箇所があったので,real[]といった[]を含む箇所をコメントアウトするなり,適当に手を加えた。出来上がりはまずまずだと思う。