PdfLaTeX を使用した Unicode

PdfLaTeX を使用した Unicode

Alchemy シンボルを PdfLaTeX で動作させたいと思います。iPad で Tex Writer を使用しているため、XeTeX や LuaTex にアクセスできません。ここに 2 つの簡単な例を示します。

最初のものは機能します。

    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage{textcomp}
    \usepackage[utf8x]{inputenc}

    \begin{document}
    \unichar{"00E4}
    \unichar{"20AC}
    \end{document}

これはコンパイルされません:

    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage{textcomp}
    \usepackage[utf8x]{inputenc}

    \begin{document}
    \unichar{"00E4}
    \unichar{"1F701}
    \end{document}

エラーメッセージは次のとおりです:

l.9 \unichar{"1F701}

? 
! Emergency stop.
 ...                                              

l.9 \unichar{"1F701}

Unicode character 128769 = U+1F701:
ALCHEMICAL SYMBOL FOR AIR
Character is not defined in uni-*.def files.
Enter I! to define the glyph.

Here is how much of TeX's memory you used:
 1717 strings out of 493024
 24829 string characters out of 6124273
 70825 words of memory out of 5000000
 5308 multiletter control sequences out of 15000+600000
 4403 words of font info for 15 fonts, out of 8000000 for 9000
 1141 hyphenation exceptions out of 8191
 23i,0n,17p,304b,478s stack positions out of 5000i,500n,10000p,200000b,80000s
!  ==> Fatal error occurred, no output PDF file produced!

答え1

TeX はタイプセッターです。フォントからグリフ (図形) を取り出し、ページ上のどこに配置するかを決定します。そのため、それらの図形に関する情報が TeX で利用できる必要があります。

入力を解釈するために、TeXはデフォルトでは各バイトを個別に扱います。 を使用\usepackage[utf8x]{inputenc}すると、UTF-8エンコードで指定されたように、バイトシーケンスをUnicode文字として解釈するようにTeXに指示できます。たとえば、ファイルに入力すると、TeXはあなたが意味することを理解します。Unicode 文字 U+20AC (ユーロ記号)、ファイルにはその文字の UTF-8 エンコードに対応するバイトが含まれるためです。これは、手動で を入力するのと同じです\unichar{"20AC}

しかし、特定の Unicode 文字を意図していることを理解するだけでは十分ではありません。それで何になるのでしょうか? TeX は、その文字をどう処理するかをまだ知る必要があります。

例えば:

  • ä U+00E4 分音記号付きラテン小文字 Atexmf-dist/tex/latex/ucs/data/uni-0.defは次のように定義されます\"a(TeXではこれが可能です)
  • U+20AC ユーロ記号は、TeXで利用可能なグリフを介して何らかの方法で作成されるtexmf-dist/tex/latex/ucs/data/uni-32.defように定義されています。\ifx\euro\undefined\texteuro\else\euro\fi

あなたが望むキャラクター、U+1F701 空気の錬金術記号

関連情報