標準のラテックスフォント| Java用のAspose.TeX
この記事には、LaTexとともに配布された標準テキストフォントの簡単な紹介が含まれています。次に、入力およびフォントエンコーディングに対するLaTexの標準サポートをカバーします。この記事は、ラテックスのフォント処理をトレースするためのパッケージの説明と、グリフチャートを表示するための別のパッケージで締めくくります。
4.1。コンピューターモダンローマ
- Computer Modern *と呼ばれるフォントのファミリーは、TexとともにDonald Knuthによって開発されました。 1990年代初頭まで、これらのフォントのみがTexでほとんど使用でき、その結果、LaTexで使用できました。これらの各フォントには128のグリフのみが含まれているため、アクセント付きの文字を個々のグリフとして含めることはできません。したがって、これらのフォントを使用すると、アクセントのあるキャラクターをTexの「アクセント」プリミティブで作成する必要があることを意味します。この制限は英語の文書では受け入れられますが、他の言語にとって明らかな不利な点です。
これらの欠陥は、ヨーロッパのTEXユーザーにとって大きな懸念事項であり、最終的には1989年にTEXの再実装につながり、8ビットキャラクターを内部および外部でサポートしました。テキストフォントの標準の8ビットエンコード(「T1」)は1990年に開発されました。多くの異文性文字が含まれており、ラテン語のアルファベットに基づいて30以上の言語を植林できます。次に、コンピューターの最新のフォントファミリが再実装され、追加の文字が設計され、結果のフォントがこのエンコードスキームに完全に適合しました。
4.2。入力エンコードの選択: inputenc
パッケージ
単一のキーストロークを介して、または他の入力メソッド(例えば、「 `」を押してから「a」を取得するために「a」を取得する)を介してアクセントされた文字を入力できる場合、コンピューターはエディターに正しく表示されます…
…理想的には、\`a
、\^e
などを入力する代わりに、そのようなテキストを LaTeX で直接使用します。
フランス語やドイツ語などの言語では、後者のアプローチは実現可能です。ただし、ロシア語やギリシャ語のような言語の場合、これらの言語のほぼすべての文字が内部のラテックス形式としてコマンド名を持っているため、直接入力の可能性が必要です。たとえば、「\ reftextafter」のデフォルトのロシアの定義には、次のテキストが含まれています(これは「次のページ」を意味します):
1\cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt
2\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre
誰かがそのようなものを定期的に入力したいと思う可能性は低いです。それにもかかわらず、それは普遍的にポータブルであるという利点があるため、ラテックスの設置で正しく解釈できます。一方、タイピング
適切なキーボードでは、ラテックスにこの入力を理解させることができる場合は、明らかに好ましいです。問題は、ファイルに保存されているのは、上記のシーケンスに表示される文字ではなく、文字を表すオクテットであることです。さまざまな状況(異なるエンコーディングを使用)では、同じオクテットが異なる文字を表す場合があります。
すべてが単一のコンピューターで起こり、すべてのプログラムが同じ方法でファイルのオクテットを解釈する限り、すべては通常問題ありません。もしそうなら、最近のTEX実装に組み込まれている自動翻訳メカニズムをアクティブにすることは理にかなっています。しかし、そのような環境で生成されたファイルが別のコンピューターに送信されると、処理が失敗する可能性が高いか、さらに悪いことに成功する可能性がありますが、実際には誤った文字を表示することで間違った結果を生成します。 「入力」パッケージは、この問題に対処するために作成されました。その主な目的は、ドキュメントまたはドキュメントの一部で使用されているエンコードをLaTexに通知することです。これは、オプションとしてエンコード名でパッケージをロードすることによって行われます。例えば:
1\usepackage[cp1252]{inputenc} % Windows 1252 (Western Europe) code page
その時点から、ラテックスは、そのコンピューターの他の目的に使用されるエンコードに関係なく、インストールの文書の残りのオクテットを解釈する方法を知っています。
典型的な例を以下に示します。これは、ロシアで人気のある「koi8-r」エンコードで書かれた短いテキストです。ソースコードは、ラテン語1エンコーディング(ドイツで)を使用してコンピューターでテキストがどのように見えるかを示しています。出力は、ラテックスがどの入力エンコードが使用されているかが知られているため、テキストを正しく解釈できることを示しています。
「入力」によって現在サポートされているエンコーディングのリストを以下に示します。インターフェイスは十分に文書化されており、新しいエンコーディングのサポートを簡単に追加できます。したがって、コンピューターで使用されているエンコードがここにリストされていない場合、「入力」パッケージドキュメントに相談する価値があります。また、他の著者によって作成された「入力」のエンコードファイルをインターネットで検索することもできます。たとえば、キリル語に関連するエンコーディングは、キリル語の他のフォントサポートパッケージとともに配布されます。
ISO-8859標準は、多くの重要なシングルバイトエンコーディングを定義しています。ラテン語のアルファベットに関連するエンコーディングは、「入力」によってサポートされています。 Windowsオペレーティングシステムの場合、Microsoftによって多くの単一バイトエンコーディングが定義されています。さらに、他のコンピューターベンダーによって定義された一部のエンコーディングが利用可能です。
latin1
これはISO-8859-1エンコーディングです(別名ラテン1)。アルバニア語、カタロニア語、デンマーク語、オランダ語、英語、ファローズ、フィンランド語、フランス語、ガリシア語、ドイツ語、アイスランド語、アイルランド語、イタリア語、ノルウェー語、ポルトガル語、スペイン語、スウェーデン語など、ほとんどの西ヨーロッパ言語を表すことができます。latin2
ISO LATIN 2エンコーディング(ISO-8859-2)は、ラテン語のアルファベットを使用する中央ヨーロッパのスラブ語をサポートしています。クロアチア語、チェコ語、ドイツ語、ハンガリー語、ポーランド語、ルーマニア語、スロバキア語、スロベニア語:次の言語に使用できます。latin3
このキャラクターセット(ISO-8859-3)は、エスペラント、ガリシア、マルタ、トルコ語に使用されます。latin4
ISOラテン4エンコーディング(ISO-8859-4)は、エストニア、ラトビア、リトアニアなどの言語を表すことができます。latin5
ISO LATIN 5エンコーディング(ISO 8859-9)は、ラテン語1と密接に関連しており、ラテン語1のまれに使用されないアイスランド文字をトルコの文字に置き換えます。latin9
ラテン9(またはISO-8859-15)は、ユーロ通貨標識を追加するラテン語1の別の小さなバリエーションと、フランス語やフィンランド語で欠落していた「\ ae` ligatureなどの他のいくつかのキャラクター」です。ラテン語1の代替としてますます人気が高まっています。cp437
IBM 437コードページ(MS-DOSラテン語が、ボックスを描くために多くのグラフィカル文字が含まれています)。cp850
IBM 850コードページ(ms-dos多言語、latin1に似ています)。cp852
IBM 852コードページ(MS-DOS多言語、LATIN2に似ています)。cp858
IBM 858コードページ(ユーロシンボルが追加されたIBM 850)。cp865
IBM 865コードページ(MS-DOSノルウェー)。cp1250
Windows 1250(中央および東ヨーロッパ)コードページ。cp1252
Windows 1252(西ヨーロッパ)コードページ。cp1257
Windows 1257(バルト)コードページ。ansinew
Windows 3.1 ANSIエンコーディング。 CP1252の同義語。decmulti
デカルマルチネーションキャラクターセットエンコーディング。Applemac
Macintosh(標準)エンコーディング。- 「Macce」Macintosh Central European Codeページ。
- 「次のコンピューターエンコード」。
utf8
UnicodeのUTF8エンコーディングサポート。
ほとんどのTeXインストールでは、デフォルトで8ビット文字が受け入れられます。しかしながら、inpuenc
のような追加の調整を行わないと、結果は予測不可能になる可能性があります。一部の文字が消えてしまったり、現在のフォントで参照されたオクテット位置に存在する文字がそのまま返されたりすることがありますが、それが目的のグリフであるとは限りません。この動作は長い間デフォルトでした。そのため、一部のユーザーがこの動作に依存しているため、LaTeX2eでも変更されていません。しかし、このような誤りを確実に検出するために、inputenc
には32~126の範囲外の文字を不正とするオプションascii
が用意されています。
1\inputencoding{encoding}
もともと、「入力」パッケージは、ドキュメント全体に使用されるエンコードを指定するように設計されていました。したがって、プリアンブルでのオプションの使用。ただし、コマンド \ inputEncoding
を使用して、ドキュメントの中央でエンコードを変更することができます。このコマンドは、エンコードの名前をその議論として受け取ります。
「入力」が開発されたとき、ほとんどのラテックスインストールは、このセクションで説明したようなシングルバイトエンコーディングを使用するコンピューターにありました。ただし、システムはUnicode:UTF8のサポートを提供するため、別のエンコードが人気があります。この可変長エンコードは、1〜4オクテットのユニコード文字を表します。エンコードサポートは、オプション「UTF8」を介して「入力」に追加されました。技術的には、完全なUTF8実装は提供されません。標準のラテックスフォントに何らかの表現があるユニコード文字のみがマッピングされます(つまり、主にラテン語とキリル文字セット):他のすべてが適切なエラーメッセージになります。さらに、Unicodeを組み合わせた文字はサポートされていませんが、その特定の省略は実際には問題ではありません。
1\usepackage[utf8]{inputenc}
2\usepackage{textcomp} % for Latin interpretation
3-----------------------------------------------
4German umlauts in UTF-8: ^^c3^^a4^^c3^^b6^^c3^^bc
5\par\inputencoding{latin1}% switch to Latin 1
6But interpreted as Latin 1: ^^c3^^a4^^c3^^b6^^c3^^bc
UTF8では、ASCII文字は自分自身を表し、ほとんどのラテン文字は2バイトで表されます。例のソースコードでは、UTF8のドイツのウムラウトの2バイト表現は、Texの16進表記に示されています。 UTF8を理解していないエディターでは、ラテン語1文字と解釈されるときに生成される出力に似ていると思われるでしょう。
その結果、より包括的なUTF8サポート(韓国語、中国語、日本のキャラクターのサポートを含む)を備えたパッケージは、そのセットアップがより複雑ですが、Dominique Unruhによって書かれた「UCS」パッケージです。 「入力」ソリューションがニーズをカバーしていない場合は、試してみることができます。
4.3。 「Fontenc」パッケージでフォントエンコーディングを選択します
ラテックスで使用するためにテキストフォントエンコードを有効にするには、前文またはドキュメントクラスにエンコードをロードする必要があります。より正確には、特定のエンコードを使用してフォント内のグリフにアクセスするための定義をロードする必要があります。これを行うための標準的な方法は、「Fontenc」パッケージを介して行われます。これは、パッケージオプションとしてフォントエンコーディングのコンマ分離リストを採用しています。これらのエンコーディングの最後は、デフォルトのドキュメントエンコードに自動的に行われます。キリルのエンコーディングがロードされている場合、「makeuppercase」と「\ makelowercase」の影響を受けるコマンドのリストが自動的に拡張されます。例えば、
1\usepackage[T2A,T1]{fontenc}
キリル文字「T2A」と「T1」エンコーディングに必要なすべての定義をロードし、後者をデフォルトのドキュメントエンコーディングに設定します。
通常のパッケージ動作とは異なり、このパッケージを\usepackage
コマンドに異なるオプションで複数回ロードできます。これは、ドキュメントクラスが特定のエンコーディングセットをロードし、ユーザーがプリアンブルでさらに多くのエンコーディングをロードできるようにするために必要です。ドキュメントのデフォルトフォントエンコードを潜在的に変更する以外に、エンコードを副作用なしに複数回ロードすることが実行されます。
言語サポートパッケージ(たとえば、 * babel *システムを搭載したもの)がドキュメントで使用されている場合、必要なフォントエンコーディングはサポートパッケージによってすでにロードされている場合があります。
4.4。 tracefnt
パッケージでフォントの選択をトレースする方法
フォント選択システムの問題を検出するには、「tracefnt」パッケージを使用できます。画面およびトランスクリプトファイルにNFSSによって表示される情報の量をカスタマイズできるいくつかのオプションをサポートしています。
errorshow
このオプションは、端末のすべての警告と情報メッセージを抑制します。それらはトランスクリプトファイルのみに書き込まれます。実際のエラーのみが表示されます。重要な出版物を印刷する前に、トランスクリプトファイルを慎重に調査する必要があります。これは、フォントの置換などに関する警告が最終結果が正しくないことを意味する可能性があるためです。- 「警告ショー」このオプションが指定されると、端末に警告とエラーが表示されます。この設定は、「tracefnt」パッケージがロードされていないように、LaTex2Eと同じように詳細な情報を提供します。
infoshow
このオプションは、「tracefnt」パッケージをロードするときにデフォルトです。通常、トランスクリプトファイルにのみ書き込まれる追加の情報は、端末にも表示されるようになりました。Debugshow
このオプションは、テキストフォントの変更と、ブレースグループの端または環境の終わりにあるそのようなフォントの修復に関する情報をさらに示しています。非常に大きなトランスクリプトファイルを生成できるため、このオプションをオンにするときは注意してください。- 「一時停止」このオプションは、すべての警告をエラーに変えて、重要な出版物の問題の検出に役立ちます。
- 「ロード」このオプションは、外部フォントの読み込みを示しています。ただし、使用する形式またはドキュメントクラスがすでにいくつかのフォントをロードしている場合、これらはこのオプションでは表示されません。
4.5。 nfssfont.tex
でフォントテーブルとサンプルを表示する方法
nfssfont.tex
というファイルを使用して、新しいフォントをテストし、すべての文字を示すフォントテーブルを作成し、フォントに関連する他の操作を実行できます。このファイルは、ラテックス分布で見つけることができます。このファイルをラテックスで実行すると、フォントの名前がテストされるように求められます。答えは、「cmr10」(コンピューターモダンローマ10pt)などの拡張機能のない外部フォント名です - 知っている場合、または空のフォント名。後者の場合、NFSSフォント仕様:エンコード名(デフォルト T1
)、フォントファミリ名(デフォルト cmr
)、フォントシリーズ(デフォルト m
)、フォントシェイプ(デフォルト n
)、フォントサイズ(デフォルト 10pt
)が求められます。その後、プログラムはその分類に対応する外部ファイルをロードします。
次に、コマンドを入力するように求められます。最も重要なのはおそらく「\ table」で、以下のようなフォントチャートが生成されます。コマンド「\ text」も興味深いものです。また、より長いテキストサンプルを作成するため、興味深いものです。新しいテストフォントに切り替えるには、 \ init
を入力します。テストを完了するには、「\ bye」または \ stop
を入力します。他のすべての利用可能なテストについて学ぶには、「\ help」と入力します。
1**********************************************
2* NFSS font test program version <v2.2b>
3*
4* Follow the instructions
5**********************************************
6
7Input external font name, e.g., cmr10
8(or <enter> for NFSS classification of font):
9
10\currfontname=cmr10
11Now type a test command (\help for help):)
12*\table
13
14*\newpage
15*\init
16Input external font name, e.g., cmr10
17(or <enter> for NFSS classification of font):
18
19\currfontname=
20*** NFSS classification ***
21
22Font encoding [T1]:
23
24\encoding=OT1
25(ot1enc.def)
26Font family [cmr]:
27
28\family=cmdh
29Font series [m]:
30
31\series=m
32Font shape [n]:
33
34\shape=n
35Font size [10pt]:
36
37\size=10
38(ot1cmdh.fd) Now type a test command (\help for help):
39*\text
40
41*\bye
注意すべき点が2つあります。まず、
nfssfont.tex
プログラムは暗黙的に\init
コマンドを発行するため、入力の最初の行にはフォント名を含めるか、NFSS 分類が続くことを示すために完全に空にする必要があります。次に、\init
への入力は、他に何も記述せず(コメントも含めず)、独立した行として記述する必要があります。これは、行末がFont encoding[T1]: \encoding=
のようなプロンプトへの応答の終了を示すためです。