pdftex 忽略的引號

pdftex 忽略的引號

我正在閱讀 Donald Knuth 的 TeXBook,練習 2.1。我有以下輸入:

Alice said, ‘‘I always use an en-dash instead of a hyphen when specifying page numbers like ‘480--491’ in a bibliog
raphy.’’
\bye

使用編譯pdftex sample.tex給出以下輸出。破折號有效,但是引號去哪了?

在此輸入影像描述

答案1

而不是大引號‘‘使用

``I always use an en-dash instead of a hyphen when specifying page numbers
like `480--491' in a.''
\bye

在此輸入影像描述

答案2

如果你看TeXbook的源碼,它是可在 CTAN 上取得, 你看

\exercise Explain how to type the following sentence to \TeX: Alice said,
``I always use an en-dash instead of a hyphen when specifying page numbers
like `480--491' in a ^{bibliography}.''
\answer |Alice said, ``I always use an en-dash instead of a hyphen when|\break
|specifying page numbers like `480--491' in a bibliography.''| \
(The wrong answer to this question ends with |'480-49l' in a bibliography."|)

如果你用pdftex程式碼編譯

Alice said, ``I always use an en-dash instead of a hyphen when specifying
page numbers like `480--491' in a bibliography.''
\bye

然後從 PDF 複製貼上,您將得到

Alice 說:“在參考書目中指定頁碼(例如“480–491”)時,我總是使用破折號而不是連字符。”

因為 PDF 閱讀器夠聰明。

但是,您不應該使用‘‘and ’’,因為 TeXbook 中的程式碼片段中的字元實際上代表

`` ''

請記住,TeX 僅使用七位 ASCII 字符,而在任何編碼中都不在該範圍內。

答案3

當 TeX 和教材在編寫時,電腦和軟體與現在有兩個不同之處:

  1. 每台電腦/作業系統的字元數比當今可用的全部 Unicode 字元數少(通常最多 256 個);特別是您輸入的大引號,即 ' (U+‎2018 左單引號) 和 ' (‎U+2019 右單引號) 不在其字元集中,

  2. 相反,一些系統,包括 Knuth 熟悉的系統,使用當前由 ` (U+0060 GRAVE ACCENT) 和 ' (U+0027 APOSTROPHE) 佔據的位置來表示過去看起來視覺對稱並具有相同目的的字符。這段歷史在頁面中有很好的解釋ASCII 和 Unicode 引號作者:Markus Kuhn(向下滾動到“問題”),也在上調報價包

相應地,結果是:

  1. 如果你在 TeX 中輸入非 ASCII 字符,它會誤解它們並且(在我看來是一個嚴重的設計缺陷)甚至不會大聲抱怨:你必須查看文件.log。為了避免意外發生這種情況,

    • 放在\tracinglostchars=2所有檔案的頂部(並使用 eTeX 派生引擎;pdftex您使用的引擎就可以),和/或

    • .log每當 TeX 說「(請參閱轉錄文件以獲取更多資訊)」時,請務必查看文件

  2. 當您看到看起來像大引號的內容時教材,您應該將其理解(並將其鍵入)為“和”,即使根據 Unicode 和現代字體這顯然是錯誤的 - 將其視為這些字體的怪癖。

額外的好處:如果您只想使用 Unicode 字符,而不是費心使用舊的技巧來實現使用 ASCII 字符連字的雙引號和破折號之類的東西,您可以使用像 XeTeX 或 LuaTeX 這樣的 Unicode 引擎。這是適用於此處範例的文件;使用xetex或進行編譯luatex

\tracinglostchars=2
% \input luaotfload.sty % Uncomment this line if using LuaTeX
\font\tenrm="[lmroman10-regular]" at 10pt
\rm
Alice said, “I always use an en-dash instead of a hyphen when specifying 
page numbers like ‘480–491’ in a bibliography.”
\bye

(當然,您實際上必須記住使用破折號而不是連字符,並且在編輯輸入文件時使用可以輕鬆區分的字體。)

相關內容