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 は結構気をつけたいものだったのですね……

Bibtex 備忘録

文章を書いた TeX ファイルに何を加えれば参考文献を表示できるか、忘れないようにメモしておきます。 [更新 2020-01-28: @misc の使い方を補足しました]

手順

1. TeX ファイルに参考文献を付け加える

メインの .tex ファイルの \begin{document}\end{document} で挟まれてる部分に、

\bibliographystyle{jplain}
\bibliography{paper} % paper.bib というファイル名なら paper とかく

を加える。jplain は日本語論文でABC順で文献を並べるという意味。 詳しくは http://ideas.paunix.org/latex/latex_6_bib.htm#bibstyle をみるべし。

2. Makefile を編集

Makefile をこんな感じにする。すると、make ファイル名.pdf組版できる。

.SUFFIXES: .tex .pdf

all :
    @echo usage: make filename.pdf / make clean

.tex.pdf :
    platex $<
    pbibtex $*
    platex $<
    platex $<
    dvipdfmx $*

clean :
    rm -f *.ps *.bak *.dvi *.aux *.log *.toc *.bbl *.blg *.out *.ptb

3. Bib ファイルを作る

英語論文の引用の場合、タイトルの中でアルファベットを大文字にしたいところを {} で囲ってあげればよい。

@InProceedings{文献,
  title={{T}itle {O}f {T}he {P}ublication},
  author={著者},
  journal={ジャーナル},
  pages={227--238},
  year={2000}
}
  • このフォーマットを自分で書くのは時間の無駄なので、Google ScholarChrome 拡張が非常に便利。 chrome.google.com

  • @InProceedings, @article, @book, @phdthesis などはよく使う。ウェブサイトなどの引用は @misc が便利。

@misc{BibTex,
author={{Alexander Feder}},
title={{Using BibTeX}},
howpublished="\url{http://www.bibtex.org/Using/}",
year=2006,
note={[Online; accessed 28-Jan-2020]}
}
  • pages, author などは PAGES, AUTHOR と大文字で書いても問題ない。
  • 自分の過去の論文を引用したいが、これから収録される場合は note={to appear, 11 pages} などとすればいいらしい。

4. 引用する

.tex ファイル中で \cite{文献名} とする。引用が一つもないと、次のように「一つも引用してませんよ!」 とエラーを出してくれるので、とりあえずダミーの引用でも入れておけばよい。

This is pBibTeX, Version 0.99d-j0.33 (utf8.euc) (TeX Live 2017)
The top-level auxiliary file: sample.aux
The style file: jplain.bst
I found no \citation commands---while reading file sample.aux
Database file #1: paper.bib
(There was 1 error message)

tlmgr: Remote repository is newer than local に対処する

TeX のバージョンアップを要求される

TeX のパッケージマネージャーである tlmgr のバージョンが 2017 から 2018 に上がったために古いものはサポートされていないようです。

$ sudo tlmgr update --self
tlmgr: Remote repository is newer than local (2017 < 2018)
Cross release updates are only supported with
  update-tlmgr-latest(.sh/.exe) --update
Please see https://tug.org/texlive/upgrade.html for details.

そこで、以下のいずれかの選択肢があるのですが…

  • tlmgr そのものを 2017 から 2018 にアップグレードする
  • 2017 のまま使い続ける

セットアップがめんどくさいという非常に後ろ向きな理由ですが 2017 のリポジトリに固定して使い続けてみます。

リポジトリを固定する解決策

以下の方法にしたがってリポジトリを固定し、 TeX Live 2017 のまま使い続けることに。

tex.stackexchange.com

$ sudo tlmgr option repository ftp://tug.org/historic/systems/texlive/2017/tlnet-final
Password:
tlmgr: setting default package repository to ftp://tug.org/historic/systems/texlive/2017/tlnet-final
$ tlmgr --version
tlmgr revision 46207 (2018-01-04 19:34:36 +0100)
tlmgr using installation: /usr/local/texlive/2017basic
TeX Live (http://tug.org/texlive) version 2017

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