LaTeX 中的字型編碼

LaTeX 中的字型編碼

我使用 LaTeX 一段時間了,並且閱讀了很多有關字體編碼的討論。

有些人建議使用 T1 字體添加,其他人建議什麼都不添加,其他人建議除了包之外\usepackage[T1]{fontenc}使用,而另一些人則說這是不推薦使用的,應該使用另一種字體來代替.... ..T1ae

我很困惑,是否有一些更新的資源可以很好地解釋問題並解決問題?

根據我的經驗,添加任何內容都可以正常工作,但有時我需要額外的字元集,例如粗體小型大寫字母,在這種情況下我可以使用 T1 編碼,但品質很差。如果我使用ae或軟體包,一切似乎都已修復lmodern。到底發生了什麼事以及我該做什麼?

PS:如果之前有人問過這個問題,我很抱歉,我發現了很多關於此問題的討論,但我發文是希望得到明確的答案。

PPS :目前我正在使用latex++ dvips。如果可以的話ps2pdf,我更願意使用pdflatex,但是,當我與其他人一起工作時,這並不總是可能的。

答案1

基本規則是:如果\usepackage[T1]{fontenc}在文件中使用可以得到更好的結果,請嘗試。

解釋:當你寫英文文字時,你可能可以不用這行程式碼,並且在大多數情況下你不會遇到任何差異/困難。

當 Knuth 推出 TeX 時,他附帶了一種名為「Computer Modern」的字體。該字體只有非常有限的字元集(與當今的 OpenType 字體相比)。例如,不存在“ö”和“ü”等字元。如果您不排版任何使用這些字元的語言,這不會造成任何損害。但是,一旦您必須渲染它們,您可以透過在「o」或「u」頂部組合兩個點「¡」來提供協助。為此有一個 TeX 原語:\accent。這具有禁用連字符的副作用,這是不可接受的。

因此有一天,TeX 使用者就如何編碼可以呈現大多數歐洲語言的字體達成了一項協議(T1 編碼)。此編碼告訴當使用者要求「ö」或「ü」時將哪個代碼放入 DVI 或 PDF 檔案中。現在這些字元不再需要由兩個字形組成,它們不會破壞連字符。

如果你沒有這些有趣的角色,為什麼還要費心去 T1 呢?當您為 LaTeX 準備字體時,您必須建立字體規格檔 ( tfm)。由於 T1 是當今最常用的編碼(當然在歐洲),有些人不再擔心非 T1 編碼,因此舊的預設編碼中的字體可能不可用OT1

但是:當您堅持使用 Computer Modern 時,您可能想要保留舊的編碼(而不是使用 T1),因為 PostScript 變體(這會帶來更好的渲染結果)僅適用於 OT1 編碼。對於 T1 編碼的 Computer Modern(當您需要在帶有這些特殊字元的單字中連字元時必須使用它),您可以使用該ae套件或將字體變更為 cm-super(透過不是加載ae並將編碼更改為 T1 - 但我不想這樣做)。我強烈建議使用名為「拉丁現代」的電腦現代替代品,它有多種風格(PostScript Type 1、OpenType 字體)。透過 激活它\usepackage{lmodern}

答案2

另一種XeLaTeX選擇

OPLaTeX在問題標題中明確指出。有一個名為的相關編譯器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大師或什麼的,我只是發現它對我的法語文本幫助很大,並且最近才採用它。

相關內容