我正在尝试将 XeLaTeX 与不带 fontspec 的 BibTeX8 一起使用,但我的参考书目和文件一样被错误地强调。
\begin{filecontents}{\jobname.bib}
@Book{Aristoteles2000mf,
Title = {Metaf{\'i}sica},
Author = {Arist{\'o}teles},
Publisher = {Gredos},
Year = {2000},
Address = {Madrid},
Note = {Trad. Tom{\'a}s Calvo Mart{\'i}nez},
}
\end{filecontents}
\documentclass{article}
\usepackage[EU1]{fontenc}
\bibliographystyle{plain}
\begin{document}
\nocite{*}
\bibliography{\jobname}
\end{document}
是否有一个解决办法可以修复输出而不用重新编码我所有的旧 bib 文件?
答案1
答案2
首先,您不应该将 BibTeX8 与 UTF-8 文件一起使用。
我认为没有必要用 和 来做杂技fontenc
。xunicode
让我们运行您的文件,假设该.bbl
文件尚未创建,因此不会发生任何错误。
我们收到一些来自 LaTeX 的警告:
LaTeX Font Warning: Font shape `EU1/cmr/m/n' undefined
(Font) using `EU1/lmr/m/n' instead on input line 23.
LaTeX Font Warning: Font shape `EU1/cmr/bx/n' undefined
(Font) using `EU1/cmr/m/n' instead on input line 27.
如果加载了,则会添加另一个.bbl
:
LaTeX Font Warning: Font shape `EU1/cmr/m/it' undefined
(Font) using `EU1/cmr/m/n' instead on input line 5.
(行号可能不一致)。这是什么意思?很简单:EU1
编码建立了字体替换
\DeclareErrorFont{EU1}{lmr}{m}{n}{10}
\DeclareFontSubstitution{EU1}{lmr}{m}{n}
因此 LaTeX 将使用lmr
系列。然而,这是仅有的替换规则,因此您将不会得到粗体、斜体、小型大写字母、无衬线字体等等。
\expandafter\show\the\font
如果你在文件中插入以下行,\begin{document}
编译将停止并显示以下消息
> \EU1/lmr/m/n/10=select font "[lmroman10-regular]:mapping=tex-text".
<inserted text> \EU1/lmr/m/n/10
l.25 \expandafter\show\the\font
现在,改成\usepackage[EU1]{fontenc}
。\usepackage{fontspec}
你将不会收到任何警告,并且编译将停止并显示
> \EU1/lmr/m/n/10=select font "[lmroman10-regular]:mapping=tex-text".
<inserted text> \EU1/lmr/m/n/10
l.25 \expandafter\show\the\font
并且没有其他字体警告。
寓意在于,加载fontspec
完全按照您的意愿进行,无需任何技巧。由于fontspec
自动加载,因此在运行时转换为xunicode
没有任何问题。\'i
í