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
このコマンドを何度も押すと
OVERVIEW
→ CONTENTS
→ SHOW ALL
→ OVERVIEW
→ …
というように切り替わります。OVERVIEW が大見出しのみ表示、CONTENTS が大見出し・小見出しの表示、 SHOW ALL が本文も含めた全体を表示、となっています。
カーソル位置の見出しの折りたたみ
C-i
現在のカーソル位置の見出しを折りたたみます。何度も同じコマンドを繰り返すことで、
FOLDED
→ CHILDREN
→ SUBTREE
→ FOLDED
→ …
と切り替わります。FOLDED は現在の見出し以下を全て折りたたみ、CHILDREN は自分以下の小見出しの表示、SUBTREE は現在の見出しを本文まで全て展開します。
参考にさせていただきました: emacs.rubikitch.com
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ポかな" などがひとまとめになって入っていたようです。游明朝ミディアムの設定をする
明朝体用の設定を\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 か
- Homebrew で BasicTeX をインストール
- 必要なパッケージを tlmgr で個別にインストール
- tlmgr の使い方
- ヒラギノフォントを扱えるようにする
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 以降では platex は platex パッケージに分離されました。 このため,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 update
:tlmgr
のアップデート。
--self
オプション:tlmgr
コマンド自体のアップデートを行います。--all
オプション:tlmgr
で管理しているパッケージ全てのアップデートを行います。大抵、かなり時間がかかるので暇な時にやるのがよいです。
ヒラギノフォントを扱えるようにする
以下のサイトの手順を踏んでうまくいきました。
私の場合は BasicTeX を入れたので、上のページ内のjfontmaps/Makefile
の1行目TEXMF
に相当する部分はTEXMF = /usr/local/texlive/2017basic/texmf-local
でした。
また、上のサイトの元になっている github リポジトリは以下。
- GitHub - texjporg/jfontmaps: font maps for dvipdfmx
こちらにフォントを設定する際の引数一覧がある。 - GitHub - texjporg/cjk-gs-support: Scripts to ease the use of CJK fonts with GhostScript
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 だと、リスト一覧の表示のところで、各リストを選択すると右端に鉛筆のマーク(編集ボタン)が出てきます。
鉛筆マークをクリックするとそのリストの設定のパネルが出てくるので、「リストのオプション」をクリック。
そして「マナーモード」にチェックを入れれば完了。
これで通知がうるさくなくなりました。
Aquamacs 立ち上げても init.el が読み込まれないんですが
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 メニューからオプションを選択したときに自動的に書きかわるファイルです。ご注意を。
参考サイト
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 C-b
: バッファ一覧を表示する List Buffers - GNU Emacs ManualC-x k
: バッファを削除する