latex で ☺︎ (簡単な絵文字) を表示する方法

latex で絵文字(特にちょっとシンプルな顔の絵文字)を表示するための方法の備忘録です。 tikzsymbols というパッケージを使います。 (latex でスライドを作ることができる beamer でも同様の方法でできます。)

PDF のドキュメント の 「emoticon」という節を見ると、 かなりたくさんの絵文字のコマンド一覧が載っています。

これを使うには、 プリアンブルで使いたいパッケージ名を指定します。

\usepackage{tikzsymbols}

その後、本文で以下のように使います。

\Smiley \Neutrey \Sadey \Xey \Cooley

組版すると、このように表示されます。かわいい。 f:id:saphir_jaune:20200126225033p:plain

beamer の表で縦方向に中央揃えしたい

latex を使ってスライドを作ることができる beamer という仕組みがあるのですが、 スライドの中で表を出そうとすると文字が若干上にずれることがあります。 そこで、縦方向の中央揃えをするために parbox というコマンドを使うとうまくいくようです。parbox には追加パッケージは必要ありません。

parbox は以下のようにして使います。

\parbox[縦方向の上
・中央・下揃え][行の縦幅][box の中での配置]{テキストの幅}{表示したいテキスト}

[] で囲まれたオプションはなくても動きます。{}で囲まれたオプションは必ず書いてください。

  • 「縦方向の上・中央・下揃え」には、それぞれtcb と指定します。デフォルトは t です。
  • 「box の中での配置」 は、何も指定しなければ「縦方向の上・中央・下揃え」と同じオプションが指定されます。

また、parbox のページにも書いてありますが、 parbox コマンドの引数の「表示したいテキスト」の中にはあまり複雑なコマンドなどは書かない方がいいみたいです。

例えば、こんな感じで使えます。 ちなみに、zh は「現在の全角漢字の縦幅」、zw は「現在の全角漢字の横幅」を表すコマンドです。

\begin{frame}
  \begin{itemize}
  \item parbox を使ってみる
  \begin{table}[]
    \begin{tabular}{|l|l|l|}\hline
      \parbox[c][1zh]{6zw}{parbox を使う} & parbox を使わない \\ \hline
      \parbox[c][1zh]{2zw}{中央} & ちょっと上 \\ \hline
      \parbox[c][3zh]{6zw}{縦方向の中央} & 真ん中のちょっと上 \\ \hline
    \end{tabular}
  \end{table}
  \end{itemize}
\end{frame}

組版すると、このようになります。太い縦幅の表に 1 行だけ書いて中央揃え、ということもできていますね! f:id:saphir_jaune:20200126214544p:plain

TeX 2017 から 2019 へ (MacOS Mojave)

これまで BasicTeX 2017 を使っていたので、なるべく既存のものを残しつつ 2019 にアップデートしていきます。当然、TeX Live 2017 のリポジトリは freeze されているので、普通の sudo tlmgr udpate --self --all はできません。

公式ページ (https://tug.org/texlive/upgrade.html) に update の方法が載っているのを発見したので、それにしたがって update していきます。また、この ブログ もとても参考にさせていただきました。個人的な備忘録も兼ねて、公式の手順の後ろに私の環境で何をしたか・何が起きたかを書いておきます。

目次:

アップデート

Step 1

Unix

  • Find the parent directory of the current installation; it's /usr/local/texlive by default.

私の環境では基本的に BasicTeX だけを入れてあるので、 /usr/local/texlive/2017basic/ というディレクトリがあるようです。

Step 2

  • Copy the whole directory 2018 to 2019, preserving symbolic links; for example:cp -a 2018 2019. If you don't understand this, stop here and do a regular installation.

2018 フォルダはないので、とりあえず 2017basic/2019basic/ にコピーします。シンボリックリンクのためにも cp -a オプションをつけておきます。次の手順でも言われているように、万が一のとき戻れるように前のバージョンのフォルダを残しておくのも大事です。もしこれ以降のどこかで詰まったら普通に全消ししてクリーンインストールしようという気持ちで進んでいきます。

Step 3

  • To save some space, you can exclude tlpkg/backups/* or remove them from the 2019/ directory afterwards. (Theoretically, you could rename 2018 to 2019, but we strongly advise against this, since you may lose your existing installation with no good way back.)

素直に従って rm -rf tlpkg/backups/* します。

Step 4

  • If you installed symlinks in system directories (via the installer option or tlmgr path add), remove them now with tlmgr path remove.

これまで tlmgr path add をした記憶はあまりないのですが、一応 remove しておきます。(何も起きませんでした)

Step 5, 6

  • As needed, adjust your PATH in your startup files to point to .../2019/bin/*platform*/ instead of .../2018/....

  • Log out and log in, and confirm that your PATH now has the 2019 directory. This is crucial. Your PATH must use the new location.

手順5で言われているような platform というものは、私の環境では x86_64-darwin のことを指しているようです。とりあえず、まずは PATH に登録されているものを確認します。確かに登録されています。

$ echo $PATH | tr ':' '\n'
...
/usr/local/texlive/2017basic/bin/x86_64-darwin

一応念のため、環境変数tex という文字列を含むものを検索してみます。私の結果では PWDOLDPWDPATH でヒットしました。

$ export -p | grep -i tex

しかしこの中で重要な環境変数はどうやら PATH らしいので、それの更新を行います。作業をしていて気がついたのですが、PATH は「どのディレクトリに TeX をインストールしますか」というのを定めているっぽいので、この手順は大事なようです。

$ export PATH=/usr/local/texlive/2019basic/bin/x86_64-darwin:$PATH

再度確認すると、ちゃんと登録されています。

$ echo $PATH | tr ':' '\n'
/usr/local/texlive/2019basic/bin/x86_64-darwin
...

Step 7, 8

  • cd to your top-level .../2019 directory.

  • Download the latest update-tlmgr-latest.sh and run it like this: sh update-tlmgr-latest.sh -- --upgrade (The extra options are to try to prevent the upgrade from happening unintentionally.)

まずは、tlmgr コマンドそのものをアップデートしていきます。必要に応じて sudo をつけます。

$ wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
$ sh update-tlmgr-latest.sh -- --upgrade

Step 9

  • If you don't want to use the default repository (that is, not the automatic CTAN redirection) for downloading the new files, run (as usual): tlmgr option repository *yourrepo*

この手順では、「tlmgr コマンドが、どのオンラインリポジトリからファイルをとってくるか」を設定します。自分に一番近いミラーサイトを知るために、ブラウザで http://mirror.ctan.org/systems/texlive/tlnet にアクセスしてみます。私の場合は JAIST か山形大のウェブサイトに飛んでいくようなので、リダイレクトしたページのリンクをコピーして、下のコマンドを実行します。

$ tlmgr option repository http://ftp.yz.yamagata-u.ac.jp/pub/CTAN/systems/texlive/tlnet/

ここまできたところで、tlmgr がちゃんと動きそうかを確認します。下のように全て 2019 っぽい感じに表示されれば OK です。tlmgr using installation の部分は、ローカル環境のインストール先を示しているらしく、PATH の内容がここに反映されるようです。

$ tlmgr version
tlmgr revision 51555 (2019-07-05 00:23:27 +0200)
tlmgr using installation: /usr/local/texlive/2019basic
TeX Live (http://tug.org/texlive) version 2019

Step 10

  • Run (with patience, it will be downloading all the new material): tlmgr update --self --all

おなじみの sudo tlmgr update --self --all をします。私の環境では 199 個の変更が起きました。

Step 11, 12

  • Remake the lualatex/fontspec cache:luaotfload-tool -fu

  • If you want symlinks in system directories (not recommended), run tlmgr path add.

LuaTeX は使っていないのですが、一応手順11に従っておきます。手順12はスキップしました。

When you are happy with how the new TL is working, if you wish you can remove the old installation by running .../2018/.../tlmgr uninstall (full tlmgr doc). Not recommended, since you might always find a document that doesn't work with the new version, just at the wrong time…

Good luck, and to reiterate from the top, don't do any of this if it doesn't make sense to you. Just do a fresh installation.

テスト

ここで pdflatexuplatex のテストをしたところ、fmt ファイルが違うよと怒られます。

This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdflatex)
 restricted \write18 enabled.
---! /usr/local/texlive/2019basic/texmf-var/web2c/pdftex/pdflatex.fmt made by different executable version
(Fatal format file error; I'm stymied)

このサイト によると、いくつかのバイナリが現行の TeX Live と違うのでビルドできないよ、ということらしいです。そこで下のコマンドを実行します。

$ fmtutil-sys --all

これで一応通るようになりました。

蛇足

よく見ると、先ほどのエラーでは、\write18 というものが enabled になっているぞという warning も出ています。What does “restricted \write18 enabled” mean and why does TexLive keep reporting it? によれば write18 は結構気をつけたいものだったのですね……

Emacs のバッファ一覧を作業中のバッファで見たい

Emacs でバッファ一覧を表示するコマンドCtrl-x Ctrl-b を打つと、デフォルトでは、別のバッファに一覧が表示されてしまう設定になっていたのをついに解決しました…!

設定を変更する

Emacs の設定ファイル (~/.emacs.d/init.el~/.emacs など) に以下のような設定を追記します。こうすることで、デフォルトでは list-buffers という動作をしていたものを buffer-menu という動作に上書きできます。

(global-set-key "\C-x\C-b" 'buffer-menu)

設定を反映する

上のような設定をちゃんと反映させるにはいくつか方法がありますが、下の二つが簡単だと思います。

  • 設定ファイルを保存してから、Emacs を再起動する(おそらく自動的に設定ファイルが読み込まれる)
  • Emacs で設定ファイルを編集した場合のみ)設定ファイルを開いた状態で一度保存し、そのまま下のミニバッファに M-x eval-buffer と書いてエンターキーを押す(M-xmac では option キー + x です)

これで設定が反映されたはずです。

動作を確認してみる

例えば、Emacs を立ち上げてすぐの画面(私の設定ではロゴが出ないようになっているのでこの画面なのです)で、Ctrl-x Ctrl-b を打ってみると…

f:id:saphir_jaune:20190831234135p:plain

アクティブなバッファにバッファ一覧が現れました!

f:id:saphir_jaune:20190831234209p:plain

参考記事

stackoverflow.com

iTerm2 で Alt キー + 矢印キーの動作を変更したい

iTerm2 logo

最近ようやく iTerm2 を使い始めました〜。

いろいろカスタマイズできてとても使いやすいのですが、Alt キー( のことです)のデフォルト動作がターミナルと違ったので設定を変更しました。

Alt + ← や Alt + → で [D [C と入力されてしまう

ターミナルでは、 と左右の矢印キーを入力すると単語間を素早く移動できるのが便利でしたが、iTerm2 では [D [C などと入力されてしまいカーソルが思ったように移動してくれません…

iTerm2 での設定

そこで iTerm2 の環境設定から設定をしてみます。

⌘, で環境設定を開いて、 [Profiles] → [Keys] とクリックして、 ⌥→ の行をスクロールして探します。見つかったら、その行をダブルクリックします。 その後、下の表にしたがって入力し、OKボタンを押します。

Key Combination Action Esc+
⌥← Send Escape Sequence b
⌥→ Send Escape Sequence f

これで完了です!環境設定のウィンドウを閉じれば、新しい設定が反映されているはずです。

f:id:saphir_jaune:20190831221017p:plain

f:id:saphir_jaune:20190831221437p:plain

f:id:saphir_jaune:20190831221533p:plain

git submodule を使ってみる

git submodule というのは、とてもざっくり言うと git のリポジトリ入れ子のようにすることができる機能です。ポインタのような感じで、親リポジトリから子リポジトリを指し示すようになっています。 設定は .gitmodules というファイルに記載されています。

おそらく github のページでは下のようなアイコンが表示されているディレクトリが submodule です。 https://octicons.github.com/img/og/file-submodule.png

リポジトリに子リポジトリを登録する

リポジトリで以下のコマンドを実行します。

$ git submodule init # submodule を使う前にこれを言う必要がある
$ git submodule add git@github.com:[ユーザ名]/[子リポジトリ名]

ググるとおそらく一番最初に出てくる、Qiita の記事がとてもわかりやすかったです。 qiita.com

リポジトリが更新されたので、親でもそれを反映したい

リポジトリで下のコマンドを実行します。

$ git submodule update

登録していた submodule を消す

ネットを徘徊したところ、これが一番わかりやすいみたいです。(実際にこのページに行くと、この gist の下にいろんな人が "Thanks!" とメッセージを送りまくっています笑)

Emacs で一行ずつスクロールさせる

Emacs の画面を一行ずつマウスで(もしくはトラックパッドで)スクロールさせる設定を追加してみました。

~/.emacs.d/init.el などの設定ファイルに以下の内容を記入し、Emacs を再起動するとできるようになります。 再起動が面倒であれば M-x eval-buffer としてもよいです。

;; scrolling
(setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
(setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse

Emacs はデフォルトではまとめてスクロールし、次第にスクロール速度が上がっていく設定になっているようなので、

  • マウスでのスクロールを一行ずつに、そして
  • 高速化しない

という設定を書いてあげます。

スクロールの設定には

  • キーボードのコマンドによるスクロール
  • マウス(もしくはトラックパッド)によるスクロール

があるので、それぞれ別々に設定してやる必要があるようです。

www.emacswiki.org