包装libertine
文档说
建议将字体编码设置为 T1 或 LY1,但也支持默认的 OT1 编码。
\documentclass{article}
% \usepackage[T1]{fontenc}
\usepackage[lining, tabular]{libertine}
\usepackage[libertine, cmintegrals]{newtxmath}
\begin{document}
\Huge The \{ stuffing \} 123 $f(x) = \int \sqrt{x}\,dx$
\end{document}
(使用pdflatex
。)
和\usepackage[T1]{fontenc}
:
没有 T1:
LaTeX 字体警告:字体形状“OMS/LinuxLibertineT-TLF/m/n”未定义
LaTeX 字体警告:某些字体形状不可用,请用默认字体形状替代。
这 ”钍“连字符是可取的,但如果没有 T1,{
和}
字符就是错误的。我该怎么办?
(如果使用 XeLaTeX 是唯一的解决方案,那么我需要的最简单的一组包和设置命令是什么?)
答案1
编码OT1
中没有大括号的位置,因为通常分配的位置是不同的符号(分别是短划线和右双引号)。相反,大括号采用T1
编码字体。
跳到结尾查看简短摘要;否则,请继续阅读。
技术细节
当编码为 OT1 时,\{
选择\}
不同的字体。让我们看看;我假设已xpatch
加载\xshowcmd
:
\show\{
> \{=macro:
->\x@protect \{\protect \{ .
\xshowcmd\{
> \{ =\long macro:
->\ifmmode \lbrace \else \textbraceleft \fi .
由于我们处于文本模式,\textbraceleft
因此展开:
\show\textbraceleft
> \textbraceleft=macro:
->\OMS-cmd \textbraceleft \OMS\textbraceleft .
这个比较难:必须知道要展示什么:这里是
\expandafter\show\csname OMS\string\textbraceleft\endcsname
> \OMS\textbraceleft=\char"66.
然而,LaTeX 首先会尝试查看是否\?\textbraceleft
已定义,结果是:
\expandafter\show\csname ?\string\textbraceleft\endcsname
> \?\textbraceleft=\long macro:
->\UseTextSymbol {OMS}\textbraceleft .
好的。我们开始吧!LaTeX 以组的形式执行
{\fontencoding{OMS}\selectfont\textbraceleft}
这将打印0x66
所选字体的字符。但字体替换在角落:确实,当前系列是,LinuxLibertineT-TLF
并且有一条消息
LaTeX Font Warning: Font shape `OMS/LinuxLibertineT-TLF/m/n' undefined
(Font) using `OMS/ntxsy/m/n' instead
(Font) for symbol `textbraceleft' on input line 7.
因为没有与第一行对应的外部字体,所以 LaTeX 使用默认字体进行编码OMS
,这恰好是ntxsy
(NewTXMath,因为你的包)。使用默认的 Computer Modern 字体时,你不会收到警告,因为 LaTeX知道一种字体,与(查看文件以了解如何完成)OMS/cmr/m/n
完全相同。OMS/cmsy/m/n
omscmr.fd
当基本编码为 时T1
,你会得到与 不同的答案\show\textbraceleft
,即
> \textbraceleft=macro:
->\T1-cmd \textbraceleft \T1\textbraceleft .
现在我们可以做
\expandafter\show\csname T1\string\textbraceleft\endcsname
要得到
> \T1\textbraceleft=\char"7B.
0x7B
因此 LaTeX 使用当前字体打印插槽中的字符。
以上是什么意思?
区别在于 NewTXMath 中的括号与 Linux Libertine 中的括号略有不同。前者使用 OT1 编码,后者使用T1
。
答案2
你应该使用XeLaTeX
或LuaLaTeX
和
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{texgyrepagellamath-regular.otf}
\usepackage[lining,tabular]{libertine}
\begin{document}
\Huge The \{ stuffing \} 123 $f(x) = \int \sqrt{x}\,dx$
\end{document}