考虑以下最小文档:
\documentclass[11pt]{article}
\usepackage{times}
\begin{document}
Consider the algorithm \textsf{heapify} below.
Consider the algorithm $\mathsf{heapify}$ below.
\end{document}
这给了我以下输出。
第一个代码明显很丑:算法名称的 x 高度与时间文本相比太大。第二行代码对我来说看起来更好,但代价是使用数学模式来处理“道德”文本。这不仅弄乱了伪代码中的间距,而且在调用下一个算法时也无法工作make-heap
;我不考虑$\mathsf{make}\textsf{-}\mathsf{heap}$
解决方案。
有没有简单的方法来设置\textsf
字体以匹配\mathsf
?
注意:将默认的无衬线字体(cmss?)与 Times 一起使用以及在文本块中以无衬线字体设置算法名称都是我无权质疑的决定。
答案1
您可以通过以下方式实现您的目标:
不要加载该
times
包,因为它已被弃用。加载该mathptmx
包,或者,如果您愿意,加载newtxtext
和newtxmath
一对包。更新,2023 年 7 月:我会选择newtxtext
和newtxmath
。helvet
使用选项加载包Scaled
。在我看来,如果您希望衬线和无衬线字母的 x 高度大致相等,则默认缩放量不太适合Times Roman
衬线文本字体。因此,我会使用 选项,Scaled=0.86
而不仅仅是Scaled
。
\mathsf
顺便说一下,你的例子中使用的字体是不是Helvetica 但是Computer Modern Sans Serif
。
\documentclass[11pt]{article}
\usepackage{mathptmx}
\usepackage[scaled=0.86]{helvet}
\begin{document}
Consider the algorithm \textsf{heapify} below.
Consider the algorithm $\mathsf{heapify}$ below.
\end{document}
附录:我曾假设——可能是错误的——因为你加载了包times
,所以你通缉使用 Helvetica 作为文档的无衬线文本字体。如果此假设不正确,即如果您只想使用 Computer Modern Sans Serif (CMSS) 和 Times New Roman (TNR),不加载helvet
包——当然也不要加载包times
,因为会times
自动将 Helvetica 设置为无衬线文本字体。碰巧的是,TNR 和 CMSS 的 x 高度非常相似;因此无需缩放 CMSS 以使其与 TNR 一起“工作”。