笔记:这个问题原来是基于一个错误的前提,如果你认为你可能有类似的问题,那么可能出现的“啊哈!”是pdftex
TeXLive 2018 处理 UTF-8/Unicode 字符的方式与 TeXLive 2017 不同(而且更好!)。我保留它,而不是删除它,以防其他人进入与我类似的死胡同。
我的系统配置inputenc
似乎缺少一些后备设置,因此 Unicode 字符会产生错误:
\documentclass{article}
\begin{document}
The remarkable double pulsar PSR J0737−3039A/B provides similar
higher-precision tests.
\end{document}
名称中间的字符是破折号,U+2212。在一个系统上,这可以正常工作:
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./try.tex
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/size10.clo)) (./try.aux)
[1{/usr/local/texlive/2017/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./try.aux) )
(see the transcript file for additional information)</usr/local/texlive/2017/te
xmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on try.pdf (1 page, 16951 bytes).
Transcript written on try.log.
另一方面,情况并非如此:
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./try.tex
LaTeX2e <2018-12-01>
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/size10.clo)) (./try.aux)
! Package inputenc Error: Unicode character − (U+2212)
(inputenc) not set up for use with LaTeX.
See the inputenc package documentation for explanation.
Type H <return> for immediate help.
...
l.4 The remarkable double pulsar PSR J0737−
3039A/B provides similar
?
第一台机器有(如您所见)TeXLive 2017,并且已经在正常使用中使用/调整/扩展了一段时间(也就是说,它可能处于显着但不是彻底的非默认状态);第二台是刚刚下载的 TeXLive 2018(两者都是 macOS,但如果这相关我会感到惊讶)。
我很难明白为什么这在第一台机器上运行良好而在第二台机器上却不运行,以及如何单独修复它。
各种相关的 tex.stackexchange.com 问题和答案(1,2,3,4,5) 通常与特定字符有关,建议的修复方法是明确声明字符,或使用一种或其他替代方法。我担心 TeXLive 2017 或我(无意或故意)显然已配置 inputenc,以便 pdftex+inputenc 可以与此 MWE 配合使用,而 vanilla TeXLive 2018 则不能。
ARedHat 支持问题提到更新 pdftex 查阅的各种地图文件。这显然关闭回答,因为我确实注意到第一个工作系统读取pdftex.map
,而第二个没有。我的updmap.cfg
看起来大体合理,并kpsewhich pdftex.map
产生/usr/local/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map
合理的内容。我已经运行了updmap-sys
;我没有运行那个 RedHat 线程中建议的命令,部分是因为我不知道它们的作用,部分是因为它们似乎特定于特定的字体映射,部分是因为我想让这成为一个有用的站点问题。
我根据当前实际原因排除以下可能性:
- 我不想摆弄声明
inputenc
:上面的 MWE 摘录的源文件使用的是发布者的样式文件,我不想摆弄它。不管怎么说,我在样式文件中找不到任何 Unicode 的巧妙之处, - 通常,任何 Unicode 问题的答案都是“使用 XeTeX 或 LuaTeX”;由于我使用的是出版商的工作流程,所以这对我来说不太现实
- 我当然可以将 Unicode 连字符改为
--
,事实上我可能会这么做,以解决这个问题。
因此我的问题是:我该做什么(或者做什么)我过去做过什么) 以使这个 MWE 与 pdflatex 一起工作而不改变?
我知道这个问题有点幼稚,我也没有做过巨大的我自己花了很多时间去修复它,但 (a) 在某种程度上我很珍惜我对 pdftex+inputenc 的无知(只需使用 XeTeX!),并且 (b) 我很惊讶我在 TeX.SE 上找不到与此相匹配的问题,而这个问题可能很有用。如果我是唯一遇到这个问题的人,我会感到惊讶,但谷歌搜索几乎没有帮助,部分原因是大多数人问并回答了一个更具体的“为什么字符 X 不起作用?”问题。
答案1
在早期的乳胶中您没有收到错误,因为字符会被删除,但终端中没有错误,只有missing character
日志中的一行。
在当前版本中,我们假设使用 UTF-8,如果输入使用 U+2013 短划线,则不会出现错误,但它使用的是 U+2212,这是一个减号。默认情况下,我们不为 inputenc 预先声明数学字符(如果声明了,大多数数学字符在文本模式下使用时都会产生错误)。
因此你可以将输入更改为
The remarkable double pulsar PSR J0737–3039A/B provides similar
或者如果你真的想在这里(误)使用减号,可以添加
\DeclareUnicodeCharacter{2212}{\textendash}