答案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 阅读器足够智能。
但是,你不应该使用‘‘
和’’
,因为 TeXbook 中的代码片段中的字符实际上代表
`` ''
请记住,TeX 仅使用七位 ASCII 字符,而‘
和’
在任何编码中都不在该范围内。
答案3
当 TeX 和TeXbook编写时,计算机和软件与现在有两点不同:
每台计算机/操作系统的字符数(通常最多 256 个)都比目前可用的 Unicode 全系列字符数要少;特别是你输入的花括号,即 '(U+2018 左单引号)和 '(U+2019 右单引号)不在他们的字符集中,
相反,包括 Knuth 所熟悉的系统在内的一些系统,使用 ` (U+0060 GRAVE ACCENT) 和 ' (U+0027 APOSTROPHE) 当前占据的位置来表示过去在视觉上对称且具有相同用途的字符。此历史在页面中有很好的解释ASCII 和 Unicode 引号作者:Markus Kuhn(向下滚动到“问题”),以及upquote 包。
相应的结果是:
如果你在 TeX 中输入非 ASCII 字符,TeX 会误解这些字符,而且(在我看来这是一个严重的设计缺陷)甚至不会大声抱怨:你必须查看文件
.log
。为了避免意外发生这种情况,放在
\tracinglostchars=2
所有文件的顶部(并使用 eTeX 衍生引擎;你pdftex
使用的就可以),和/或.log
每当 TeX 说“(查看转录文件获取更多信息)”时,总是查看文件
当你看到TeXbook,您应该将其理解为(并将其输入为)“ and ”,尽管根据 Unicode 和现代字体这显然是错误的——将其视为这些字体的怪癖。
额外提示:如果您只想使用 Unicode 字符,而不想使用旧的 hack 来实现双引号和使用 ASCII 字符连字符的破折号等功能,则可以使用 Unicode 引擎,例如 XeTeX 或 LuaTeX。这里有一个适用于此处示例的文件;使用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
(当然,您必须记住使用短划线而不是连字符,并且在编辑输入文件时使用可以轻松分辨出差异的字体。)