私はしばらくの間 LaTeX を使用しており、フォントのエンコーディングに関する多くの議論を読んできました。
T1 フォントを追加して使用することを提案する人もいれ\usepackage[T1]{fontenc}
ば、何も追加しないことを提案する人もいれば、T1
パッケージに加えて使用することを提案する人もいますae
。また、これは非推奨であり、代わりに別のフォントを使用する必要があると言う人もいます...
とても混乱しています。問題をうまく説明し、解決する最新のリソースはありますか?
私の経験では、何も追加しないとうまくいきませんが、太字の小文字大文字などの追加の文字セットが必要になることがあります。この場合、T1 エンコードを使用できますが、品質は低くなります。ae
またはlmodern
パッケージを使用すると、すべてが修正されるようです。実際何が起こっているのでしょうか。また、実際に何をすべきでしょうか。
追記: 以前に質問されていたら申し訳ありません。この件については多くの議論が交わされていますが、明確な回答が得られることを期待して投稿します。
PPS: 現在、私は ++ を使用していますlatex
。dvips
可能であれば使用ps2pdf
したいのですが、他の人と協力するため、必ずしもそれが可能であるとは限りません。pdflatex
答え1
基本的なルールは、\usepackage[T1]{fontenc}
ドキュメントで を使用するとより良い結果が得られるかどうか試してみることです。
説明: 英語のテキストを書くときは、おそらくこの行がなくても問題なく、ほとんどの状況で違いや困難は発生しません。
Knuth が TeX を発表したとき、彼はそれを「Computer Modern」というフォントとともに出荷しました。このフォントには、非常に限られた文字セットしかありません (今日の OpenType フォントと比較すると)。たとえば、「ö」や「ü」などの文字は存在しませんでした。これらの文字を使用する言語をタイプセットしない場合は、これは問題になりません。しかし、これらの文字をレンダリングする必要がある場合は、「o」または「u」の上に 2 つのドット「¨」を組み合わせると役立ちます。そのための TeX プリミティブがあります: \accent
。これにはハイフネーションを無効にする副作用があり、これは受け入れられません。
こうしてある日、TeX ユーザーは、ほとんどのヨーロッパ言語をレンダリングできるフォントをエンコードする方法について合意に達しました (T1 エンコード)。このエンコードは、ユーザーが 'ö' または 'ü' を要求したときに、DVI または PDF ファイルにどのコードを入れるかを指定します。これらの文字は 2 つのグリフで構成する必要がなくなったため、ハイフネーションが壊れなくなりました。
では、これらの奇妙な文字がないのに、なぜ T1 にこだわるのでしょうか。LaTeX 用のフォントを準備するときは、フォント メトリック ファイル ( tfm
) を作成する必要があります。T1 は今日最も使用されているエンコーディングであるため (ヨーロッパでは間違いなくそうです)、一部の人々は T1 以外のエンコーディングを気にしなくなり、そのためフォントが古いデフォルトのOT1
エンコーディングでは使用できない可能性があります。
ただし、Computer Modern にこだわる場合は、PostScript の変種 (レンダリング結果が良くなる) は OT1 エンコードでのみ利用できるため、古いエンコード (T1 は使用しない) を維持する必要があります。T1 エンコードの Computer Modern (これらの特殊文字を含む単語でハイフネーションが必要な場合に使用する必要があります) の場合は、パッケージを使用するae
か、フォントを cm-super (ないロードしてae
エンコーディングを T1 に変更しますが、これはやりたくありません)。Computer Modern の代替として「Latin Modern」を使用することを強くお勧めします。これにはいくつかの種類があります (PostScript Type 1、OpenType フォント)。 でアクティブ化します\usepackage{lmodern}
。
答え2
XeLaTeX
代替案
OP はLaTeX
質問のタイトルで明示的に を指定しています。 と呼ばれる関連コンパイラがあり、XeLaTeX
これは よりもスムーズに外国語の文字を処理することを目的としていますLaTeX
。ここでそれについて言及しておくと便利だと思いました。私はしばらくの間、フランス語の組版にそれを使用してきましたが、非常にうまくいきました。プリアンブルの次のコードは、 がXeLaTeX
呼び出されているかどうかを確認し、それに応じてプログラムをロードします。
以下のコードでは、プリアンブル内に挿入するために、パブリック ドメイン フォントを読み込みますLibertine
。これは単なる説明です。この場合、コマンド オプションを使用してフォントを設定するのは非常に面倒なので、フォントを簡単に設定できるように、setmainfont
という名前の特定のパッケージが作成されました。libertine
\usepackage[oldstyle]{libertine}% public domain font % alternative to \setmainfont line commented out below
\usepackage{ifxetex}% load different packages with/without XeLaTex
\ifxetex
\usepackage{fontspec}% provides \setmainfont
%\setmainfont[Numbers=OldStyle,Ligatures=Common,Mapping=tex-text]{Linux Libertine O}% public domain font % or use the libertine package instead
\else % packages below are not needed with utf8 based engines
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\fi%
しばらく前に調べたところ、良い組み合わせだとわかりました (専門家の方は間違っていたら訂正してください)。私はXeLaTeX
専門家でも何でもありませんが、フランス語の文章を書くのにとても役立つと気付き、最近になって取り入れただけです。