
セクションの相互参照をシンボルにしたいのですが、指定された説明を使用した後、入力エンコーディング 'utf8' で使用されているキーボード文字が未定義であるというエラー レポートが表示されました。解決策は何でしょうか?
答え1
パッケージを使用して、utf8 でエンコードされたテストを LaTeX (標準の TeX エンジンを使用) でタイプセットしようとするとinputenc
、次のようになります。
- LaTeX は、ドキュメント内の文字に応じて 1 つ以上の 8 ビット文字を適切な数だけ読み込んで、utf8 文字を解析します。
- これにより、LaTeXは特定のUnicode番号(計算後)を持つUnicode文字を取得します。たとえば、
00A1
- ここで、LaTeX はこの文字をタイプセットしようとしますが、そのためには、Unicode 文字を表すグリフを実際に含まれているフォント (ロード済み) が必要です。
- LaTeX はその事実を知る必要があります。
- LaTeX は、次の形式の宣言を多数介してこれを学習します
\DeclareUnicodeCharacter{00A1}{\textexclamdown}
。 - これは、Unicode 番号を LaTeX 内部文字表現 (LICR) に変換します。
- しかし、この文字を印刷するために使用できるグリフがない場合、これはあまり役に立ちません。したがって、この
inputenc
パッケージは、その文字を含むフォントがロードされている Unicode 文字のみを設定します。 - たとえば、
T1
経由でエンコードされたフォントをロードする\usepackage[T1]{fontenc}
と、LaTeX は内部的に ファイル で定義されているすべての宣言をロードしますt1enc.dfu
。(確立された LaTeX フォント エンコーディングごとに、対応するファイルが存在します.dfu
。) - しかし、Unicode は膨大な数の文字をカバーしているため、LaTeX で使用されるフォント エンコーディングに含まれない文字を文書に挿入すると、この Unicode 文字が設定されていないことを知らせるエラー メッセージが表示されます。
では、特定のドキュメントでこの問題を解決するにはどうすればよいでしょうか?
- 最初のステップは、LaTeX が認識できない文字の Unicode 番号を特定することです (これはエラー メッセージに表示されるはずです)
- 2 番目のステップは、少し複雑ですが、この文字を実際に含む TeX フォントがあるかどうか、またこのフォントのエンコーディングが何であるかを判断することです。ここでは適切なアドバイスはありませんが、標準の LaTeX フォント エンコーディングを説明するドキュメントがいくつかあります。
- あるいは、少なくとも および のエンコーディングをドキュメントに追加してみる
T1
とTS1
、問題が解決する可能性があります (かなり一般的な「西洋」文字の場合)。 - また、文字を「偽装」できる場合もあります。たとえば、何らかのハイフン (Unicode にはさまざまなハイフンがあります) があり、エディターが LaTeX で認識されないハイフンを追加した場合、
\DeclareUnicodeCharacter
2 番目の引数に実際に存在する置換文字を含む宣言を追加できます。
そうでなければ、唯一の答えは、別の文字を使用するか、完全に Unicode 対応で、大きな文字セットを持つ Unicode フォントにネイティブにアクセスできる TeX ベースのエンジンを使用することだと思います。
これに関するより詳細なドキュメントは、ドキュメント化されたソース コードにあります。utf8ienc.pdf
これは、LaTeX ディストリビューションに含まれているか、.dtx
ファイルから生成できます。
答え2
友人がラテン語の詩に関する本をタイプセットしようとしていて、ōやŏ(のような長さ記号付きの母音を直接使用したいと思ったときにも同じ問題がありました。ロンガそして短い)。
私が見つけたトリックはパッケージにまとめられていました。newunicodechar
。
言う
\usepackage{newunicodechar}
\newunicodechar{ō}{\={o}}
\newunicodechar{ŏ}{\u{o}}
まさに同じことをする
\DeclareUnicodeCharacter{014D}{\={o}}
\DeclareUnicodeCharacter{014F}{\u{o}}
ただし、Unicode テーブルを検索する負担は軽減されます。
もちろん、置換テキストの内容が、ロードしているフォントで実際に生成できることを確認する必要があります。これは、「セクション マーク」の場合に当てはまる可能性があります。
参照文字を引数として受け取り、それをアクティブにして、\def するマクロ。
このパッケージを使用すると、別の利点があります。文書の処理にXeLaTeXまたはLuaLaTeXに切り替えたい場合、次のような文字が