答案1
答案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 和教材在編寫時,電腦和軟體與現在有兩個不同之處:
每台電腦/作業系統的字元數比當今可用的全部 Unicode 字元數少(通常最多 256 個);特別是您輸入的大引號,即 ' (U+2018 左單引號) 和 ' (U+2019 右單引號) 不在其字元集中,
相反,一些系統,包括 Knuth 熟悉的系統,使用當前由 ` (U+0060 GRAVE ACCENT) 和 ' (U+0027 APOSTROPHE) 佔據的位置來表示過去看起來視覺對稱並具有相同目的的字符。這段歷史在頁面中有很好的解釋ASCII 和 Unicode 引號作者:Markus Kuhn(向下滾動到“問題”),也在上調報價包。
相應地,結果是:
如果你在 TeX 中輸入非 ASCII 字符,它會誤解它們並且(在我看來是一個嚴重的設計缺陷)甚至不會大聲抱怨:你必須查看文件
.log
。為了避免意外發生這種情況,放在
\tracinglostchars=2
所有檔案的頂部(並使用 eTeX 派生引擎;pdftex
您使用的引擎就可以),和/或.log
每當 TeX 說「(請參閱轉錄文件以獲取更多資訊)」時,請務必查看文件
當您看到看起來像大引號的內容時教材,您應該將其理解(並將其鍵入)為“和”,即使根據 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
(當然,您實際上必須記住使用破折號而不是連字符,並且在編輯輸入文件時使用可以輕鬆區分的字體。)