マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

pLaTeX で安心してスヤァ…する方法

どうやら最近 preview や standalone パッケージがまた流行り出しているらしいので、何かこれでネタを出す必要があるようだ。

さて、pLaTeX を使っていると、時々 ( ˘ω˘ )スヤァ… したくなる、というのは多くの人が経験していることだろう。ところが、( ˘ω˘ )スヤァ… のように半角カナや JIS*1にない Unicode 文字を含むものを pLaTeX で扱うには、そのためのノウハウが必要であり初級者にはなかなか難しい。また周知の通り、pLaTeX は「美しい日本語組版」を実現するために欧文と和文の間で空き調整を行うのであるが、( ˘ω˘ )スヤァ… のような顔文字は普通はベタ組*2の出力を念頭に置いて構成されているので、その辺りの対策を施す必要もあり、普通の LaTeX ユーザが ( ˘ω˘ )スヤァ… するのは容易なことではない。

一方で、XeLaTeX や LuaLaTeX のような「Unicode 対応の LaTeX」では、OpenType フォントに含まれる任意の Unicode 文字を使えて、しかも既定では「日本語用の調整」をしないので、( ˘ω˘ )スヤァ… するには非常に都合がいいが、それらを用いてまともに日本語を組むにはそのためのノウハウが要る。*3

このジレンマを打破して pLaTeX で安心して ( ˘ω˘ )スヤァ… する方法はないものであろうか? 解りやすい解決法の一つとして「( ˘ω˘ )スヤァ… を PDF 画像にする」というものが考えられる。

  • XeLaTeX(や LuaLaTeX)で ( ˘ω˘ )スヤァ… を含む文書をコンパイルして PDF ファイルを作る。この時に preview や standalone を利用して ( ˘ω˘ )スヤァ… の部分のみを含むタイトな PDF 画像を作成する。
  • その ( ˘ω˘ )スヤァ… を pLaTeX 文書内で \includegraphics 命令を用いて読み込む。

では早速 ( ˘ω˘ )スヤァ… してみよう。まずは XeLaTeX と standalone クラスを用いて「( ˘ω˘ )スヤァ… 画像」を作る。

[suyaa.tex]

% XeLaTeX 文書; 文字コードUTF-8
\documentclass[varwidth]{standalone}
\usepackage{fontspec}
\setmainfont{IPAexMincho}% IPAex明朝
\begin{document}
( ˘ω˘ )スヤァ…
\end{document}

このソースファイルを「xelatex suyaa.tex」でコンパイルすると PDF ファイル suyaa.pdf が得られる。次にこれを読み込む pLaTeX 文書を用意する。

[text-suyaa.tex]

% pLaTeX 文書(文字コードは適切に)
\documentclass[a4paper,dvipdfmx]{jsarticle}
\usepackage{graphicx}
% 長さの部分は適当に調整する.
% zw単位にしているのは文字サイズに追随させるため.
\newcommand*{\xSuyaa}{\raisebox{-0.12zw}{%
  \includegraphics[height=1zw]{suyaa.pdf}}}
\begin{document}
「ハロー、{\pLaTeX}!」\par{\xSuyaa}\end{document}

このソースファイルをコンパイルすると以下のような出力が得られる。


( ˘ω˘ )スヤァ…

*1:そう、「いわゆるJIS」。

*2:そう、「いわゆるベタ組」。

*3:さらに問題なのは、xeCJK や LuaTeX-ja 等の「日本語対応」パッケージを導入すると、結局「日本語用の調整が顔文字の出力を邪魔する」という pLaTeX と同様の事態が生じて、それに対応するための知識が必要となることである。