我见过更改整个文档的 \ttfamily 字体,这是对此的后续。
我想使用类似“palatino”的字体(tgpagella
) - 但我也想使用{lmodern}
'slmtt
作为电传打字机字体。考虑这个 MWE:
\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern} % have lmtt loaded; but...
\usepackage{tgpagella} % use "palatino" as main font, ...
\renewcommand{\ttdefault}{lmtt} % and use lmtt for teletype family
\begin{document}
testing %
\makeatletter % must be wrapping outside the \texttt; not just the \typeout inside the \texttt !
\texttt{testing %
\typeout{ttdefault is \ttdefault, \f@size ; \meaning\f@size} %
}
\makeatother %
t\texttt{t}e\texttt{e}s\texttt{s}t\texttt{t}i\texttt{i}n\texttt{n}g\texttt{g}
\end{document}
输出为:
... 应该可以看到lmtt
电传打字机比罗马字体略小tgpagella
。相应地,我想增加电传打字机字体的大小;根据我的理解,它\typeout
是\f@size
:
ttdefault is lmtt, 10; macro:->10
...与 中设置的相同\documentclass
。
我的问题是:
- 我是否
\typeout
正确读取(或者更确切地说,读取)了电传打字机字体的当前字体大小(即,只要\f@size
里面的字体就\texttt
足够了)? - 我怎样才能改变整个文档中电传打字字体的大小?
答案1
您可以放大 Latin Modern Mono 或缩小 TeX Gyre Pagella。后者更容易,因为tgpagella
它接受一个scale
选项。
\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[scale=0.95877]{tgpagella} % use "palatino" as main font, ...
\renewcommand{\ttdefault}{lmtt} % and use lmtt for teletype family
\begin{document}
testing %
t\texttt{t}e\texttt{e}s\texttt{s}t\texttt{t}i\texttt{i}n\texttt{n}g\texttt{g}
\sbox0{e}\the\ht0
\sbox0{\ttfamily e}\the\ht0
\end{document}
如您所见,文本字体和单色字体的高度e
相同。形状并不相同(Palatino 的突出部分相当宽),但您明白了。
我如何确定缩放因子?反复试验。
答案2
由于TeX Gyre Pagella
和Latin Modern
字体系列均以 Opentype 格式提供(顺便说一下,它们是由同一家数字铸造厂生产的),因此您可能需要考虑切换到 XeLaTeX 或 LuaLaTeX 并使用该fontspec
软件包加载字体。该fontspec
软件包提供了自动缩放字体的选项Scale=MatchLowercase
。
\documentclass[10pt]{book}
\usepackage{fontspec,unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmonofont[Scale=MatchLowercase]{Latin Modern Mono} % equate the x-heights of the fonts
\setmathfont{TeX Gyre Pagella Math}
\begin{document}
testing
\texttt{testing}
t\texttt{t}e\texttt{e}s\texttt{s}t\texttt{t}i\texttt{i}n\texttt{n}g\texttt{g}
\end{document}
答案3
如果 @mico 建议您切换到 XeLaTeX,那么我也可以建议您切换到纯 TeX 和 OPmac。示例:
\input opmac
\input cs-pagella
normal: t{\tt t}e{\tt e}s{\tt s}t{\tt t}i{\tt i}n{\tt n}g{\tt g}
\def\tt{\tentt\thefontscale[1050]} % correction of \tt font
corrected: t{\tt t}e{\tt e}s{\tt s}t{\tt t}i{\tt i}n{\tt n}g{\tt g}
\typosize[12/14] % the correction is valid for all sizes
corrected: t{\tt t}e{\tt e}s{\tt s}t{\tt t}i{\tt i}n{\tt n}g{\tt g}
\bye!